文章总结: 本文记录UploadLabs第三关通关实战,针对后端黑名单机制利用.pht等非标准后缀绕过上传限制。核心发现是上传成功不等于代码执行,Apache默认配置未解析特定后缀导致连接失败。通过修改Apache配置添加解析规则成功getshell。总结指出黑名单易遗漏扩展名,且攻防重点在于验证服务器解析规则而非仅关注上传结果。 综合评分: 83 文章分类: 渗透测试,WEB安全,实战经验
二、黑名单绕过
既然服务器只禁止:
.php.asp.aspx.jsp
那么理论上可以尝试:
.pht.php5.php3.phps
测试结果:
✅ 上传成功。
三、发现关键问题:为什么无法连接蚁剑?
我们先来用蚁剑测试是否能够连接成功
发现虽然能够上传Php3文件,但是蚁剑并不能连接,说明上传的shell脚本并没有被解析执行。
真正决定执行的是:
🔥 Web Server 的解析规则。
默认 Apache 配置:
只解析:.php
所以:
.pht被当成普通文件- PHP 代码没有执行
- 蚁剑无法建立连接
四、验证是否执行 PHP
上传:
<?phpphpinfo(); ?>
访问:
http://192.168.1.9:8080/upload/202602142056376951.pht

结果:
显示源码。
说明:
👉 没有被 PHP 解析。
五、Docker 环境解决方案
因为我采用了docker搭建靶场环境,所以本文仅探索了docker环境解决方案。window环境可在B站上找到解决方案。
修改 Apache 解析规则
在/etc/apache2/apache2.conf文件里新增解析规则:
AddType application/x-httpd-php .phtAddType application/x-httpd-php .php5AddType application/x-httpd-php .php3AddType application/x-httpd-php .phps
我们可以直接在docker desktop的file里找到这个文件新增,并重启:
我们再次访问刚刚的网址就会发现:
此时再次尝试用蚁剑连接:
能够成功建立连接,实现对服务器的控制。
六、总结核心知识
很多人误以为第三关目标是:
👉 直接 getshell。
实际上核心是:
1️⃣ 黑名单防御的缺陷
只要遗漏一个扩展:
攻击者即可绕过。
2️⃣ 上传成功 ≠ 代码执行
执行权限来自:
- Apache
- Nginx
- IIS
的解析规则。
3️⃣ 攻击思维升级
真正流程应该是:
上传 → 访问 → 验证解析 → 建立连接
而不是只关注上传是否成功。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:武文学网安 武文学网安 武文学网安《Upload Labs 第三关通关实战(黑名单绕过 + Apache 解析机制)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论