PHP - RCE abusing object creation: new $_GET["a"]($_GET["b"])
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Hii ni kwa kifupi muhtasari wa https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/
Uundaji wa vitu vipya vya kiholela, kama new $_GET["a"]($_GET["a"])
, unaweza kusababisha Utekelezaji wa Kode ya K remote (RCE), kama ilivyoelezwa katika andika. Hati hii inasisitiza mikakati mbalimbali za kufikia RCE.
Sintaksia new $a($b)
inatumika kuunda kitu ambapo $a
inawakilisha jina la darasa na $b
ni hoja ya kwanza iliyopitishwa kwa mjenzi. Vigezo hivi vinaweza kupatikana kutoka kwa ingizo la mtumiaji kama GET/POST, ambapo vinaweza kuwa nyuzi au orodha, au kutoka JSON, ambapo vinaweza kuonekana kama aina nyingine.
Fikiria kipande cha msimbo kilichopo hapa chini:
Katika hali hii, kuweka $a
kuwa App
au App2
na $b
kuwa amri ya mfumo (mfano, uname -a
) kunasababisha utekelezaji wa amri hiyo.
Mifumo ya Autoloading inaweza kutumika vibaya ikiwa hakuna madarasa kama hayo yanayopatikana moja kwa moja. Mifumo hii inasababisha madarasa kupakuliwa moja kwa moja kutoka kwa faili inapohitajika na inafafanuliwa kwa kutumia spl_autoload_register
au __autoload
:
The behavior of autoloading varies with PHP versions, offering different RCE possibilities.
Kukosa madarasa ya kawaida au autoloaders, madarasa ya msingi ya PHP yanaweza kutosha kwa RCE. Idadi ya madarasa haya inatofautiana kati ya 100 hadi 200, kulingana na toleo la PHP na nyongeza. Yanweza kuorodheshwa kwa kutumia get_declared_classes()
.
Mifano ya wajibu inaweza kutambuliwa kupitia API ya reflection, kama inavyoonyeshwa katika mfano ufuatao na kiungo https://3v4l.org/2JEGF.
RCE kupitia mbinu maalum inajumuisha:
Darasa la SplFileObject
linawezesha SSRF kupitia wajibu wake, likiruhusu muunganisho na URL yoyote:
SSRF inaweza kusababisha mashambulizi ya deserialization katika toleo la PHP kabla ya 8.0 kutumia itifaki ya Phar.
Mjenzi wa darasa la PDO unaruhusu muunganisho na hifadhidata kupitia nyuzi za DSN, ambayo inaweza kuwezesha uundaji wa faili au mwingiliano mwingine:
Matoleo ya PHP hadi 5.3.22 na 5.4.12 yalikuwa na hatari ya mashambulizi ya XXE kupitia waumbaji wa SoapClient
na SimpleXMLElement
, kulingana na toleo la libxml2.
Katika uchambuzi wa mtegemeo wa mradi, iligundulika kwamba Imagick inaweza kutumika kwa utendaji wa amri kwa kuunda vitu vipya. Hii inatoa fursa ya kutumia udhaifu.
Uwezo wa VID parser wa kuandika maudhui kwenye njia yoyote iliyotolewa katika mfumo wa faili ulitambuliwa. Hii inaweza kusababisha kuwekwa kwa shell ya PHP katika saraka inayoweza kufikiwa mtandaoni, ikipata Remote Code Execution (RCE).
Imepangwa kwamba PHP inahifadhi faili zilizopakiwa kwa muda katika /tmp/phpXXXXXX
. VID parser katika Imagick, ikitumia protokali ya msl, inaweza kushughulikia wildcards katika njia za faili, ikirahisisha uhamishaji wa faili ya muda kwenda mahali palipochaguliwa. Njia hii inatoa mbinu ya ziada ya kufikia uandishi wa faili bila mipaka ndani ya mfumo wa faili.
Mbinu iliyoelezwa katika andiko la asili inahusisha kupakia faili zinazochochea kuanguka kwa seva kabla ya kufutwa. Kwa kutumia brute-force jina la faili ya muda, inakuwa inawezekana kwa Imagick kutekeleza msimbo wa PHP bila mipaka. Hata hivyo, mbinu hii iligundulika kuwa na ufanisi tu katika toleo la zamani la ImageMagick.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)