SOAP/JAX-WS ThreadLocal Authentication Bypass
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
TL;DR
- Baadhi ya middleware chains huhifadhi
Subject/Principaliliyothibitishwa ndani ya staticThreadLocalna huiboresha tena tu wakati header maalum ya SOAP inapofika. - Kwa sababu WebLogic/JBoss/GlassFish hurudisha tena worker threads, kuondoa header hiyo kunasababisha
Subjectya mwisho yenye ruhusa iliyosindika na thread kutumika tena kwa kimya. - Tuma maombi mengi kwenye endpoint iliyo hatarini, ukiwa na miili ya SOAP zisizo na header lakini zimetengenezwa vizuri, hadi thread iliyotumika tena ikupatie muktadha wa msimamizi ulioporwa.
- 2025 HID ActivID/IASP (HID-PSA-2025-002) ni mfano wa dunia halisi: JAX-WS handler huhifadhi
SubjectHolderThreadLocalkwenye cache, ikiruhusu simu za SOAP zisizothibitishwa kurithi utambulisho uliowekwa na maombi ya awali ya konsoli/SSP.
Chanzo
Handlers zinazofanana na zifuatazo zinabandika tena utambulisho wa thread-local tu wakati header maalum upo, kwa hivyo muktadha wa ombi la awali unaendelea kuishi:
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;
}
Recon
- Orodhesha reverse proxy / routing rules ili kutambua miti ya SOAP iliyofichwa ambayo inaweza kuzuia
?wsdllakini inakubali POSTs (iweka ramani pamoja na mtiririko katika 80,443 - Pentesting Web Methodology). - Fungua artifacts za EAR/WAR/EJB (
unzip *.ear) na kaguaapplication.xml,web.xml,@WebServiceannotations, na handler chains (kwa mfano,LoginHandlerChain.xml) ili kubaini handler class, SOAP header QName, na majina ya backing EJB. - Iki metadata inakosekana, brute-force njia zinazowezekana za
ServiceName?wsdlau punguza kwa muda proxies za lab, kisha ingiza WSDL yoyote iliyopatikana kwenye zana kama Burp Suite Wsdler ili kutengeneza envelopes za msingi. - Pitia vyanzo vya handler kwa ajili ya
ThreadLocalkeepers (mfano,SubjectHolder.setSubject()) ambazo hazifutwi wakati header ya authentication inakosekana au imeharibika.
Exploitation
- Tuma ombi halali kikiwa na proprietary header ili kujifunza codes za kawaida za mwitikio na makosa yanayotumika kwa tokens zisizokubalika.
- Tuma tena body ile ile ya SOAP ukiwa umeacha header. Hakikisha XML ni well-formed na heshimu namespaces zinazohitajika ili handler itoke kwa utulivu.
- Rudia ombi; pindi linapofika kwenye thread iliyotekeleza kitendo chenye ruksa hapo awali,
Subjectiliyotumika tena hufungua operesheni zilizo salama kama manejala wa watumiaji au wa credential.
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>
2025 HID ActivID/IASP case study (HID-PSA-2025-002)
- Synacktiv ilionyesha kuwa JAX-WS
LoginHandlerkatika ActivID 8.6–8.7 setsSubjectHolder.subjectwakatimySubjectHeaderSOAP header iko au wakati trafiki ya console/SSP inathibitisha, lakini haiifuti kamwe wakati header haitokuwapo. - Kila simu ya baadaye ya SOAP isiyo na header kwenye worker thread ileile inarithi ile
Subjectiliyohifadhiwa, ikiruhusu uundaji usio na uthibitisho wa watumiaji wa administrator au import ya credential kupitia endpoints kamaUserManagerauCredentialManager. - Muundo thabiti wa unyonyaji ulioonekana:
- Zindua muktadha uliothibitishwa kwenye threads nyingi (mfano, spam
/sspau ingia/aiconsolekama admin katika tabia nyingine ya browser). - Piga kwa wingi SOAP bodies zisizo na header kwenye
/ac-iasp-backend-jaxws/UserManagerau endpoints nyingine za EJB-backed JAX-WS kwa paralelismi kubwa; kila hit inayotumia tena thread “iliyokuwa na maambukizi” itaendesha kwaSubjectiliyoongezeka. - Rudia hadi majibu yenye uwezo wa kipaumbele yaranibuke; tumia Keep-Alive connections na worker pools kubwa ili kuongeza uwezekano wa matumizi ya thread.
- Kuhusu Handler na mtiririko wa mchakato:
LoginHandlerChain.xml→LoginHandler.handleMessage()unmarshalsmySubjectHeaderna huwekaSubjectkatikaSubjectHolder(niThreadLocalstatic).ProcessManager.triggerProcess()baadaye huingizaSubjectHolder.getSubject()katika processes za kibiashara, hivyo headers zinazokosekana zinaacha vitambulisho vikali visivyofutwa.- PoC iliyotumika shambani kutoka advisory inatumia mbinu ya SOAP yenye hatua mbili: kwanza
getUsersili leak info, kishacreateUser+importCredentialkupandikiza admin haribifu wakati thread yenye kipaumbele inapigwa.
Validating the Bug
- Unganisha JDWP (
-agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n) au hooks za debugging zinazofanana ili kutazama yaliyomo yaThreadLocalkabla na baada ya kila mwito, ukithibitisha kuwa ombi lisilo na uthibitisho lilirithiSubjectya administrator iliyotangulia. - Katika appliances za production unaweza pia kuingiza instrumentation kwa JFR au BTrace ili kutoa dump ya
SubjectHolder.getSubject()kwa kila request, ukihakikisha reuse bila header.
References
- Synacktiv – ActivID authentication bypass (HID-PSA-2025-002)
- HID Global – Product Security Advisory HID-PSA-2025-002 SOAP-API Authentication Bypass
- Synacktiv – ActivID administrator account takeover: the story behind HID-PSA-2025-002
- PortSwigger – Wsdler (WSDL parser) extension
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.


