SOAP/JAX-WS ThreadLocal Authentication Bypass
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
TL;DR
- Bazı middleware zincirleri doğrulanmış
Subject/Principal’ı statik birThreadLocaliçinde saklar ve yalnızca özel bir SOAP header’ı geldiğinde onu yeniler. - WebLogic/JBoss/GlassFish worker thread’leri yeniden kullandığı için, o header’ı atmak thread tarafından işlenmiş son ayrıcalıklı
Subject’in sessizce yeniden kullanılmasına yol açar. - Zayıf endpoint’e header içermeyen fakat düzgün biçimlendirilmiş SOAP gövdeleriyle yoğun istek gönderin; yeniden kullanılan bir thread size çalınmış yönetici bağlamını verene kadar.
Temel Neden
Aşağıdakine benzer handler’lar yalnızca özel header mevcut olduğunda thread-local kimliğini üzerine yazar, bu yüzden önceki isteğin bağlamı korunur:
public boolean handleMessage(SOAPMessageContext ctx) {
if (!outbound) {
SOAPHeader hdr = ctx.getMessage().getSOAPPart().getEnvelope().getHeader();
SOAPHeaderElement e = findHeader(hdr, subjectName);
if (e != null) {
SubjectHolder.setSubject(unmarshal(e));
}
}
return true;
}
Keşif
- Reverse proxy / routing kurallarını listeleyerek
?wsdl’yi engelleyip POST’ları kabul eden gizli SOAP ağaçlarını tespit edin (bunları 80,443 - Pentesting Web Methodology akışıyla eşleştirin). - EAR/WAR/EJB artifact’larını açın (
unzip *.ear) veapplication.xml,web.xml,@WebServiceannotation’larını ve handler chain’lerini (ör.LoginHandlerChain.xml) inceleyerek handler sınıfını, SOAP header QName’ini ve arka plandaki EJB isimlerini ortaya çıkarın. - Metadata eksikse, muhtemel
ServiceName?wsdlyollarını brute-force yapın veya lab proxy’lerini geçici olarak gevşetin; kurtarılan herhangi bir WSDL’i Burp Suite Wsdler gibi araçlara aktararak temel SOAP zarflarını oluşturun. - Handler kaynaklarını, kimlik doğrulama header’ı eksik veya bozuk olduğunda asla temizlenmeyen
ThreadLocaltutucularını (örn.SubjectHolder.setSubject()) için inceleyin.
İstismar
- Normal yanıt kodlarını ve geçersiz tokenler için kullanılan hatayı öğrenmek üzere özel header ile geçerli bir istek gönderin.
- Aynı SOAP gövdesini header’ı çıkararak yeniden gönderin. XML’in iyi biçimlendirilmiş olmasına ve gerekli namespace’lere uyulmasına dikkat edin ki handler düzgün şekilde sonlansın.
- İsteği döngüye alın; daha önce ayrıcalıklı bir işlem yürütmüş bir thread’e denk geldiğinde, yeniden kullanılan
Subjectkullanıcı veya credential yöneticileri gibi korumalı operasyonların kilidini açar.
POST /ac-iasp-backend-jaxws/UserManager HTTP/1.1
Host: target
Content-Type: text/xml;charset=UTF-8
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:jax="http://jaxws.user.frontend.iasp.service.actividentity.com">
<soapenv:Header/>
<soapenv:Body>
<jax:findUserIds>
<arg0></arg0>
<arg1>spl*</arg1>
</jax:findUserIds>
</soapenv:Body>
</soapenv:Envelope>
Hatayı Doğrulama
- JDWP’yi bağlayın (
-agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n) veya benzeri debugging hook’ları ekleyin; her çağrıdan önce ve sonraThreadLocaliçeriklerini izleyerek yetkilendirilmemiş bir isteğin önceki bir yöneticiSubject’i devraldığını doğrulayın.
Referanslar
- Synacktiv – ActivID administrator account takeover: the story behind HID-PSA-2025-002
- PortSwigger – Wsdler (WSDL parser) extension
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
HackTricks

