PHP - RCE abusing object creation: new $_GET["a"]($_GET["b"])
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Dit is basies 'n opsomming van https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/
Die skepping van nuwe arbitrêre objek, soos new $_GET["a"]($_GET["a"])
, kan lei tot Remote Code Execution (RCE), soos in 'n skrywe uiteengesit. Hierdie dokument beklemtoon verskeie strategieë om RCE te bereik.
Die sintaksis new $a($b)
word gebruik om 'n objek te instantiëer waar $a
die klasnaam verteenwoordig en $b
die eerste argument is wat aan die konstruktors oorhandig word. Hierdie veranderlikes kan afkomstig wees van gebruikersinsette soos GET/POST, waar hulle moontlik strings of arrays is, of van JSON, waar hulle as ander tipes kan voorkom.
Oorweeg die kode-snippet hieronder:
In hierdie geval lei die instelling van $a
na App
of App2
en $b
na 'n stelselaanroep (bv. uname -a
) tot die uitvoering van daardie aanroep.
Outomatiese laai funksies kan uitgebuit word as daar geen sulke klasse direk toeganklik is nie. Hierdie funksies laai outomaties klasse vanaf lêers wanneer nodig en word gedefinieer met behulp van spl_autoload_register
of __autoload
:
Die gedrag van outomatiese laai varieer met PHP weergawes, wat verskillende RCE moontlikhede bied.
In die afwesigheid van pasgemaakte klasse of outomatiese laaiers, kan ingeboude PHP klasse voldoende wees vir RCE. Die aantal van hierdie klasse wissel tussen 100 en 200, gebaseer op die PHP weergawe en uitbreidings. Hulle kan gelys word met get_declared_classes()
.
Konstruktors van belang kan geïdentifiseer word deur die refleksie API, soos in die volgende voorbeeld en die skakel https://3v4l.org/2JEGF.
RCE via spesifieke metodes sluit in:
Die SplFileObject
klas stel SSRF in staat deur sy konstruktor, wat verbindings na enige URL toelaat:
SSRF kan lei tot deserialisering aanvalle in weergawes van PHP voor 8.0 wat die Phar protokol gebruik.
Die PDO klas konstrukteur laat verbindings toe tot databasisse via DSN stringe, wat moontlik lêer skep of ander interaksies moontlik maak:
Weergawes van PHP tot 5.3.22 en 5.4.12 was vatbaar vir XXE-aanvalle deur die SoapClient
en SimpleXMLElement
konstruktors, afhangende van die weergawe van libxml2.
In die analise van 'n projek se afhanklikhede, is ontdek dat Imagick benut kan word vir opdrag uitvoering deur nuwe voorwerpe te instansieer. Dit bied 'n geleentheid om kwesbaarhede te benut.
Die VID parser vermoë om inhoud na enige gespesifiseerde pad in die lêerstelsel te skryf, is geïdentifiseer. Dit kan lei tot die plasing van 'n PHP-shel in 'n web-toeganklike gids, wat Remote Code Execution (RCE) bereik.
Daar word opgemerk dat PHP tydelik opgelaaide lêers in /tmp/phpXXXXXX
stoor. Die VID parser in Imagick, wat die msl protokol gebruik, kan wildcard in lêerpaaie hanteer, wat die oordrag van die tydelike lêer na 'n gekose ligging vergemaklik. Hierdie metode bied 'n addisionele benadering om arbitrêre lêer skryf binne die lêerstelsel te bereik.
'n Metode wat in die oorspronklike skrywe beskryf word, behels die oplaai van lêers wat 'n bedienerkragopval veroorsaak voordat dit verwyder word. Deur die naam van die tydelike lêer te brute-force, word dit moontlik vir Imagick om arbitrêre PHP-kode uit te voer. Hierdie tegniek is egter gevind om slegs effektief te wees in 'n verouderde weergawe van ImageMagick.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)