审计思路
正向
查找可控变量,正向追踪变量传递过程。
逆向
根据敏感关键字回溯参数传递过程。逆向:根据敏感关键字回溯参数传递过程。
- 优点:只需要搜索相应敏感关键字,既可以快速的挖掘想要的漏洞,具有可定向挖掘和高效、高质量的优点。
- 缺点:由于没有通读代码,对程序的整体框架了解不够深入,在挖掘漏洞时定位利用点会花费一点时间,另外对逻辑漏洞挖掘覆盖不到。
寻找敏感功能点
通读功能点代码(查看这些功能的特定文件是怎样存在的,独立的模块还是以插件形式,还是写在一个类里,然后多处调用)
- 文件上传功能
- 文件管理功能
- 登录认证功能
以WooYun-2015-90324漏洞为例,espcms版本为6.6。首先注册名为hahaxtu的用户,通过动态调试可以得知其用户ID为1。再次注册一个名为1test,查看其COOKIE,有如下两条数据:
通过阅读源码可以发现上述两个参数的加密方式相同,为此把ecisp_member_username的内容赋值给ecsip_member_info后后台可以正常解密。修改COOKIE进行动态调试过程如下:
修改之后请求中cookie值访问http://127.0.0.1/vuln/cms/espcms6.6/index.php?ac=membermain&at=center,如下:
在index.php的第72调用了interface/membermain.php中的 in_center() 函数,跟随进入其中
在 in_center() 函数的第24行调用了class_connection.php类的member_purview() 方法,跟随进入
此方法获取cookie值进行解密并赋值给变量,过程如下
经过上述处理,变量值如下
继续调试回到membermain.php的第33行,可以看到获取到了userid=1的用户的信息,如下: