Qualsiasi vulnerabilità di sicurezza in PHP fsockopen

2

Sto valutando la sicurezza di un portale web per un cliente e ho trovato una vulnerabilità.

Nel codice PHP, il codice analizza un URL fornito dall'utente, trova il nome host, quindi esegue questa operazione:

fsocketopen ("http: //" $ URL_HOST ", 80); fwrite ("GET /".$ URL_URL);

Oltre a fare server per fare richieste HTTP (potenziale spamming o fare server per fare richieste HTTP ecc.) ci sono altri potenziali bug associati a questo? Controllo l'intero URL e posso fornire un hostname arbitrario + URL + porta (dal suo vecchio PHP, usa ":" dopo l'URL per la porta invece della sua porta hardcoded)

    
posta GMX Rider 15.01.2018 - 20:26
fonte

1 risposta

1

Dato che hai il pieno controllo su entrambe le variabili e le porte che vengono aperte, la soluzione migliore per fare di più con questa vulnerabilità è tenere presente che molti protocolli Internet sono semplici comandi di testo inviati su un socket aperto. Il significato di questo fatto è che l'invio di una richiesta HTTP a un server SMTP aperto può ingannare il server SMTP nell'invio di un'e-mail. Di conseguenza, Chrome blocca qualsiasi tentativo di accedere alla porta 25 tramite il browser. Ecco un buon run-down:

link

L'importanza qui è che puoi utilizzare il server vulnerabile non solo per chiamare siti HTTP arbitrari, ma puoi anche utilizzarlo per inviare spam ai server SMTP (con conseguente invio di email effettive) e potenzialmente altri servizi connessi a Internet.

Certo, questo non è un grande salto da dove sei già, ma non sai mai quale più divertente potrebbe darti. Se, ad esempio, questo server è considerato affidabile per l'invio di e-mail, è possibile che sia possibile inviare e-mail come società senza che vengano filtrate come spam. Non è una cosa da poco.

È possibile che il http codificato nella chiamata fsocketopen possa essere sufficiente per uccidere l'idea di invio di email, ma vale sicuramente la pena provarlo. Ancora una volta, non c'è davvero nulla di "speciale" per differenziare le richieste HTTP dalle richieste SMTP, quindi se si riesce a trovare e connettersi a un server tramite la porta appropriata, il fatto che PHP lo consideri una richiesta http non importa se il il server remoto accetta la tua connessione.

    
risposta data 15.01.2018 - 21:10
fonte

Leggi altre domande sui tag