第一个cve
第一个CVE
在今天获得了第一个有CVE编号的漏洞 CVE-2020-10804 .
CVE只是一个漏洞数据库,只需要自己申请即可. 但国内会自己给小漏洞申请CVE很少,往往视为一种水货CVE.这也是第一个不需要我自己申请CVE的漏洞.
有趣的是PHPMyadmin这个月修复的漏洞,包括这个漏洞里,三个漏洞撞了两个(指被两个或以上的人提交)
和我同时发现问题的是hoangn144_VCS 大佬,他是在登录插件处发现的用户名注入.
漏洞详情
这个漏洞很水,我从审计开始到发现这个问题用时没超过两个小时.只是在sql查询时直接拼接字符串.
phpmyadmin在编辑密码和权限对用户名转义不当 ,补丁很简单 就是加上转义了而已
密码处补丁 复现也很简单 只需要在mysql5.6下编辑一个有单引号的用户名即可
漏洞发现
首先我阅读了近几天被发现的漏洞 这个可以在这里找到.
发现大部分问题都只是简单的sql拼接 而且漏洞模式非常相似. 我在IDE下精心构造了几个正则表达式
由于时间比较久了 没记下 但是大概如下
第一个
$GLOBALS['dbi']->tryQuery(\$_[GET|POST][^)]*)
寻找在查询函数中被直接引入的请求变量
实际上上面效果不佳 因为大部分sql语句都不在查询函数构造 而且这个没有过滤已经被转义过的变量
第二个
'.*?'+.\$_POST
这个能找到简单的字符串拼接 但在复杂的函数调用中还是无能为力
最后我使用了两种方法结合 第一种跟踪$_GET|$_POST
第二种根据开发的变量命名习惯 将第二条修改为
$.*?query = \'.*?\'+.\$
成功在短时间内发现了问题
评价
在知名项目中 phpmyadmin应该属于最好挖 但漏洞影响很小的.在发现第一个时,我同时还有几个怀疑的注入,但毫无疑问那些也是接近于无的危害.
phpmyadmin只能使用你给的账号来查询,select注入是没什么意义的,无法提权.只有能导致高权限用户在进行某些操作时像update
alter
之类语句中注入或者xss才有意义,但利用难度也非常高
漏洞时间线
|
|