Minor improvement of generic WAF script

This commit is contained in:
Miroslav Stampar
2017-12-13 15:31:35 +01:00
parent 42ddfd8f50
commit f2f7994ac6
3 changed files with 14 additions and 8 deletions

View File

@@ -5,7 +5,10 @@ Copyright (c) 2006-2017 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""
from lib.core.option import kb
import re
from lib.core.data import kb
from lib.core.settings import GENERIC_PROTECTION_REGEX
from lib.core.settings import IDS_WAF_CHECK_PAYLOAD
from lib.core.settings import WAF_ATTACK_VECTORS
@@ -14,14 +17,14 @@ __product__ = "Generic (Unknown)"
def detect(get_page):
retval = False
page, headers, code = get_page()
if page is None or code >= 400:
original, _, code = get_page()
if original is None or code >= 400:
return False
for vector in WAF_ATTACK_VECTORS:
page, _, code = get_page(get=vector)
page, headers, code = get_page(get=vector)
if code >= 400 or IDS_WAF_CHECK_PAYLOAD in vector and code is None:
if code >= 400 or (IDS_WAF_CHECK_PAYLOAD in vector and (code is None or re.search(GENERIC_PROTECTION_REGEX, page or "") and not re.search(GENERIC_PROTECTION_REGEX, original or ""))):
if code is not None:
kb.wafSpecificResponse = "HTTP/1.1 %s\n%s\n%s" % (code, "".join(_ for _ in headers.headers or [] if not _.startswith("URI")), page)