mirror of
https://github.com/github/codeql.git
synced 2025-12-19 18:33:16 +01:00
I had forgotten about this, but better late than never... also added a small representative test
31 lines
899 B
Python
31 lines
899 B
Python
from flask import Flask, request
|
|
import lxml.etree
|
|
|
|
app = Flask(__name__)
|
|
|
|
@app.route("/vuln-handler")
|
|
def vuln_handler():
|
|
xml_content = request.args['xml_content']
|
|
return lxml.etree.fromstring(xml_content).text
|
|
|
|
@app.route("/safe-handler")
|
|
def safe_handler():
|
|
xml_content = request.args['xml_content']
|
|
parser = lxml.etree.XMLParser(resolve_entities=False)
|
|
return lxml.etree.fromstring(xml_content, parser=parser).text
|
|
|
|
@app.route("/super-vuln-handler")
|
|
def super_vuln_handler():
|
|
xml_content = request.args['xml_content']
|
|
parser = lxml.etree.XMLParser(
|
|
# allows XXE
|
|
resolve_entities=True,
|
|
# allows remote XXE
|
|
no_network=False,
|
|
# together with `no_network=False`, allows DTD-retrival
|
|
load_dtd=True,
|
|
# allows DoS attacks
|
|
huge_tree=True,
|
|
)
|
|
return lxml.etree.fromstring(xml_content, parser=parser).text
|