CSRF-phpMyAdmin.jpg

近期,印度安全工程师Ashutosh Barot发现phpMyAdmin存在严重CSRF漏洞(跨站请求伪造),可以通过技巧欺骗管理员去点击构造链接,触发对基于phpMyAdmin的MySQL数据库的远程操作,实现对数据库的破坏攻击行为。

漏洞影响

该漏洞对phpMyAdmin 4.7.x系列中4.7.7之前的所有版本造成影响,目前,phpMyAdmin官方已发布漏洞修补声明,声明中提到“该漏洞利用方式为,通过欺骗当前登录用户点击某个恶意构造链接,之后可能导致对MySQL数据库的记录数据等信息的删除(dropping/truncating tables)”。

漏洞分析

CSRF是OWASP Top 10的严重漏洞之一, phpMyAdmin发起删除数据表等操作的POST请求后,会执行一个Get请求,为防止CSRF攻击Get会受到安全防护。该案例中,可以通过如浏览器书签等URL链接来发起POST请求,攻击者可以藉此构造特殊恶意链接按钮,欺骗管理员点击之后,达到操作数据库目的。虽然有这种可能,但对于远程攻击者来说,很难收集到可以构造恶意URL的相关信息。

基于此,我发现可以利用Burp的请求更改功能,把phpMyAdmin的POST请求转换为GET请求,之后,即使身份token过期或被清除,一样可以把它从URL中直接执行。利用这种方法,我可以添加一个wordpress的管理员用户。为了实现目的,攻击者则需要知道cPanel的会话id和数据库名称,其它如wp_users的表名则非常容易进行猜解。

1514912497470201.png

执行数据库操作的构造URL可以被保存在浏览器历史记录中,如果用户点击insert和DROP等按钮来执行查询操作,该URL就需要包含数据库名和表名等信息。由于这种构造URL链接可在浏览器历史、安全事件管理日志(SIEM logs)、防火墙日志、ISP日志等地存储,因此,该漏洞还可导致某种程度上的敏感信息泄露。

1514912516355170.png

在用户通过了phpMyAdmin的管理面板认证登录后,即使关闭了phpMyAdmin,这种CSRF攻击照样可行。但如果想要成功利用该漏洞,实现远程数据库操作,需要与用户有一个点击链接的交互,因此,目前该漏洞的影响程度暂定为中级(Medium)。

POC视频

视频中,远程攻击者通过欺骗管理员点击构造的恶意链接后,就能让管理员毫不知情地删除了整个数据库。

漏洞修复

phpMyAdmin通过数据库管理功能能与WordPress、Joomla等建站系统结合,很多服务托管商也会使用phpMyAdmin后台来管理交互客户数据,基于此,phpMyAdmin已经发布了修复措施,希望相关受影响用户及时修补漏洞,或下载更新版本

*参考来源:cyberworldmirror,freebuf小编clouds编译