Upload-Labs靶场通关攻略
文件上传漏洞
(一) 漏洞概念
文件上传漏洞是一种常见的Web安全漏洞,主要指攻击者通过Web应用程序的文件上传功能,上传恶意文件(如木马、病毒、WebShell等),从而获得对服务器的控制权。这种漏洞通常由于开发者在实现文件上传功能时,未能充分考虑安全性,导致恶意文件被上传并执行。
(二) 漏洞原理
1、发现一个文件上传点
2、先判断上传功能是否正常
3、判断黑名单/白名单:shell.php.xxxasdf
黑名单绕过:
·前端绕过
·content-type绕过
·生僻扩展名绕过
·.htaccess(apchache中间件)
·.user.ini绕过(条件:PHP)
·大小写绕过
·末尾加点绕过(windows系统)
·末尾加空格绕过
·代码审计绕过
·双写绕过
·::$DATA绕过
白名单绕过:
·代码审计:00截断
·条件竞争绕过
(三) 漏洞危害
1、代码执行:上传的文件如果是Web脚本语言(如PHP、ASP、JSP等),服务器的Web容器可能会执行这些脚本,导致代码执行。
2、系统控制:攻击者可以通过上传WebShell,完全控制系统或致使系统瘫痪。
3、钓鱼攻击:上传的文件可能是钓鱼图片或包含脚本的图片,在某些浏览器中会被作为脚本执行,用于钓鱼和欺诈。
4、病毒传播:上传的文件可能是病毒或木马,用于诱骗用户或管理员下载执行。
(四) 修复思路
系统运行时:
·设置不可执行:将文件上传的目录设置为不可执行,防止脚本执行。
·白名单过滤:使用白名单控制上传文件类型,只允许指定扩展名的文件上传。
·随机数重命名:使用随机数改写文件名和文件路径,增加攻击成本。
·单独设置域名:单独设置文件服务器的域名,利用浏览器同源策略防止客户端攻击。
·安全设备防御:使用专业安全设备检测和防御恶意文件上传行为。
系统开发时:
·增强安全意识:开发人员应有较强的安全意识,充分考虑系统的安全性。
·严格检查:在客户端和服务器端对用户上传的文件名和文件路径进行严格检查。
系统维护时:
·安全扫描:使用多个安全检测工具对系统进行安全扫描,及时发现并修复潜在漏洞。
·日志监控:定时查看系统日志,发现入侵痕迹。
·更新维护:关注并及时更新系统和第三方插件的版本,修补已知漏洞。
(五) 漏洞利用过程
第一关
更改扩展名后提交数据包
成功劫持
第二关
上传木马,将content-type更改为要求的image/jpeg
成功劫持
第三关
在后缀中加两个::$DATA
成功劫持
第四关
切换为Apache
上传.htaccess文件后上传木马,改名为Tony
失败
可通过代码审计绕过
成功劫持
第五关
切换回nginx
上传两个文件:.user.ini和1.gif木马
访问upload目录下的readme.php即可执行代码
第六关
大小写绕过
第七关
末尾加空格绕过
第八关
末尾加点绕过
第九关
末尾加::$DATA绕过
第十关
同第四关
第十一关
内外双写绕过
成功劫持
第十四关
1.制作图片马
copy 1.jpg /b + 2.php /a jpgshell.jpg
2.上传图片马,拿到图片马地址
http://upload.local/upload/1420240715180951.jpg
3.访问文件包含链接,为file变量提供被包含的图片马的相对路径
马相对路径:./upload/1420240715180951.jpg
完整路径:
http://upload.local/include.php?file=./upload/1420240715180951.jpg
成功劫持
第十八关
条件竞争绕过
1. 上传writeshell.php,把数据包发送到webfuzzer,准备发送10万遍
2. 访问/upload/readme.php,抓包发送到webfuzzer界面
修改访问的文件名为writeshell.php,准备发送1万遍
配置重复发包10000和并发线程10
配置丢包规则
3. 点击“发送请求”按钮发送两个标签的请求
标签1:上传writeshell.php
标签2:访问writeshell.php
成功劫持