###3 代码快速审计

根据敏感函数来逆向追踪参数的传递过程,是目前使用得最多的 种方式,因为 大多数漏洞是由于函数的使用不当造成的,另外非函数使用不当的漏洞,如SQL注 入,也有一些特征,比如Select. Insert等,再结合From和Where等关键字,我们就 可以判断这是否是一条SQL语句,通过对字符串的识别分析,就能判断这个SQL语 句里面的参数有没有使用单引号过滤,或者根据我们的经验来判断 像HTTP头里面 的HTTP_CLIENT_1P和HTTP_X_FORWORDFOR等获取到的IP地址经常没有安全过滤就直接拼接到SQL语句中,并且由于它们是在$_SERVER变量:中不受GPC的影响, 那我们就可以去查找HTTP_CLIENT_IP和HTTP_X_FORWORDFOR关键字来快速寻 找漏洞这种方式的优点是只需搜索相应敏感关键字,即可以快速地挖掘想要的漏洞,具有 可定向挖掘和高效、高质量的优点。
其缺点为由于没有通读代码,对程序的整体框架了解不够深入,在挖掘漏洞时定位 利用点会花费一点时间,另外对逻辑漏洞挖掘覆盖不到。
注入挖掘案例
这次找个espcms应用程序为事例演示整个注入漏洞的查找过程,首先我们得先把项目导入到Seay审计系统中,然后点击自动审计功能,系统会自动帮我们扫描可能存在的漏洞。
1.png

图3-1-1
这里我们选取第26条SQL注入漏洞数据,双击进入定位到该SQL语句中
2.png

图3-1-2
可以看到非常直观地看到$parentid变量是怎样获得的
3.png

图3-1-3
然后我们定位accept函数的实现方法,选中accept函数并右击定位函数即可。我们可以看到我们传入的变量parentid和R参数代表的是POST、GET中获取的值,最后一个经过了daddslashes这个函数进行处理
4.png

图3-1-4
5.png

图3-1-5
从这条SQL语句中我们可以看到对单引号等字符进行过滤,并不需要闭合,可以直接注入。
$sql = "select * from $db_table where parentid=$parentid";
接着,我们定位到citylist.php这个文件中,看到oncitylist这个函数在important这个类中,点击全局搜索功能,双击进入index.php这个文件
6.png

图3-1-6
可以看到这里存在一个include文件操作,但是经过了daddslashes函数的操作,我们无法进行截断使其包含任意文件,只能包含本地的PHP文件,若拥有本地的MYSQL的root权限,导出到tmp目录中就能实现文件包含注入攻击
7.png

图3-1-7
这里我们构造一个EXP的URL进行完成注入
http://127.0.0.1/espcms/adminsoft/index.php?archive=citylist&action=citylist&parentid=-1 union select 1,2,user(),4,5

作者:skad  创建时间:2022-05-19 09:36
 更新时间:2023-04-12 16:17