Frieza

MS08067安全实验室

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理


文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力

产生条件

  1. 上传的文件能够被Web容器解释并执行(所以上传后文件所在目录是Web容器所覆盖到的路径)
  2. 用户能够从Web上访问这个文件
  3. 上传文件时,服务端代码没有对客户端上传的文件进行严格的验证和过滤

危害:

非法用户利用上传的恶意脚本文件控制整个网站甚至控制服务器,这个恶意文件被称为WebShell,WebShell脚本具有非常强大的功能,比如,查看服务器目录,服务器文件,系统命令等

利用:

  1. 首先,找到文件上传点
  2. 通过BurpSuite抓包,判断是否存在文件上传漏洞
  3. 尝试上传文件,来判断文件验证方式,并尝试绕过
    上传一句话木马,并找到文件上传的路径
    通过菜刀或冰蝎连接一句话木马

修复:

  • 在服务器端进行验证,设置黑白名单,限制可以上传文件的类型
  • 对上传的文件进行重命名
  • 隐藏文件上传的路径
  • 文件上传目录设置为不可执行

绕过:

  1. 前端检测
    • 在文件未上传时就进行验证和没有验证没有任何区别,可以通过抓包的形式,截取数据包进行绕过
    • 使用 0x00 或 [\0] 截断某些函数对文件名的判断(如,1.php[\0].jpg最终会变成1.php)
  2. 后端检测
    • 在文件上传后,服务器端进行检测,会检查文件拓展名是否合法,是否包含恶意代码等,但是进行后端验证也不是绝对安全,当服务器存在解析漏洞时,也可以绕过进行上传,常见的解析漏洞有IIS解析漏洞,Apache解析漏洞,PHP CGI 解析漏洞等

IIS解析漏洞

  • 版本:IIS6.0

IIS6.0在解析文件时存在两个解析漏洞
建立.asp,.asa格式的文件夹时,其目录下的任意文件都将被当作asp文件来解析。

如,
1. 在demo.asp文件夹下建立test.txt文件
test.txt在demo.asp文件夹下,所以test.txt会被当做ASP脚本执行

2. 当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
如,建立test.asp;1.jpg,文件中内容会当作ASP脚本执行

WebDav扩展漏洞

WebDav是一种基于HTTP1.1协议的通信协议,扩展了HTTP协议,在GET,POST,HEAD等几个HTTP标准方法中添加了新方法

如:
1. 使用OPTIONS探测服务器所支持的HTTP方法
请求:
OPTIONS / HTTP/1.1
Host:www.secbug.org

2. 使用PUT方法向服务器上传脚本文件
请求:
PUT /a.txt HTTP/1.1
Host:www.secbug.org
<%eval request(“chopper”)>

3. 使用MOVE方法改名
请求:
MOVE /a.txt HTTP/1.1
Host www.secbug.org
Destination:https://www.secbug.org/cmd.sap

4. 使用DELETE方法删除服务器上任意文件
请求:
DELETE /a.txt HTTP/1.1
Host: www.secbug.org

Apache解析漏洞

版本:Apache1.*和Apache2.*

  • Apache解析文件原则:

当碰到不认识的扩展名时,将会从后向前解析,直到碰上认识的为止,如果都不认识,就会暴露源码

如
Test.php.rar.xs.aa
Apache首先解析aa,然后向前解析,直到遇到可以解析的后缀
在Apache安装目录下,有 “/confi/mime.types” 保存文件扩展名详细列表

PHP CGI 解析漏洞

  • 访问<www.xxx.com/1.jpg/2.php>,此时1.jpg会被当作php脚本解析(2.php是不存在的文件)
    (在IIS7.0,IIS7.5等WEB容器也存在)

产生原因:在PHP配置文件有一个选项:cgi.fi:x_pathinfo,在某些版本中是默认开启的,这就导致PHP在解析URL时,遇到不存在的文件时,继续向前解析

posted on 2021-03-30 09:32  Frieza_021  阅读(93)  评论(0编辑  收藏  举报