You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lib/controller/controller.py
+7-2Lines changed: 7 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -529,8 +529,8 @@ def start():
529
529
530
530
checkWaf()
531
531
532
-
ifany((conf.graphql, conf.nosql, conf.ldap, conf.xpath, conf.ssti)) and (conf.reportJsonorconf.resultsFile):
533
-
singleTimeWarnMessage("'--report-json'/'--results-file' do not (yet) capture non-SQL technique (--graphql/--nosql/--ldap/--xpath/--ssti) findings; these are reported on the console only")
532
+
ifany((conf.graphql, conf.nosql, conf.ldap, conf.xpath, conf.ssti, conf.xxe)) and (conf.reportJsonorconf.resultsFile):
533
+
singleTimeWarnMessage("'--report-json'/'--results-file' do not (yet) capture non-SQL technique (--graphql/--nosql/--ldap/--xpath/--ssti/--xxe) findings; these are reported on the console only")
# XXE parser error signatures for detection and fingerprinting. Each tuple is
1075
+
# (parser_family, regex_fragment). A match means the XML surface reached a real
1076
+
# parser and the DOCTYPE/entity was processed (or rejected with a diagnostic) -
1077
+
# useful both as an error-based oracle and to fingerprint the back-end parser.
1078
+
XXE_ERROR_SIGNATURES= (
1079
+
("libxml2 (PHP/lxml)", r"(?:failed to load (?:external entity|\")|xmlParseEntityRef|Entity '[^']*' not defined|EntityRef: expecting|Detected an entity reference loop|String not started expecting|StartTag: invalid element name|Start tag expected|Extra content at the end of the document|Premature end of data|error parsing DTD|internal error: Huge input lookup)"),
("Java (Xerces/JAXP)", r"(?:org\.xml\.sax\.SAXParseException|com\.sun\.org\.apache\.xerces|javax\.xml\.stream\.XMLStreamException|The (?:entity|element type) \"[^\"]*\" was referenced|DOCTYPE is disallowed when the feature|External (?:DTD|parsed entities|Entity): failed|must be declared|had to be read but the maximum)"),
1082
+
(".NET System.Xml", r"(?:System\.Xml\.XmlException|For security reasons DTD is prohibited|Reference to undeclared entity|An error occurred while parsing EntityName|XmlTextReaderImpl)"),
# Signatures indicating a hardened / XXE-safe parser posture (DTDs or external
1092
+
# entities explicitly refused). Reported as "reachable but protected" - never a hit.
1093
+
XXE_HARDENED_REGEX=r"(?i)(?:DOCTYPE is disallowed|DTD is prohibited|(?:external )?(?:DTD|entit(?:y|ies)) (?:are|is) (?:not (?:supported|allowed)|disabled|prohibited|forbidden)|loading of external|network access is not allowed|FEATURE_SECURE_PROCESSING|access to external)"
1094
+
1095
+
# Benign, low-entropy files used only to demonstrate file-read impact once XXE is
1096
+
# confirmed. Deliberately NOT /etc/passwd (WAF honeypots key on "root:x:0:0") - a
1097
+
# short host-identity file is enough to prove the read without tripping decoys.
1098
+
# Out-of-band (interactsh) collector for blind XXE confirmation. Public default
1099
+
# pool (best-effort, may rotate/be blocklisted by WAFs); override with --oob-server
1100
+
# to point at a self-hosted interactsh-server. Correlation-id + nonce lengths match
1101
+
# the interactsh defaults (subdomain = <20-char id><13-char nonce>.<server>).
0 commit comments