天眼如何判断文件上传漏洞是否成功
- 数据包分析
- 观察客户端请求数据:是否包含webshell流量特征
- 观察服务器返回信息:是否有“上传成功”或“success upload”等信息提示
- 尝试寻找上传的文件:访问上传的文件看是否存在;查看文件上传的目录,去目录下查找文件是否存在;
- 通过分析平台日志查看:如果存在文件上传企图告警,且根据数据包到分析平台查看是否有脚本文件的访问记录,如果有成功访问脚本文件记录,则文件上传成功。天眼->分析中心->日志检索,检索语法:uri:(‘webshell文件名’)。如果上传脚本文件被重命名,就筛选出攻击IP对服务器的web协议的访问流量进行分析
- 漏扫测试:用工具测试cms是否存在已知的文件上传漏洞
文件上传的特征、绕过方式
可能需要说的是文件上传的检测手段(根据哪些特征检测)以及对应的绕过方法
- 扩展名检测
- 客户端检测。但客户端检测可以用burp抓包后修改文件后缀绕过或者修改禁用js代码绕过;
- 服务端检测
- 黑名单
- 看看有无漏网之鱼。比如 iis6.0 中的 asa 和 cer,能被web容器解析的文件其他扩展名列表:
jsp, jspx ,jspf
asp asa cer cdx,htr,xml,html
aspx,ashx,asmx,asax,ascx - 大小写绕过。可能存在大小写绕过漏洞 - 比如 aSp(iis6.0 中可以)和 pHp(只能在 小于 php5.3.39 中的 linux 中)之中
- 特殊后缀名绕过。php改成php1,php2,php3,php4,php5,需要在http.conf中有AddType application/x-httpd-php .php1且php 的版本小于等于 5.3.29 以下
- 双写绕过。比如过滤并且将php替换为空,则可以将上传木马后缀改为pphphp
- 上传htaccess。前提是mod_rewrite模块开启并且AllowOverride All
- 看看有无漏网之鱼。比如 iis6.0 中的 asa 和 cer,能被web容器解析的文件其他扩展名列表:
- 白名单
- IIS中的目录解析漏洞和分号解析漏洞 :将一句话木马的文件名 backlion.php,改成 backlion.php.abc(奇怪的不被解析的后缀名都 行)。首先, 服务器验证文件扩展名的时候,验证的是.abc,只要该扩展名符合服务器端黑白名单规则,即可上传。
- nginx %00截断 xxx.jpg%00.php 这样的文件名会被解析为php代码运行。
- apache 的解析漏洞,上传如 a.php.rar a.php.gif 类型的文件名,可以避免 对于php文件的过滤机制,但是由于 apache 在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar 等扩展名是 apache 不能识别的, 因此就会直接将类型识别为 php,从而达到了注入php代码的目的。
- 黑名单
- MIME检测
http 请求 Header 头部中的 Content-Type 存在以下特征:
Content-Type: multipart/form-data; boundary=xxxx
绕过的方法就是通过修改Content-Type的值,比如修改为image/jpeg;image/png;image/gif等等允许上传类型对应的MIME值
有些主机 WAF 软件为了不影响web服务器的性能,会对校验的用户数据设置 大小上限,比如 1M。此种情况可以构造一个大文件,前面 1M 的内容为垃圾内 容,后面才是真正的木马内容,便可以绕过 WAF 对文件内容的校验;’ Content-Type 类型数据后添加垃圾数据 - 文件内容检测
- 可能会检测文件内容中是否包含指定文件类型的特征,比如GIF89a,直接加上就行
- 有的 WAF 在解析的时候,认为 Content-Disposition 值一定是 form-data,造成绕过,删除 Content-Disposition 值的 form-data 绕过
- 早期版本安全狗,可以多加一个 filename 在一个 Content-Disposition 中,存在多个 filename ,协议解析应该使用最 后的filename 值作为文件名
文件包含的危害
文件包含漏洞的产生原因是通过php的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露(file://)甚至恶意的代码注入(php://input)
(1)读取web配置文件以及敏感的数据
(2)web服务器的文件被用户浏览导致信息泄露
(3)与文件上传漏洞结合getshell,将恶意代码执行解析
(4)脚本被任意执行,导致网站被篡改
通过天眼的告警详情中的url和响应体可以判断文件包含漏洞,比如url中是否存在目录遍历…/以及响应体中是否泄露了敏感的文件,查看天眼->分析中心->日志检索,uri:(‘…/’)