Bypass safe mode in PHP

3

Sto facendo test di penetrazione su un sito Web fittizio. Su questo sito ho potuto caricare una shell PHP, ma ho due problemi:

  • PHP safe-mode è abilitato
  • Ho solo privilegi bassi

C'è qualche metodo con il quale posso bypassare la modalità sicura di PHP e ottenere il permesso di scrittura in modo da poter penetrare completamente?

    
posta codeur 14.02.2017 - 12:21
fonte

1 risposta

2

La modalità safe_mode di PHP è una funzionalità deprecata, pensata per risolvere il problema di sicurezza del server condiviso a livello di PHP. Questa non è mai stata una buona idea, e quindi la funzione è stata deprecata e rimossa a partire da PHP 5.4 (il tuo obiettivo sta eseguendo PHP 5.3.10 che è antico). Questa risposta dimostrerà perché safe_mode non è stata una grande idea per cominciare e conterrà due parti - aggirando PHP safe_mode e elevando i privilegi. Senza ulteriori indugi: mettiamoci al lavoro.

Bypassing safe_mode

Quando ci si avvicina al problema safe_mode la prima cosa importante da notare è che non esiste una soluzione canonica, e in realtà dipende dalla configurazione del target (e un po 'di fortuna). Di seguito è riportata una panoramica delle tecniche che potrebbero funzionare.

  • pcntl_exec - Se hai un po 'di fortuna, l'estensione PCNTL è abilitato. Se lo è, puoi usarlo per ottenere l'esecuzione del codice, poiché non è influenzato dalla direttiva safe_mode. Per verificare se è abilitato puoi eseguire il seguente comando: echo function_exists('pcntl_exec'); .
  • Il trucco LD_PRELOAD - Un fatto poco noto è che mentre safe_mode limita le variabili di ambiente accessibili - affinché questa impostazione sia efficace deve essere impostata la direttiva safe_mode_allowed_env_vars (puoi controllarne il valore eseguendo var_dump(ini_get('safe_mode_allowed_env_vars')); se una stringa vuota viene restituito sei fortunato: ciò significa che le restrizioni safe_mode sull'ambiente vengono effettivamente disabilitate e il trucco LD_Preload può essere utilizzato come descritto qui per ottenere l'esecuzione del codice bypassando la safe_mode.
  • Un'altra opzione per bypassare safe_mode è caricare una shell che utilizza la tecnologia lato server disponibile sulla destinazione ed è diversa da PHP. Il candidato più comune è Perl, che hai già menzionato non è disponibile. Puoi anche controllare se Python o Ruby sono disponibili. Se nessuno dei due è disponibile, è il momento di tirare fuori il tuo shell SSI e controlla se funzionerà .
  • Ultimo ma non meno importante - sfruttare una vulnerabilità che consente l'esecuzione del codice al di fuori dell'interprete PHP. Ci sono molte di queste vulnerabilità che sono state pubblicate di recente, e poiché il tuo obiettivo sta eseguendo una vecchia versione - è molto probabile che riuscirai a trovare una vulnerabilità come CVE-2016-9137 che puoi sfruttare per ottenere l'esecuzione del codice.

Elevazione di privilegio

Se hai un po 'di fortuna, la mancanza di privilegi di scrittura è l'effetto della direttiva safe_mode, e quindi, poiché viene bypassata, ora hai i permessi di scrittura. Ma se non si ha questa fortuna, è necessario aumentare i privilegi a livello di sistema operativo. Ci sono un paio di modi per andare in giro per eseguire questa escalation:

  • La vecchia scuola - trova qualche SUID rimasto nel sistema e sfruttalo per ottenere i privilegi di root (che ti permetteranno, tra le altre cose, di avere un permesso di scrittura ovunque tu voglia). Un bel resoconto dimostrativo di tale sforzo può essere trovato here .
  • Usa un exploit del kernel - dallo screenshot nella tua domanda sembrerebbe che il tuo target usi un vecchio piuttosto vecchio, il che significa che potrebbe essere vulnerabile a un exploit del kernel pubblico come DirtyCOW o qualche altro exploit
  • .

Congratulazioni se hai seguito fino qui, e tutto ha funzionato bene fino a questo punto - ora hai completamente compromesso il tuo obiettivo e hai una shell di livello root, è il momento per un write-up. Inoltre, con tutte le tue nuove conoscenze acquisite, dovresti ricordare: con un grande potere derivano grandi responsabilità.

    
risposta data 22.07.2017 - 22:11
fonte

Leggi altre domande sui tag