文件上传绕过和提权——(感谢公司搭建靶机和给予帮助的各位同仁)

文件上传和提权漏洞测试(测试环境为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漏洞。


猜你喜欢

转载自blog.csdn.net/qq_32434307/article/details/79896586