php常见套路:php和html混写 MVC模式(模型视图控制器结构)
调式php工具:xdebug(下断点)
phpmyadmin设置general log 然后再控制台监听日志文件(看看执行了哪些sql语句)
网络相关调试 用wireshark抓包
注意:还可以利用软件破解和杀毒软件的思路,用系统工具检测代码运行过程中生成和修改了哪些文件
代码审计本质:
经验的对抗和压制,懂得越多越全面越有利
危险代码:危险函数(参数外部可控没有过滤) 和 语言自身过于灵活的个性
主要关注以下外部传入参数 看看是否可控
PHP危险函数的七大特征:
1.参数是否可控 例如eval,assert,create_function函数
2.外部引入文件 看看引入的文件是否可控 如include,require函数 是否能被用户发起请求去修改这个参数
3.参数字符串形式传递 是否可控 主要是callback回调函数 如preg_replace,array_map,array_filter,array_walk,call_user_func
4.读取网络资源的函数,看参数是否可控 如curl,fopen,copy,file,file_get_content 注意是否有白名单限制 否则存在ssrf漏洞
5.配置了allow_url_include=1
6.容易引起命令注入 如exec,system,passthru,popen,proc_open,反单引号包括的内容会当成系统命令
7.操作文件的函数
8.修改上下文变量环境 如extract,prase_str,ini_set
编程语言自身的特性:
动态类型(导致比较条件的绕过)
可变变量 例如$$str
可变函数 例如$str() 后面有括号的这种形式,会自动寻找和变量名相同的函数,要关注$str的value是否可以修改
php代码审计工具推荐:seay,rips