wafw00f – waf 识别工具
作者:admin | 时间:2016-7-7 10:04:12 | 分类:黑客工具 隐藏侧边栏展开侧边栏
项目地址
https://github.com/sandrogauci/wafw00f
项目简介
WAFW00F识别和指纹Web应用防火墙(WAF)产品。
其工作原理是首先通过发送一个正常http请求,然后观察其返回有没有一些特征字符,若没有在通过发送一个恶意的请求触发waf拦截来获取其返回的特征来判断所使用的waf。
Wafw00f用来判断WAF设备的函数如下:
AdminFolder = '/Admin_Files/' xssstring = '<script>alert(1)</script>' dirtravstring = '../../../../etc/passwd' cleanhtmlstring = '<invalid>hello' isaservermatch = 'Forbidden ( The server denied the specified Uniform Resource Locator (URL). Contact the server administrator. )'
使用“python wafw00f.py -h”可以查看工具的使用方法,运行示例:
python wafw00f.py http://www.victim.org/
基于Cookie的检测
Wafw00f的探测大部分是基于Cookie的检测。
F5asm的检测规则如下:
def isf5asm(self):
# credit goes to W3AF
return self.matchcookie('^TS[a-zA-Z0-9]{3,6}=')
基于响应头的检测
Profense在响应头会包含'server','profense'的信息。
def isprofense(self):
"""
Checks for server headers containing "profense"
"""
return self.matchheader(('server','profense'))
sqlmap
Sqlmap是一款检测和利用SQLi漏洞工具,也是基于python编写,业内认同率较高,sqlmap用来探测WAF类型想比较Wafw00f来说还多一些。
参考:
https://github.com/sqlmapproject/sqlmap/tree/master/waf
Sqlmap用来探测每种WAF设备都是一个python文件,同样是从cookie信息或者返回头信息进行判断。
以Mod_Security为例
#!/usr/bin/env python
"""
Copyright (c) 2006-2013 sqlmap developers (http://sqlmap.org/)
See the file 'doc/COPYING' for copying permission
"""
import re
from lib.core.enums import HTTP_HEADER
from lib.core.settings import WAF_ATTACK_VECTORS
__product__ = "ModSecurity: Open Source Web Application Firewall (Trustwave)"
def detect(get_page):
retval = False
for vector in WAF_ATTACK_VECTORS:
page, headers, code = get_page(get=vector)
retval = code == 501 and re.search(r"Reference #[0-9A-Fa-f.]+", page, re.I) is None
retval |= re.search(r"Mod_Security|NOYB", headers.get(HTTP_HEADER.SERVER, ""), re.I) is not None
if retval:
break
return retval
Sqlmap用来探测WAF的命令如下:
python sqlmap.py -u “http://www.victim.org/ex.php?id=1” --identify-waf
貌似必须是或自己修改的类似动态参数才能使用。
xenoitx
检测和利用XSS漏洞的神器,WAF检测也是其中的功能之一。