【PHP代码审计】命令注入、安装问题的审计、SQL注入问题的审计
审计过程中注意先看大体,不要急于研究
命令注入
相关代码文件
admin 后台管理员的相关操作
install 安装初始化
sys 配置信息
user 前台用户的相关操作
index 入口文件,一般包含配置信息,我们可以知道配置文件的目录
在审计的时候 要把error_reporting(0); 改成 error_reporting(E_ALL); 即显示所有错误信息
ping IP 或者域名的时候应考虑加上正则或判断
审计思路展示
通过搜索shell_exec找到了他在ping的文件夹里,一步步找到传递方式,发现没有任何加密直接传递,然后进行拼接最后执行。
安装问题的审计
install 安装问题的审计
判断是否有lock文件,如果存在就跳转到 index
这里有一个问题是跳转后没有exit结束,可能导致重装
审计思路
定向功能,直接从安装问题找漏洞
先判断 lock 后面没有 exit ,看代码重装部分有什么漏洞
SQL注入问题的审计
尝试绕过
select 写成 sel||ect 成功绕过
’ 经过过滤变成 \ 成功绕过
看哪里有注入点,可以遍历文件或者直接全局搜索 form (.*) = $
变量id直接进入字符串没有 ’ 限制,存在数字型注入
测试字段,用order by 或者弄7.8个字段慢慢删减
使用删减的方法构造payload
id = -1 uni||on sel||ect 1,2,3,4,5,6,7,8 fr||om admin
测试出来字段有4个
继续往下查找
id = -1 uni||on sel||ect 1,password,3,4,5,6,7,8 fr||om admin
提示没有passwsalwafd字段,可以看出来or被过滤了
id = -1 uni||on sel||ect *,4 fr||om admin
星号表示多个字段
上目录结构里面找管理员字段名称
修复方法,在给id加上单引号 ‘$id’"
sqlwaf 也有漏洞,不能替换为 空 ,都要替换成字符串,防止绕过
审计思路
找注入点的时候发现在messageDetail里面看到 id 是直接进行搜索