Skip to content

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注入、文件泄露、本地/远程文件包含、远程命令执行以及更多种类型的漏洞。

撰写