Java DNS Deserialization, GadgetProbe and Java Deserialization Scanner
Ombi la DNS kwenye ufichuzi
Darasa la java.net.URL
linatekeleza Serializable
, hii inamaanisha kuwa darasa hili linaweza kuserilishwa.
Darasa hili lina tabia ya kushangaza. Kutoka kwa hati ya maelezo: "Wenyeji wawili wanachukuliwa kuwa sawa ikiwa majina yote ya mwenyeji yanaweza kutatuliwa kuwa anwani sawa za IP".
Kisha, kila wakati kitu cha URL kinaita moja kwa moja ya kazi sawa
au hashCode
ombi la DNS kupata Anwani ya IP itatumwa.
Kuita kazi hashCode
kutoka kwa kitu cha URL ni rahisi sana, ni vya kutosha kuingiza kitu hiki ndani ya HashMap
ambayo itadeserialized. Hii ni kwa sababu mwishoni mwa kazi ya readObject
kutoka kwa HashMap
msimbo huu unatekelezwa:
Hii ni kwenda kutekeleza putVal
na kila thamani ndani ya HashMap
. Lakini, muhimu zaidi ni wito wa hash
na kila thamani. Hii ni nambari ya kazi ya hash
:
Kama unavyoweza kushuhudia, wakati wa kudezirializa HashMap
kazi ya hash
itatekelezwa kwa kila kitu na wakati wa utekelezaji wa hash
itatekelezwa .hashCode()
ya kitu. Kwa hivyo, ikiwa unadezirializa HashMap
yenye kitu cha URL, kitu cha URL kitatekeleza .hashCode()
.
Sasa, tuchunguze nambari ya URLObject.hashCode()
:
Kama unavyoweza kuona, wakati URLObject
inatekeleza .hashCode()
inaitwa hashCode(this)
. Kuendelea unaweza kuona nambari ya kazi hii:
Unaweza kuona kwamba getHostAddress
inatekelezwa kwa kikoa, kuzindua ombi la DNS.
Hivyo, darasa hili linaweza kutumiwa vibaya ili kuzindua ombi la DNS ili kuonyesha kwamba kuserilishwa kunawezekana, au hata kuvuja taarifa (unaweza kuongeza kama subdomain matokeo ya utekelezaji wa amri).
Mfano wa msimbo wa mzigo wa URLDNS
Unaweza kupata msimbo wa mzigo wa URLDNS kutoka ysoserial hapa. Hata hivyo, kwa lengo la kufanya iwe rahisi kuelewa jinsi ya kuandika msimbo huo, nimeunda Msimbo wa Mfano wangu (ukizingatia ule kutoka ysoserial):
Taarifa zaidi
Katika wazo la awali, mzigo wa makusanyo ya kawaida ulibadilishwa ili kufanya uchunguzi wa DNS, hii ilikuwa isiyoaminika kuliko njia iliyopendekezwa, lakini hii ni chapisho: https://www.gosecure.net/blog/2017/03/22/detecting-deserialization-bugs-with-dns-exfiltration/
GadgetProbe
Unaweza kupakua GadgetProbe kutoka kwa Duka la Programu la Burp Suite (Extender).
GadgetProbe itajaribu kugundua ikiwa baadhi ya darasa za Java zipo kwenye darasa la seva ili ujue ikiwa ina kasoro ya baadhi ya shambulio lililojulikana.
Inafanyaje kazi
GadgetProbe itatumia mzigo sawa wa DNS wa sehemu iliyopita lakini kabla ya kutekeleza uchunguzi wa DNS itajaribu kudezilia darasa la kiholela. Ikiwa darasa la kiholela lipo, ombi la DNS litatumiwa na GadgetProbe itaandika kuwa darasa hili lipo. Ikiwa ombi la DNS halijatumwa, hii inamaanisha kuwa darasa la kiholela halikudeziliwa kwa mafanikio hivyo linaweza kutokuwepo au halitumiki/kutumiwa vibaya.
Ndani ya github, GadgetProbe ina orodha ya maneno na darasa za Java za kupimwa.
Taarifa Zaidi
Java Deserialization Scanner
Scanner huyu anaweza kupakuliwa kutoka kwa Duka la Programu la Burp (Extender). Upanuzi una uwezo wa kupita na uwezo wa kitendo.
Kupita
Kwa chaguo-msingi inachunguza kwa upande maombi yote na majibu yaliyotumwa kutafuta baiti za uchawi zilizosanidiwa za Java na itatoa onyo la kasoro ikiwa itapatikana:
Kitendo
Upimaji wa Kibinafsi
Unaweza kuchagua ombi, bofya kulia na Tuma ombi kwa DS - Upimaji wa Kibinafsi
.
Kisha, ndani ya Kichupo cha Scanner cha Kudezilia --> Kichupo cha upimaji wa kibinafsi unaweza kuchagua sehemu ya kuingiza. Na anzisha upimaji (Chagua shambulio sahihi kulingana na usimbaji unaotumiwa).
Hata kama hii inaitwa "Upimaji wa Kibinafsi", ni kielelezo cha kiotomatiki. Itachunguza moja kwa moja ikiwa kudezilia kuna kasoro kwa mzigo wowote wa ysoserial ikichunguza maktaba zilizopo kwenye seva ya wavuti na itaonyesha zile zinazoweza kuathiriwa. Ili kuchunguza maktaba zinazoweza kuathiriwa unaweza kuchagua kuzindua Javas Sleeps, sleeps kupitia matumizi ya CPU, au kutumia DNS kama ilivyotajwa hapo awali.
Kutumia
Marafiki umetambua maktaba inayoweza kuathiriwa unaweza kutuma ombi kwa Kichupo cha Kutumia. Katika kichupo hiki unapaswa kuchagua tena sehemu ya kuingiza, na andika maktaba inayoweza kuathiriwa unayotaka kuunda mzigo kwa, na amri. Kisha, bonyeza kitufe sahihi cha Shambulio.
Taarifa ya Java Deserialization DNS Exfil
Fanya mzigo wako utekeleze kitu kama hiki:
Taarifa Zaidi
Last updated