Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 01bd5d0

Browse files
committed
some more updates for reflective mechanism
1 parent 2e92d86 commit 01bd5d0

2 files changed

Lines changed: 6 additions & 19 deletions

File tree

lib/core/common.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@
116116
from lib.core.settings import ML
117117
from lib.core.settings import MIN_TIME_RESPONSES
118118
from lib.core.settings import PAYLOAD_DELIMITER
119-
from lib.core.settings import REFLECTED_BORDER_REGEX
120119
from lib.core.settings import REFLECTED_REPLACEMENT_REGEX
121120
from lib.core.settings import REFLECTED_MAX_REGEX_PARTS
122121
from lib.core.settings import REFLECTED_VALUE_MARKER
@@ -2635,6 +2634,7 @@ def removeReflectiveValues(content, payload, suppressWarning=False):
26352634
"""
26362635

26372636
retVal = content
2637+
regex = ""
26382638

26392639
if all([content, payload]) and isinstance(content, unicode) and kb.reflectiveMechanism:
26402640
def _(value):
@@ -2646,24 +2646,14 @@ def _(value):
26462646
regex = _(filterStringValue(payload, r'[A-Za-z0-9]', REFLECTED_REPLACEMENT_REGEX.encode("string-escape")))
26472647

26482648
if regex != payload:
2649-
regex = re.sub(r"\A([A-Za-z0-9]+)", r"(\1)?", regex)
2650-
2651-
if all(part.lower() in content.lower() or part.endswith(')?') for part in regex.split(REFLECTED_REPLACEMENT_REGEX)): # fast optimization check
2649+
if all(part.lower() in content.lower() for part in regex.split(REFLECTED_REPLACEMENT_REGEX)): # fast optimization check
26522650
parts = regex.split(REFLECTED_REPLACEMENT_REGEX)
26532651
if len(parts) > REFLECTED_MAX_REGEX_PARTS: # preventing CPU hogs
2654-
regex = _("%s%s%s" % (REFLECTED_REPLACEMENT_REGEX.join(parts[:REFLECTED_MAX_REGEX_PARTS / 2]), REFLECTED_REPLACEMENT_REGEX, REFLECTED_REPLACEMENT_REGEX.join(parts[-REFLECTED_MAX_REGEX_PARTS / 2:])))
2655-
2656-
if regex.startswith(REFLECTED_REPLACEMENT_REGEX):
2657-
regex = r"%s%s" % (REFLECTED_BORDER_REGEX, regex.lstrip(REFLECTED_REPLACEMENT_REGEX))
2658-
else:
2659-
regex = r"\b%s" % regex
2660-
2661-
if regex.endswith(REFLECTED_REPLACEMENT_REGEX):
2662-
regex = r"%s%s" % (regex.rstrip(REFLECTED_REPLACEMENT_REGEX), REFLECTED_BORDER_REGEX)
2663-
else:
2664-
regex = r"%s\b" % regex
2652+
parts = parts[:REFLECTED_MAX_REGEX_PARTS / 2] + parts[-REFLECTED_MAX_REGEX_PARTS / 2:]
26652653

2666-
retVal = re.sub(r"(?i)%s" % regex, REFLECTED_VALUE_MARKER, content)
2654+
parts = filter(None, parts)
2655+
regex = r"(?i)\b%s\b" % REFLECTED_REPLACEMENT_REGEX.join(parts)
2656+
retVal = re.sub(regex, REFLECTED_VALUE_MARKER, content)
26672657

26682658
if retVal != content:
26692659
kb.reflectiveCounters[REFLECTIVE_COUNTER.HIT] += 1

lib/core/settings.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,6 @@
332332
# Mark used for replacement of reflected values
333333
REFLECTED_VALUE_MARKER = "__REFLECTED_VALUE__"
334334

335-
# Regular expression used for replacing border non-alphanum characters
336-
REFLECTED_BORDER_REGEX = r"[^\s]+"
337-
338335
# Regular expression used for replacing non-alphanum characters
339336
REFLECTED_REPLACEMENT_REGEX = r".+?"
340337

0 commit comments

Comments
 (0)