seay 代码审计中总结:
常见的代码审计思路有以下四种:
1) 根据敏感关键字回溯参数传递过程
2) 查找可控变量,正向追踪变量传递过程
3) 寻找敏感功能点,通读功能点代码
4) 直接通读全文代码
一:根据敏感关键字回溯参数传递过程
根据敏感函数来逆向追踪参数的传递过程,是目前使用得最多的一种方式,因为大多数漏洞是由于函数的使用不当造成的。另外非函数使用不当的漏洞,如 SQL 注入,也有一些特征,比如 Select、 Insert 等,再结合 From 和 Where 等关键字,我们就可以判断这是否是一条 SQL 语句,通过对字符串的识别分析,就能判断这个 SQL 语句里面的参数有没有使用单引号过滤,或者根据我们的经验来判断。
像 HTTP 头里面的 HTTP_ CLIENT_ IP 和 HTTP_ X_ FORWORDFOR 等获取到的 IP 地址经常没有安全过滤就直接拼接到 SQL 语句中,并且由于它们是在$_ SERVER 变量中不受 GPC 的影响,那我们就可以去查找 HTTP_ CLIENT_ IP 和 HTTP_ X_ FORWORDFOR 关键字来快速寻找漏洞。