漏洞点发掘
首先通过CVE官方搜索列表,搜索相关CVE细节,如下图所示:
找到官方security修复通告,根据官方通告,找到对应Patches,如下图所示:
根据Patches与CVE描述,找到对应漏洞点,如下图所示:
分析漏洞调用
分析源码框架
PhpMyadmin拥有libraries、sql、vendor和templates等文件夹,libraries文件夹下大多为controller模块,采用空间命名的方式,调用方法与类
已知漏洞点在controller模块中,那么需要找到对应的调用controller的位置,可以找到三个文件调用了漏洞模块,如下图所示:
观察图中文件,发现共同调用了其中的一个方法indexAction,对应分析indexAction方法,indexAction方法中对searchType进行了判断,对应三个文件为replace、zoom和Normal。分析补丁中的修改方法,首先分析zoomSubmitAction方法
可以看到在tmpData赋值后无查询语句,分析getDataRowAction方法
可以看到方法中运行了sql语句,并且对where_clause未做任何防护措施,结合patches,断定漏洞点触发位置。
直接访问tbl_zoom_select.php?db=test&table=test,携带恶意数据即可复现漏洞。在漏洞复现时要注意选定db和table,在tbl_zoom_select.php在tbl_common.inc.php中会检测db与table是否存在,不存在则exit。