
脆弱なFlask/lxmlパーサーを備えたSVGアップロード経由のXXEを実証し、任意ファイル読み取り、SSRF、サービス拒否テスト用のエクスプロイトスクリプトを提供します。
# xxe_upload_server.py - Uploads SVG, renders with lxml resolving entities
from flask import Flask, request
from lxml import etree
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_svg():
svg_data = request.data
# Vulnerable: parses with entity resolution enabled
parser = etree.XMLParser(resolve_entities=True, no_network=False)
doc = etree.fromstring(svg_data, parser)
# Extract something from SVG
return etree.tostring(doc)
if __name__ == '__main__':
app.run(port=5000)
このWebアプリケーションは、SVG画像のアップロードを受け付け、外部エンティティ解決が有効な脆弱なXMLパーサーで解析します。攻撃者はXXEペイロードを埋め込むことで、ローカルファイルの読み取り、SSRFの実行、またはサービス拒否を引き起こす可能性があります。
resolve_entities=Trueとネットワークアクセスを有効にした構成になっており、外部エンティティの展開が可能です。pip install flask lxml
python xxe_upload_server.py
python exploit_xxe_svg.py