渗透测试之waf绕过基础

思维导图:

渗透测试之waf绕过基础

渗透测试之waf绕过基础

渗透测试之waf绕过基础

一、信息收集

此处只针对对于目标网站直接扫描的信息收集讲解,其他辅助信息收集手段如:查旁站/识别cms等手段也不会遇到waf拦截。

1.安全狗—防ddos

 cenos目前用的不熟练,于是我将服务器系统换成了winserver,搭建上web环境和安全狗,打开cc拦截开关,本地用目录扫描工具扫描后被拦截:

渗透测试之waf绕过基础

渗透测试之waf绕过基础

测试测试就行了,不要轻易把本机ip加进黑名单或者用7kbscan扫,否则远程连接直接就断了,反正会被waf狗自动拉黑,但是又不是那个黑白名单功能,我即使将ip加进白名单依旧无法连接上,反正就是waf搞的鬼(不过也不排除是阿里云服务器的内置规则)远程连接连不上,还得去控制台网页重连然后关闭安全狗才能连上!

2.绕过方法

渗透测试之waf绕过基础

我们可以:

  • 伪造user-agent头—UA头伪装为百度等搜索引擎爬虫的信息

       因为大部分waf会默认允许这些搜索引擎批量请求爬取信息(否则网站就垫底没人认识了….)                        各大搜索引擎的User-Agent – iackjee – 博客园

可以用这款工具,但最好是会写自己的脚本,毕竟自己的用的更方便,工具修改的ua头有限制,而且没法自定义或者抓包。

渗透测试之waf绕过基础

渗透测试之waf绕过基础

py脚本用top3000.txt文件(字典)来跑,同时可以自己代理抓包修改数据包信息,数据包通过工具再发给服务器;更改ua头为爬虫头来防止被waf封ip:

渗透测试之waf绕过基础

渗透测试之waf绕过基础
  • 延时—设置访问间隔时间(防御规则就是短时间访问过大而判断为攻击的)

渗透测试之waf绕过基础
  • 代理池——http代理,钞能力,免费的自然美收费的稳定:通过调用接口或者脚本爬取到这些ip成字典来不同ip来请求;但waf也能识别出代理访问,不过多用来防cc攻击。

渗透测试之waf绕过基础

3.阿里云

听说绕过好像第一种方法改ua头不行,只能代理池或延时,阿里云设置规则是只要批量一扫就会挂1h;不过我也用的阿里云,测试后用那上边脚本跑了之后也没被拦截,甚至还没出现工具那样一扫就断连的情况,而且waf也没检测到这种批量扫描,可能是把waf绕过了,持观望态度。

4.宝塔

插件收费,也懒得搭建了,无法自己演示,规则确实比安全狗更严格。

渗透测试之waf绕过基础

waf规则都是写好的死的,我们可以思路打开,比如.bak后缀可以中间加空格或者截断或者编码等方法尝试绕过。

二、漏洞发现

渗透测试之waf绕过基础

1.触发waf

最常见的三个方法:

  1. 扫描/访问速度过快。
  2. 工具指纹,尤其awvs这些热门工具,waf都有指纹记录识别。
  3. 漏洞payload,之前学的这些漏洞的payload的关键字自然也在waf的拦截字典里。

2.代理池

1)免费代理池Proxy_pool项目搭建及使用解释:就是安装个redis数据库,然后开py脚本跑,之间还要调用api接口,将跑出来可以使用的ip写进数据库,之后我们提取出来就可以用,但是ip存活不了多久,更适合爬虫用。详细使用见项目:

        https://github.com/jhao104/proxy_pool

渗透测试之waf绕过基础 2)收费代理池:https://www.kuaidaili.com/ 渗透测试之waf绕过基础

渗透测试之waf绕过基础

配置好代理和端口就行了,至于其怎么实现请求一次地址就换一个ip的原理目前水平先不用搞懂。

3.漏扫工具AWVS

我直接awvs什么没设置直接扫pikachu的sql注入界面,并没有被安全狗拦截,很迷,免费的waf就是不太行,都批量上payload了竟然还没批量扫目录时好用…..。

渗透测试之waf绕过基础

 可以配合burp看扫描发送的payload放请求(开始的一段时间没有请求,之后又隔一段时间来一大批,很怪):

渗透测试之waf绕过基础

宝塔的防护扫描器如awvs机制(检测http信息,这条规则只是简单改ua头就可绕过):

渗透测试之waf绕过基础

作为强大的漏扫工具,自然也支持前边进行目录扫描时绕过waf的姿势:代理池/ua头/延时。其他更强大的功能如:登录/整个数据包构造/证书导入之后慢慢发掘吧……..

4.工具缺点

     不同工具扫描时的规则不一样,就拿验证响应为例:当工具被拦截后它只会看响应包是否符合自己源代码中写好的预期解,而判断不了是否被拦截了,只要不符合预期解时(此时可能被拦截了也可能工具误判)就直接判断为没有漏洞,这样就会出现很大失误;

     但工具不开源的话我们是没办法修改源代码来修改规则的,总不能次次手动看响应是否是被拦截导致的或者次次抓包修改请求为自己的预期请求吧!甚至有的工具没法修改ua头的话(xray),总不能自己抓每个包修改ua头吧,请求速度也是如此;倘若开源我们就可以直接改代码二次开发来让其符合自己的需求来或者自己开发的工具绝对符合需求。

      所以,那些自己开发出工具的才是真的大佬!自己开发的才是yyds。或者用多款不同工具来扫总有合适的数据包或者用小众的工具其不会被收集指纹拦截。

5.awvs+bp+xray

方法就是awvs+burp和burp+xray来实现。

渗透测试之waf绕过基础

6.awvs配代理池:很简单。

三、漏洞利用

渗透测试之waf绕过基础

1)SQL注入:

sqlmap的指纹记录在waf中,不光要代理池或延时,还要需要修改ua头:

渗透测试之waf绕过基础

 以及各种用途的插件,比如修改xforward头的插件:

渗透测试之waf绕过基础

宝塔相对于安全狗功能确实更全,比如url防护(收费的确实更安全): 

渗透测试之waf绕过基础

宝塔拦截界面:(我的安全狗就触发不了,跟假的waf似的)

渗透测试之waf绕过基础

常见方法/思路举例:参数污染、特殊字符混淆、mysql黑魔法、换行符等等,思路够“骚”waf就拦不住你。

之前写的博客:SQL注入之简单的waf绕过_qi_SJQ_的博客-CSDN博客

sqlmap之waf绕过_qi_SJQ_的博客-CSDN博客_sqlmap绕过waf

所以说那些基础的payload基本都会被过滤了,想绕过即难又不难,本质就是正则过滤嘛,一看该网站正则过滤有多严格,二看思路够不够“骚”。比如内联注入绕过检测/*就中间加个空格来绕过。前边学各种漏洞原理时也提过一些waf绕过手段,也没有万能的payload,只能逐个测试fuzzing。多看技术前沿文章多总结、积累。

2)文件上传:

之前博客提到的思路:数据溢出符号变异分号绕过换行绕过00截断重复数据等等,一个不行就下一个,渗透“测试”嘛,多测试测试,自己能想到的方法都不成功那就是无缘了…..

之前博客:文件上传漏洞(思路,绕过,修复)_qi_SJQ_的博客-CSDN博客_文件上传绕过方式

3)xss:

xss思路就更多了:标签语法替换、特殊符号干扰、垃圾数据溢出等等,那个靶场考验的不就是各种绕过过滤手段吗,就是简单版的waf。

自己博客:XSS漏洞学习笔记_qi_SJQ_的博客-CSDN博客_xss漏洞学习

文章:[翻译]绕过XSS检测机制-外文翻译-看雪论坛-安全社区|安全招聘|bbs.pediy.com

工具:xsstrike、xwaf(注入时用)

4)rce:

思路:加密解密绕过(常见方法不多:url与base64及进制和ascii、unicode;不可逆算法都不行)、异或/无字母参数绕过(p牛文章)、关键字绕过 、变量覆盖加请求方法等等。只要思路够开阔就有空子可钻。

渗透测试之waf绕过基础

渗透测试之waf绕过基础 安全狗着实不行,根本不报,都在服务器命令执行了日志上啥也没有。本机搭建看看waf软件的防护规则,有了防护规则参考那离绕过就能更近一步了。

同时rce还要看php配置、phpinfo里是否禁用了那些函数。

四、权限控制

渗透测试之waf绕过基础

1.waf绕过简单过程

我们首先需要绕过扫描waf,之后利用漏洞,同时payload也要绕过waf,尤其shell怎么不被查杀到,而当利用漏洞拿到shell连接时又需要考虑能否连上,比如waf识别shell工具指纹或无法外网连接shell等等。

所以发现/利用一个漏洞不单单是网页源代码层面绕过就行的,还需要考虑绕过烦人的waf,需要先让payload不让waf拦截后再考虑是否可以当成源代码的exp之后再想办法回显等等。

2.绕过

权限维持也就是后门shell免杀,只要不被查杀到就达到目的了。

#Safedog 代码层手写及脚本绕过:

  • 变量覆盖
  • 加密混淆
  • 异或生成 

1)变量覆盖:

渗透测试之waf绕过基础

 

渗透测试之waf绕过基础

 这是php5.4版本下的,高版本好像不支持变量覆盖了。其他语言原理也差不多,安全狗也没有拦截我们输入的参数值,即使assert与phpinfo是敏感关键字。

虽然这个版本的安全狗不拦截,但是宝塔却会拦截我们的输入:

渗透测试之waf绕过基础

 因此可以试试用下面这个方法。

加密传输 (不论base系列还是url编码等等加解密都可以试试):

渗透测试之waf绕过基础

 2)加密混淆:

思路: 既然可以加密传输,就会有其它加密的方法,就有了加密混淆使得 WAF 软件无法检测到关键字段同样达到 WAF 的绕过 。不光php有加密,其他语言的自然也有,需要自己寻找,比如广为人知的jsfuck,不公开的自然没的说。

PHP 混淆加密脚本下载地址: https://github.com/djunny/enphp

在线网站:PHP加密|PHP在线加密|PHP混淆 – EnPHP加密平台

渗透测试之waf绕过基础

 这个加密后虽然看着很乱,但确实有用。(还得cmd配php环境我就没试验。。。)

3)借用在线API接口实现加密混淆:

在线网站:会员注册|php源码加密|www.PhpJiaMi.com

渗透测试之waf绕过基础

 

渗透测试之waf绕过基础

看着挺高级,但有的加密需要服务器安装相关php扩展才能识别并解密执行的,总之一堆乱码不会被被waf识别到后门。具体使用就自己参考它的使用说明吧。

4)异或加密:

GitHub – yzddmr6/as_webshell_venom: 免杀webshell无限生成工具蚁剑版

通过python对相关php代码进行异或运算,很强,通杀,可以自己修改代码。

渗透测试之waf绕过基础

3.工具

1)

渗透测试之waf绕过基础

 

渗透测试之waf绕过基础

2)双向加密:

相比于单向加密,双向加密传输就是发包之前已经加密了,并且从服务器传回来的数据也是加密的,这样绕过WAF的检测。

冰蝎的双向加密:

渗透测试之waf绕过基础

菜刀原理

先抓取菜刀连接webshell的数据包:

渗透测试之waf绕过基础

 我们将数据包放到浏览器执行:

渗透测试之waf绕过基础

可以看到浏览器与菜刀结果差不多,所以原理就是数据包请求的内容,此为单向加密:

渗透测试之waf绕过基础

双向加密,请求和回显都是加密的,采用公私钥加密,回显的render界面明显与冰蝎界面不一样(burp没有私钥所以无法解密):

渗透测试之waf绕过基础

 冰蝎还有其他后渗透的功能,很强大!

4.行为

自己写轮子:

有时虽然shell可以连上,但是却无法文件操作,这是由于行为被检测到了:可能是waf里有工具的指纹也可能是操作文件的数据包被检测到了。我用冰蝎连阿里云的服务器是,云盾就给我发了好几个预警短信….

因此,自己需要自己连shell执行命令,可以参考工具的加密方式来写python脚本来连或者浏览器来连,这种方法自然就不会被waf检测到工具的指纹了,就是命令执行的知识点,怎么遍历目录,怎么写文件等等,都可以解密出工具的请求代码来自己写。

渗透测试之waf绕过基础

渗透测试之waf绕过基础

来源:暮w光

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月15日
下一篇 2022年1月15日

相关推荐