disable_functions bypass - dl function
Belangrike nota:
dl
is 'n PHP-funksie wat gebruik kan word om PHP-uitbreidings te laai. As die funksie nie gedeaktiveer is nie, kan dit misbruik word om disable_functions
te omseil en arbitrêre opdragte uit te voer.
Dit het egter 'n paar streng beperkings:
Die
dl
-funksie moet teenwoordig wees in die omgewing en nie gedeaktiveer wees nie.Die PHP-uitbreiding moet gekompileer wees met dieselfde hoofweergawe (PHP API-weergawe) wat die bediener gebruik (jy kan hierdie inligting sien in die uitset van phpinfo).
Die PHP-uitbreiding moet geleë wees in die gids wat gedefinieer word deur die
extension_dir
-riglyn (jy kan dit sien in die uitset van phpinfo). Dit is baie onwaarskynlik dat 'n aanvaller wat probeer om die bediener te misbruik, skryftoegang tot hierdie gids sal hê, so hierdie vereiste sal waarskynlik voorkom dat jy hierdie tegniek kan misbruik.
As jy aan hierdie vereistes voldoen, lees voort na die berig https://antichat.com/threads/70763/ om te leer hoe om disable_functions
te omseil. Hier is 'n opsomming:
Die dl-funksie word gebruik om PHP-uitbreidings dinamies tydens skripsuitvoering te laai. PHP-uitbreidings, tipies geskryf in C/C++, verbeter PHP se funksionaliteit. Die aanvaller besluit om 'n aangepaste PHP-uitbreiding te skep om stelselopdragte uit te voer nadat hy besef het dat die dl
-funksie nie gedeaktiveer is nie.
Stappe geneem deur die aanvaller:
PHP-weergawe-identifikasie:
Die aanvaller bepaal die PHP-weergawe deur 'n skripsie (
<?php echo 'PHP-weergawe is '.PHP_VERSION; ?>
) te gebruik.
PHP-bronverkryging:
Laai die PHP-bron af van die amptelike PHP-webwerf of die argief as die weergawe ouer is.
Plaaslike PHP-opstelling:
Pak die spesifieke PHP-weergawe uit en installeer dit op hul stelsel.
Uitbreidingsskepping:
Bestudeer die skepping van PHP-uitbreidings en ondersoek die PHP-bronkode.
Fokus op die duplisering van die funksionaliteit van die exec-funksie wat geleë is by
ext/standard/exec.c
.
Notas vir die Kompilering van die Aangepaste Uitbreiding:
ZEND_MODULE_API_NO:
Die
ZEND_MODULE_API_NO
inbypass.c
moet ooreenstem met die huidige Zend Extension Build, wat verkry kan word met:
PHP_FUNCTION-wysiging:
Vir onlangse PHP-weergawes (5, 7, 8) mag
PHP_FUNCTION(bypass_exec)
aanpassing benodig. Die voorsiene kodefragment beskryf hierdie wysiging in detail.
Lêers vir die Aangepaste Uitbreiding:
bypass.c:
Implementeer die kernfunksionaliteit van die aangepaste uitbreiding.
php_bypass.h:
Koptekslêer, definieer uitbreidingskenmerke.
config.m4:
Word deur
phpize
gebruik om die bou-omgewing vir die aangepaste uitbreiding te konfigureer.
Die Uitbreiding Bou:
Kompilasie-opdragte:
Gebruik
phpize
,./configure
, enmake
om die uitbreiding te kompileer.Die resulterende
bypass.so
word dan in die subgids modules geplaas.
Skoonmaak:
Voer
make clean
enphpize --clean
uit na kompilasie.
Oplaai en Uitvoer op die Slagofferbediener:
Weergawekompatibiliteit:
Verseker dat die PHP API-weergawes ooreenstem tussen die aanvaller se en slagoffer se stelsels.
Uitbreiding Laai:
Maak gebruik van die
dl
-funksie en omseil beperkings deur relatiewe paaie of 'n skripsie te gebruik om die proses outomaties te maak.
Skripsie-uitvoering:
Die aanvaller laai
bypass.so
en 'n PHP-skripsie na die slagoffer se bediener.Die skripsie gebruik die
dl_local
-funksie ombypass.so
dinamies te laai en roep danbypass_exec
aan met 'n opdrag wat deur diecmd
-navraagparameter oorgedra word.
Opdraguitvoering:
Die aanvaller kan nou opdragte uitvoer deur toegang te verkry tot:
http://www.example.com/script.php?cmd=<opdrag>
Hierdie gedetailleerde deurlooptog verduidelik die proses om 'n PHP-uitbreiding te skep en te implementeer om stelselopdragte uit te voer deur die dl
-funksie te misbruik, wat idealiter gedeaktiveer moet word om sulke sekuriteitskendings te voorkom.
Last updated