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