文件上传和提权漏洞测试(测试环境为IIS6.0,存在文件解析漏洞)
获得网站后台后,寻找上传点upfile均对木马格式进行了过滤,于是利用IIS6.0本身漏洞,建立xx.ASP文件,来允许上传和调用木马。
方法一:登录后台有数据库备份功能,利用数据库备份创建类似x.asp 的目录n
利用文件上传模块上传包含一句话的图片木马(一句话图片木马见百度)
修改上传路径(修改后缀和修改conten-type尝试都无效)
利用菜刀Getshell
方法二:利用IIS6.0解析漏洞,利用put方法上传一个txt文档,然后再把txt 利用copy或move方法更改名字。
利用IIS PUT Scanner 检测put方法可用。
利用IISwrite工具进行put写入:
利用copy或move方法进行文件名修改:
文件上传之后开始提权,Getshell之后,查找可写入目录,确定上传点:
这里采用 cmd.exe +Churrasco.exe(pr.exe同样操作) + 3389.bat 的工具组合,其中 cmd.exe 是为了代替原服务器中权限受限的命令行交互环境(执行命令),Churrasco.exe(巴西烤肉)是用于提权的漏洞利用工具,3389.bat 是打开 3389 端口及远程桌面服务的批处理脚本文件(本次远程连接端口开启,所以不需要此程序)。
在可写入目录h***g下新建TQ目录,开始上传:
运用CMD命令执行:
添加完管理员后可通过 net user 与net localgroup administrators 查看命令是否执行成功。
根据*博哥哥的坏坏的修改提示,远程连接端口不是3389,查找 安全服务进程
到此可以远程连接服务器了。打开我们上传的mimikatz抓取计算机管理员明文密码:
风险分析
攻击者可能上传木马或者其他恶意脚本代码,获得文件的路径之后可以拿到shell的权限,从而对系统做进一步的渗透提权。
加固建议
防范文件上传漏洞的核心思想是:确保上传的文件不会被服务器解析成可执行的脚本, 进而引发偏离功能设计的意外后果。
方法一:限制文件上传的类型
1、黑名单常常会出现遗漏或者大小写绕过等问题, 所以通常采用白名单限制安全的文件类型, 如
(1)图片: .jpg, .png,.gif, .bmp
(2)文档: .doc, .pdf, .txt
(3)压缩包: .rar, .zip
2、类型限制不能只做在前端,js的限制可以很轻易绕过, 而后端的限制可以考虑以下几个方面:
(1)扩展名检测, 需要注意%00截断或者文件名包含空格等特殊字符的绕过方式;
(2)必要的情况下,重命名用户上传的文件,杜绝上传时的文件名攻击;
(3)MIME类型检测, 恶意的代码通常会利用合法的扩展名进行伪装;
(4)对于图片上传, 可以考虑对其进行二次渲染/压缩, 将脚本嵌入到一张完全合法的图片中不是难事, 但二次渲染可彻底破坏恶意代码。
方法二:确保上传的文件被访问时能按照功能设计正确返回
1、将文件上传目录设置为静态资源目录, 防止被解析为脚本执行;
2、使用上述方式时, 确保Content-Type与实际文件类型一致;
3、如果文件不允许在页面展示, 仅允许下载, 请设置Content-disposition:attachment。
方法三:其他注意
1、确保上传的文件放在安全的路径下, 必要时可将上传的文件存放于web server之外的远程服务器;
2、确保webserver版本为最新, 防止由于web server漏洞造成的文件意外解析;
3、部分文件上传攻击会配合本地文件包含(LFI)漏洞进行, 所以需要确保web服务不存在LFI漏洞。