52:代码审计-PHP项目类RCE及文件包含下载删除
漏洞关键字
SQL注入:select insert update mysql_query mysqli等 文件上传:$_FILES,type="file",上传,move_uploaded_file()等 XSS跨站:print print_r echo sprintf die var_dump var_export等 文件包含:Include include_once require require_once等 代码执行:eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function等 命令执行:system exec shell_exec `` passthru pcntl_exec popen proc_open 变量覆盖:extract() parse_str() importrequestvariables() $$等 反序列化:serialize() unserialize() _construct _destruct等 其他漏洞:unlink() file_get_contents() show_source() file fopen()等 通用关键字:$_GET $_POST $_REQUEST $_FILES $_SEVER等
功能点或者关键字分析可能存在漏洞
抓包或者搜索关键字找到代码出处对应文件
追踪过滤或者接受的数据函数,寻找出发此函数或者代码的地方进行触发测试
案例1:xhcms-无框架-跨站\文件包含-搜索或应用-include
通过应用及URL地址等分析可能存在xss及文件包含漏洞
抓包找到xss无过滤代码块及文件包含有后缀需绕过代码块
1.1 XSS:
1.2 文件包含:
通过搜索关键字include找到对应代码块,发现有后缀.php需绕过
尝试包含如下文件
成功
尝试本地跨目录包含,失败,原因是有后缀需绕过
绕过方法:
- 00截断:
- 条件:magic_quotes_gpc = OFF php版本<5.3.4
- 举例:filename=../../../www.txt%00
- 长度截断:
- 条件:windows系统,点号需要长于256;linux系统,点号需要长于4096
尝试进行长度截断,成功绕过。
附:任意文件包含漏洞(3)——实战xhcms
https://cloud.tencent.com/developer/article/1685717
https://blog.csdn.net/weixin_45663905/article/details/108148898
案例2:earmusic-无框架-文件下载-搜索或应用功能-download等
通过应用分析或搜索判断可能存在文件下载操作
抓包分析下载地址找到对应代码块,文件下载地址由$file控制
$file从数据库查询语句得知,追踪那里可更新或更改此类数据
尝试修改发现过滤,追踪过滤机制分析绕过,采用全路径地址绕过
附:代码审计-(Ear Music).任意文件下载漏洞
https://www.cnblogs.com/-qing-/p/10888335.html
案例3:zzzcms-无框架-文件删除RCE-搜索或应用-unlink,eval
3.1 任意文件删除漏洞:
文件删除搜索关键字unlink,对应函数del_file,查看调用此的地方
后台delfile函数调用,如何触发delfile函数,受参数控制,进行测试
payload如下
删除install.lock就会导致系统重新安装,危害非常大。
附:ZZZCMS V1.7.1后台任意文件删除漏洞
https://zhhhy.github.io/2019/06/28/zzzcms/
https://blog.csdn.net/weixin_44978149/article/details/118282795
3.2 代码执行漏洞:
代码执行搜索关键字eval,对应配置模板解析文件,查看调用此的地方
判断后台可修改模板文件,前台触发模板文件,构造payload进行测试
payload如下
附:再谈 zzzcms 代码执行,你也能审计出来的高危漏洞
https://cloud.tencent.com/developer/article/1576196