绕WAF(Bypass)--随时更新
基础
(1)https降级绕过:https->http
(2)选用一个WAF不支持的算法,但是服务器支持的算法
(4)修改method:GET->POST、POST->上传、cookie传值
(5)Header IP绕过
X-forwarded-for、X-remote-IP、X-originating-IP、x-remote-addr、x-client-i
(6)eader content-type 绕过
置为空、改为其它值、指定唯一的类型(例如:application/octet-stream --安全狗)、改成不规则值(例如:text/htmlxxxxxx)
命令执行
(1)'(单引号)\(反斜杠)绕过
root@fengwenbo:~# echo yourname
yourname
root@fengwenbo:~# echo y\o\u\r\n\a\m\e
yourname
(2)?、*、[、]、^、- 通配符绕过
root@fengwenbo:~# cat /etc/pa??wd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
(3)$u 不存在符号绕过
root@fengwenbo:~# cat $u/etc$u/passwd$u
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
(4); 分号执行
root@fengwenbo:~# cat /ect/passwd;ls
cat: /ect/passwd: 没有那个文件或目录
公共 模板 视频 图片 文档 下载 桌面
文件上传
文件名绕过
(1)文件名后加回车
(2)shell.php(%80-%89).jpg
(3)先上传,再改名
(4)%00
(5)00截断(HEX)
(6)长文件名(Windows 258byte | Linux 4096byte),可以使用:非字母数字(如:中文)
(7)重命名
脚本后缀
Php/php3/php/php5/php6/pht/phpt/phtml
asp/cer/asa/cdx/aspx/ashx/ascx/asax
jsp/jspx/jspf
解析漏洞
(1)IIS 5.x 6.0解析漏洞
-
目录解析:在网站下建立文件夹的名字为 .asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。
-
在IIS6.0下,分号后面的不被解析
(2)Apache 1.x 2.x解析漏洞
- Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。
(3)Nginx0.5.* Nginx0.6.* Nginx0.7-0.7.65 Nginx0.8-0.8.37
- 上传shell.jpg,然后以shell.jpg.php进行请求
(4)Nginx 0.8.41-1.5.6
- 上传shell.jpg,然后以shell.jpg%20.php进行请求
(5)PHP CGI解析漏洞 IIS7.0 IIS7.5 Nginx<0.8.3
- 默认PHP配置文件cgi.fix_pathinfo=1时,上传shell.jpg,在请求时以shell.jpg/shell.php请求,会将以shell.jpg以PHP来解析
(6)系统特性
NTFS ADS特性:ADS时NTFS磁盘格式的一个特性,用于NTFS交换数据流。在上传文件时,吴国waf对请求正文的filename匹配不当的话可能会导致绕过。
假设现在我们有一个文件shell.php,文件内容是
利用Windows server 2008 r2 DVWA上传测试
上传的文件名 | 服务器表面现象 | 生成的文件内容 |
---|---|---|
shell.php:a.jpg | 生成shell.php | |
shell.php::$DATA | 生成shell.php | |
shell.php::$INDEX_ALLOCATION | 生成shell.php文件夹 | |
shell.php::$DATA.jpg | 生成0.jpg | |
shell.php::$DATA\aaa.jpg | 生成aaa.jpg |
垃圾数据
文件名
- 文件名回车
- 多个filename字段,前一个正常,后一个恶意
- 遗漏文件名
参数
- 参数溢出
- 参数截断
- 参数污染/拼接
编码
URL、Double URL、UTF-8(2 byte)、UTF-8(java)、HTML、Decimal、Unicode、Base64