0

第一个cve

 2 years ago
source link: https://blue-bird1.github.io/posts/first-cve/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Mar 23, 2020

第一个cve

第一个CVE

在今天获得了第一个有CVE编号的漏洞 CVE-2020-10804 .

CVE只是一个漏洞数据库,只需要自己申请即可. 但国内会自己给小漏洞申请CVE很少,往往视为一种水货CVE.这也是第一个不需要我自己申请CVE的漏洞.

有趣的是PHPMyadmin这个月修复的漏洞,包括这个漏洞里,三个漏洞撞了两个(指被两个或以上的人提交)

和我同时发现问题的是hoangn144_VCS 大佬,他是在登录插件处发现的用户名注入.

这个漏洞很水,我从审计开始到发现这个问题用时没超过两个小时.只是在sql查询时直接拼接字符串.

phpmyadmin在编辑密码和权限对用户名转义不当 ,补丁很简单 就是加上转义了而已

image.png

密码处补丁 复现也很简单 只需要在mysql5.6下编辑一个有单引号的用户名即可

首先我阅读了近几天被发现的漏洞 这个可以在这里找到.

发现大部分问题都只是简单的sql拼接 而且漏洞模式非常相似. 我在IDE下精心构造了几个正则表达式

由于时间比较久了 没记下 但是大概如下

$GLOBALS['dbi']->tryQuery(\$_[GET|POST][^)]*) 寻找在查询函数中被直接引入的请求变量

实际上上面效果不佳 因为大部分sql语句都不在查询函数构造 而且这个没有过滤已经被转义过的变量

'.*?'+.\$_POST 这个能找到简单的字符串拼接 但在复杂的函数调用中还是无能为力

最后我使用了两种方法结合 第一种跟踪$_GET|$_POST 第二种根据开发的变量命名习惯 将第二条修改为

$.*?query = \'.*?\'+.\$

成功在短时间内发现了问题

在知名项目中 phpmyadmin应该属于最好挖 但漏洞影响很小的.在发现第一个时,我同时还有几个怀疑的注入,但毫无疑问那些也是接近于无的危害.

phpmyadmin只能使用你给的账号来查询,select注入是没什么意义的,无法提权.只有能导致高权限用户在进行某些操作时像update alter之类语句中注入或者xss才有意义,但利用难度也非常高

漏洞时间线

2020.1.20 提交给phpmyadmin安全组
2020.1.21 得到第一次回应
2020.3.21 修复并发布新版本
2020.3.22 CVE-2020-10804已分配

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK