Esecuzione di Apache come servizio di sistema su Windows 2003 R2 a 64 bit

1

Cercando di dimostrare il mio punto, che eseguire Apache con il modulo PHP5 come servizio di Windows non è sicuro.

Tutto quello che ho avuto modo di dimostrare - l'accesso FTP ad un sito web interno. Quindi quello che ho fatto - ho caricato file test.php con contenuto:

<?php
  system('whoami'); // output: nt authority\system
  file_put_contents('C:\test.txt', 'this server is hacked');
  echo file_get_contents('C:\test.txt'); // output: this server is hacked
  system('ping 127.0.0.1'); // Ping output: 4 packets sent, 4 received
  system('net stop apache2.2'); // No Output
  system('shutdown /r /f /t 1'); // No Output
?>

Quindi premo il browser all'indirizzo: http://10.0.0.254/test.php

Tutti i comandi eseguiti, eccetto shutdown e net stop.

Le configurazioni di Windows, Apache e PHP sono predefinite.

È vero che con Windows + Apache + PHP è già disponibile, abbastanza sicuro dall'esecuzione di comandi di sistema importanti come l'arresto?

    
posta Alex G 19.10.2012 - 02:35
fonte

2 risposte

2

La migliore soluzione a questo problema è eseguire PHP tramite IIS isolato che viene gestito con il modulo fastcgi.

Se vuoi Apache, in Windows, puoi creare un nuovo utente locale e non metterlo in alcun gruppo, e su NTFS puoi aggiungere permessi per leggere i file php in docroot, così come tutto il resto che httpd usa come php e config file.

Per eseguire apache da qualsiasi altro utente, puoi cambiarlo in "servizi", o usare la riga di comando "runas".

Puoi anche provare a usare gruppi esistenti, come "utenti", così il php non sarà in grado di scrivere in c: \, ma sarà in grado di avviare app, ma non sulla console utente, ma è proprio ( viene reindirizzato se è avviato come servizio).

    
risposta data 19.10.2012 - 03:46
fonte
5

Che il motore PHP venga eseguito come utente con alcuni privilegi estesi non è "insicuro" da solo. Dipende dal contesto. Se un utente malintenzionato può indurre Apache / PHP a eseguire comandi arbitrari autonomamente, allora già sono in guai piuttosto profondi: questo è sufficiente per accedere a qualunque dato il codice del sito utilizza, per modificare il sito in modo da ingannare altri utenti del sito o per fungere da relay per un altro attacco su altri siti. Dare all'attaccante un accesso più esteso alla macchina locale aggiunge la beffa al danno, ma questo non è il problema più grande in una situazione del genere.

L'esecuzione di Apache / PHP come utente con privilegi ridotti è una buona idea, ovviamente - ma credere che ciò accetterebbe sicurezza non lo è. È solo contenimento dei danni . Impedisce solo a un utente malintenzionato che ha già rilevato il tuo sito, di prendere il controllo della macchina fisica (o, almeno, di occuparsene troppo facilmente - i buchi di escalation dei privilegi locali sono piuttosto comuni in ogni caso).

    
risposta data 19.10.2012 - 14:50
fonte

Leggi altre domande sui tag