博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
应用安全 - Web安全 - 上传漏洞 - 攻防
阅读量:5050 次
发布时间:2019-06-12

本文共 3276 字,大约阅读时间需要 10 分钟。

客户端绕过

抓包改包(先上传一个gif类型的木马,然后通过burp将其改为asp/php/jsp后缀名即可)

服务端校验

content-type字段校验文件头检验(常见文件头:(1) .JPEG;.JPE;.JPG,”JPGGraphic File”(2) .gif,”GIF 89A”(3) .zip,”Zip Compressed”(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”)

服务端绕过 - 文件类型绕过

抓包修改content-type,如将content-type字段改为image/gif(原为 Content-Type: text/plain

服务端绕过 - 文件头绕过

在木马内容基础上再加了一些文件信息,有点像下面的结构GIF89a

服务端绕过 - 文件后缀名绕过

前提:黑名单校验黑名单检测:一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件绕过方法(1)找黑名单扩展名漏网之鱼 - 比如 asa 和 cer 之类(2)可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类能被解析的文件扩展名列表jsp jspx jspfasp asa cer aspxphp php php3 php4exe exee

服务端绕过 - 配合文件包含绕过

(1)先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有检验内容;(2)然后再上传一个.php的文件,内容为
此时,这个php文件就会去引用txt文件的内容,从而绕过校验,下面列举包含的语法:#PHP
#ASP
#JSP
or <%@include file="上传的txt文件路径"%>

服务端绕过 - 配合服务器解析漏洞

WampServer2.0All Version (WampServer2.0i / Apache 2.2.11) [Success]WampServer2.1All Version (WampServer2.1e-x32 / Apache 2.2.17) [Success] Wamp5 All Version (Wamp5_1.7.4 /Apache 2.2.6) [Success] AppServ 2.4All Version (AppServ - 2.4.9 /Apache 2.0.59) [Success]AppServ 2.5All Version (AppServ - 2.5.10 /Apache 2.2.8) [Success]AppServ 2.6All Version (AppServ - 2.6.0 /Apache 2.2.8) [Success] iis漏洞版本IIS6.0 (Win2003 SP2 + IIS6.0) [Success]IIS7.0 (Win2008 R1 + IIS7.0) [Success]IIS7.5 (Win2008 R2 + IIS7.5) [Success] Nginx漏洞版本• Nginx 0.5.*• Nginx 0.6.*• Nginx 0.7 <= 0.7.65• Nginx 0.8 <= 0.8.37• 以上Nginx容器器的版本下,上传⼀一个在waf白名单之内扩展名的⽂文件1.jpg,然后以1.jpg%00.php进行请求。• Nginx 0.8.41 – 1.5.6:• 以上Nginx容器器的版本下,上传⼀一个在waf白名单之内扩展名的⽂文1.jpg,然后以1.jpg%20%00.php进行请求

服务端绕过 - 配合操作系统文件命令规则

(1)上传不符合windows文件命名规则的文件名  test.asp.  test.asp(空格)  test.php:1.jpg  test.php::$DATA  shell.php::$DATA…….会被windows系统自动去掉不符合规则符号后面的内容(2)linux下后缀名大小写在linux下,如果上传php不被解析,可上传pHp后缀的文件名。

服务端绕过 - 代码审计/CVE

PHPCMS9.6.0富文本编辑器 - FCK

服务端绕过 - 配合其他规则 - 0x00截断 - include()

PHP版本低于5.3.41.在url中加入%00,如http://xxxx/shell.php%00.jpgurl中的%00(形如%xx),web server会把它当作十六进制处理,然后将该十六进制数据hex(00)翻译成统一的ascii码值“NUL(null)”,实现截断2.在burpsuite的16进制编辑工具将”shell.php .jpg”(带空格的)中间的空格由20改成00burpsuite用burp自带的十六进制编辑工具将”shell.php .jpg”(中间有空格)中的空格由20改成00,如果burp中有二进制编辑工具

服务端绕过 - 配合其他规则 - 0x00截断 - iconv()

php5.4之前,iconv()函数在转换编码的时候,遇到不合法的字符串的时候会将其截断
iconv(“UTF-8″,”gbk”,$a)或是iconv(“UTF-8″,”gb2313″,$a)在chr(128)到chr(255)之间截断,使结果为shell.php;在iconv转码的过程中,utf->gb2312(其他部分编码之间转换同样存在这个问题)会导致字符串被截断,如:$filename=”shell.php(hex).jpg”; (hex为0×80-0×99),经过iconv转码后会变成$filename=”shell.php “;所以,经过iconv后$struct_file['name'])为shell.php,可成功的上传shell.php(前提是上传的文件名为shell.php{%80-%99}.jpg )

服务端绕过 - 配合其他规则 - 0x00截断 - file_get_contents()

服务端绕过 - 配合其他规则 - 0x00截断 - file_exists()

服务端绕过 - 配合其他规则 - 0x00截断 - magic_quotes_gpc = Off php版本<5.3.4

http://www.ctfs-wiki.com/FI/FI.php?filename=../../../../../../../boot.ini%00test.php(0x00).jpgtest.php%00.jpg

服务端绕过 - 配合其他规则 - .htaccesss

服务端绕过 - 配合其他规则 - 幻数检测绕过

服务端绕过 - 配合其他规则 - 结构加载绕过

服务端绕过 - 配合其他规则 - 渲染测试绕过

服务端绕过 - 配合其他规则 - 二次渲染绕过

Waf绕过 - 垃圾数据

有些主机WAF软件为了不影响web服务器的性能,会对校验的用户数据设置大小上限,比如1M。此种情况可以构造一个大文件,前面1M的内容为垃圾内容,后面才是真正的木马内容,便可以绕过WAF对文件内容的校验;

Waf绕过 -  filename

针对早期版本安全狗,可以多加一个filename

Waf绕过 - POST/GET转换

Waf绕过 - 利用waf本身缺陷

Conten-Type字段Content-Disposition字段Boundary字段NTFS ADS特性filename字段name字段

 

防御

文件扩展名服务端白名单校验文件内容服务端校验隐藏上传文件路径检查配置信息无误上传后,文件重命名+时间戳+随机数安装必要的防护软件

 

转载于:https://www.cnblogs.com/AtesetEnginner/p/11325554.html

你可能感兴趣的文章
graphite custom functions
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
oracle连接的三个配置文件(转)
查看>>
Centos下源码安装git
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>
二叉树的遍历问题总结
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
绝对定位
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
浏览器的DNS缓存查看和清除
查看>>
pytho logging
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>
tpframe免费开源框架又一重大更新
查看>>
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
【4.1】Python中的序列分类
查看>>