您现在的位置是:热点 >>正文
上传漏洞绕过 php
热点393人已围观
简介去年帮一个朋友的站做应急响应,进去一看,shell已经躺在/uploads/2024/里了。文件名是shell.php.jpg,内容就是标准的一句话。服务器是Nginx+PHP-FPM,按说这种双扩展 ...
去年帮一个朋友的上传站做应急响应,进去一看,漏洞shell已经躺在/uploads/2024/里了。绕过文件名是上传shell.php.jpg,内容就是漏洞标准的一句话。服务器是绕过Nginx+PHP-FPM,按说这种双扩展名早该被拦了,上传但他们运维图省事,漏洞直接把.jpg加进了security.limit_extensions的绕过白名单——结果PHP-FPM把shell.php.jpg当成PHP给执行了。这漏洞跟PHP本身关系不大,上传是漏洞配置层面自己把门打开的。
上传绕过这事,绕过核心就一句话:前端校验全是上传纸糊的,后端如果只靠MIME和扩展名,漏洞基本上等于没校验。绕过我见过太多开发把accept="image/*"当安全措施,浏览器F12改个值就破了。真正能扛住的,是后端对文件内容做魔数检测,再配合随机重命名和存储目录禁止执行。
说几个实战里真能用的绕过路子。
MIME绕过是最低级的。抓包把Content-Type: application/x-php改成image/jpeg,后端如果只读这个头就放行。我测过某CMS,上传接口就判断了$_FILES['file']['type'],改完直接传上去,路径还回显在响应里。
扩展名黑名单的绕过花样最多。如果只禁了.php,可以试.php3、.php5、.phtml,老版本Apache的mod_mime可能还认。Windows环境下shell.php.或者shell.php (末尾空格)也常能过,因为系统会去掉尾部的点和空格。还有shell.php::$DATA这种NTFS数据流写法,传到服务器上实际文件名还是shell.php。
双写绕过针对的是那种只替换一次php的过滤器。比如代码里str_replace('php','',$filename),传shell.pphphp,替换掉中间的php后变成shell.php。这招对大小写不敏感的替换也有效,shell.PHP有时候能直接过。
%00截断在PHP 5.3.4之后基本废了,但有些老系统还在跑。上传路径可控的时候,shell.php%00.jpg会让后面的.jpg被截掉。现在更常见的是利用move_uploaded_file的第二个参数,如果路径拼接时用了用户可控的目录名,可以构造../跳出去。
.htaccess这招得看服务器。如果上传目录允许.htaccess,传一个内容为AddType application/x-httpd-php .jpg的文件,再传个shell.jpg,Apache就会把jpg当PHP解析。Nginx不吃这套,但Nginx有个坑:如果fastcgi_split_path_info配置不当,/upload/shell.jpg/x.php这种路径可能让PHP-FPM把shell.jpg当脚本执行。
图片马配合文件包含是另一种思路。把一句话写在图片的EXIF里,上传后通过本地文件包含漏洞去include这个图片。单独传图片马没用,得有个LFI点配合。我见过有人把<?php @eval($_POST['cmd']);?>塞进IDAT块后面,图片能正常显示,但直接访问不解析。
防御其实不复杂。后端用finfo_file()读真实MIME,白名单只放图片类型;文件名用md5(uniqid())加固定后缀重命名;存储目录给php_flag engine off或者干脆放独立域名下。别信任何客户端传过来的东西,$_FILES['file']['name']和['type']都是用户可控的。
最后提一嘴,很多人测上传只盯着PHP文件,其实传个.user.ini也能玩出花。里面写auto_prepend_file=shell.jpg,配合图片马,效果一样。PHP的坑从来不在语言本身,在配置和写代码的人怎么用它。
Tags:
上一篇:流程图片素材
下一篇:主体混凝土漏洞处理方法
相关文章
seo网站推广公司排名
热点搜索引擎结果页第一屏的黄金位置只有十个坑位,而中国活跃网站超过400万个。每天都有无数企业主在百度、谷歌、360搜索里输入“seo网站推广公司排名”,试图找到那家能把自己网站送上首页的服务商。这个搜索 ...
【热点】
阅读更多安卓密码破解工具
热点安卓手机忘了解锁密码,这事我遇到过不止一次。去年有个朋友出差,手机里存着客户合同,凌晨三点在酒店走廊里急得团团转——他试了五次指纹,结果手机锁死了,屏幕上跳出一行字:“30分钟后重试”。他蹲在墙角,用 ...
【热点】
阅读更多微信网站
热点微信压根没有网站。你搜“微信官网”,跳出来的是个引导你下载客户端的页面,上面除了二维码和几句口号,什么都没有。这事情挺有意思——一个拥有十几亿用户的超级应用,居然在传统互联网的“门面”上如此敷衍。 但 ...
【热点】
阅读更多