
توضح ثغرة XXE عبر رفع ملفات SVG مع محلل Flask/lxml ضعيف وسكربت استغلال لاختبار قراءة الملفات التعسفية و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)
يقبل تطبيق الويب رفع صور SVG ويقوم بتحليلها باستخدام محلل XML هش مع تمكين تحليل الكيانات الخارجية. يمكن للمهاجم تضمين حمولة XXE لقراءة ملفات محلية، أو تنفيذ هجمات SSRF، أو التسبب في رفض الخدمة.
resolve_entities=True مع إمكانية الوصول إلى الشبكة، مما يسمح بتوسيع الكيانات الخارجية.pip install flask lxml
python xxe_upload_server.py
python exploit_xxe_svg.py