企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] ## js代码 直接删除掉js代码即可 ## 检查后缀的 **黑名单** 上传特殊可解释后缀 ``` .phml ``` 上传.htaccess重写文件 ``` SetHandler application/x-httpd-php 将目录下所有文件以php执行     需要打开一个rewrite配置 LoadModule rewrite\_module modules/mod\_rewrite.so 重定向 隐藏入口文件 重写 ``` 后缀名大小写绕过 ``` shell.pHP ``` ### 点绕过 ![](https://img.kancloud.cn/6c/b2/6cb23317aa4562b2d3baa63f09ebb43f_808x28.png) ### 空格绕过 ![](https://img.kancloud.cn/15/a3/15a3b43cb0f57e0d00e2375cba1e4969_822x23.png) ### ::$DATA绕过 抓包当中,文件后缀名加 ``` ::$DATA或者::$D::$DATAATA ``` 从而绕过 ### 配合解析漏洞 ~~~ 换行 shell.php.xxx 最后的后缀名无法识别,然后会从前面开始识别 ~~~ ### 双后缀名绕过 ![](https://img.kancloud.cn/2e/7e/2e7ede788ed9c0fe87129f4cbb3ae6f3_778x24.png) 由于目标把攻击者想要上传的文件类型进行了一次转换为空格,并没有递归过滤抓包,在包当中双写后缀名 ## 白名单 ### MIME检测类型绕过 ![](https://img.kancloud.cn/73/2a/732a8f2a2e7f0923963e63b75642cb0d_658x49.png) ### %00截断(get类型) ![](https://img.kancloud.cn/e6/71/e671291398967ab87c9cf6e5340137ed_816x36.png) 把所有上传的请求体中改成符合要求的jpg文件,在get请求中加入shell.php文件,从后面进行截断 ### 0x00截断 ![](https://img.kancloud.cn/ee/e8/eee88c8b836e0ab79bceb45cfa4f9513_820x36.png) 把所有上传的请求体中改成符合要求的jpg文件,在POST请求中加入shell文件,用16进制进行截断 ## 检查内容 ### 头部文件检查 ![](https://img.kancloud.cn/c6/01/c601329aff25ed38c3ec600aacce8802_784x87.png) ### getimagesize()绕过 ![](https://img.kancloud.cn/74/73/747334ee8a377f94c6d1f42957a4aed0_709x91.png) 当目标代码当中运用了getimagesize()这个用于获取图像大小及相关信息的函数 ### exif\_imagetype() 绕过 ![](https://img.kancloud.cn/62/7d/627d24bd47f8d7d9049f08d1bb063ffd_765x89.png) 当目标代码当中运用了exif\_imagetype()这个判断文件类型的的函数 ### 二次渲染绕过 目标会把攻击这上传的文件,生成一个新的文件 ## 代码逻辑 **条件竞争** 当目标系统把攻击者上传的文件,进行重命名的时候,在他要进行重命名(分为两步,复制和删除)的时候,我就上传一个写入的shell的脚本,通过在他没有删除之前,去触发我们上传的shell写入脚本,一般运用脚本竞争,手工需要很快的手速才能触发