PHP代码审计&自动化探究
字数
544 字
阅读时间
3 分钟
更新日期
8/15/2017
总结一下php的代码审计,发散一下代码审计的思路
审计漏洞
1.重装漏洞
- 重装通过配置写shell
- 如果要mysql连接的话找个外连的mysql
2.文件包含
- 伪协议
3.sql注入
- 宽字节注入
set names gbk
转换字节集 - 解码导致绕过
urldecode
base64_decode
replace
替换’ 导致 \’ 变成了 \- SERVER 注入
X_FORWARDED_FOR
FILES
注入一般是因为上传 会把上传的名字带到insert当中入库offset $a=$_GET[a][$key];
我们提交一个字符串 那么后面的[0] 那么就是截取的第一个字符。在全局中 单引号被转义为\’ 截取第一个字符就为了\- 数字型未加单引号
- 二次注入
- striplashes 去掉转意符号导致注入
- 截取字符串导致注入
4.找回密码漏洞
- rand 函数可枚举 rand默认
1~32768
常规思路
通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。
看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件 以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行扩展阅读。
自动代码审计
黑盒 + 白盒
黑盒
自动化扫描器:爬虫 + get/post fuzz测试(sql xss)
白盒
找出user input 用户输入,对用户输入处理函数进行解析,逐级向上查找函数原型,调查函数过滤方法/有无过滤
检测XSS、SQL注入、文件泄露、本地/远程文件包含、远程命令执行以及更多种类型的漏洞。