Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#731
Asi es:

[root@machine ~]# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

# Disable IPv6 autoconf
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv4.ip_forward = 1
[root@machine ~]# cat /proc/sys/net/ipv4/ip_forward
1


He intentado conectarme desde el exterior y nada.
#732
No, el servidor host es un servidor dedicado en usa, yo estoy en chile xD
#733
En sus tiempos encontré cosas en google, me pusieron en su muro pero en esos tiempos aun no daban nada salvo las gracias :p también aparecen algunos reportes mios en el changelog de joomla 5, algunos en smf cuando hicimos un barrido de vulns con sdc, he reportado cosas a wordpress, pero jamas me han dado nada, la única ves que si me dieron algo fue un puesto de trabajo cuando encontré una vuln en un sitio bancario xD

Hace unos meses atrás encontré un bug para salir de la sandbox de gecko con un bug en javascript pero jamas me tomaron en cuenta cuando lo reporté, finalmente lo solucionaron y no me dieron ni las gracias, también encontré algunos xss en facebook pero tampoco me dieron nada ni me dieron bola, encontré un error de diseño en el sistema de registros spf, lo reporté a gg pero tampoco me dieron bola, desde entonces que ya no tengo interes en participar en esas cosas porque finalmente es tiempo perdido, desgastas mucho tiempo encontrando vulnerabilidades que al final no te dan o si te dan no alcanza ni para el tiempo que estuviste buscandolo. Por eso ahora los bugs que busco son de los clientes de la compañía donde estoy, ellos si pagan bien xD y puedes vivir de eso.
#734
Hola, actualmente tengo un centos 7 como host y una maquina virtual en kvm (virsh) también con centos 7, en la maquina virtual instalé un openvpn en modo tun por udp y quiero que sea accesible desde internet, por lo cual se me ocurrió que debo publicar el puerto udp:1194 usando el host principal.

He intentado con iptables y he hecho esto:

Citariptables -t nat -A PREROUTING -p udp --dport 1194 -j DNAT --to "192.168.122.2:1194"
iptables -I FORWARD -d "192.168.122.2/32" -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT

Hasta acá todo bien, hice correr el openvpn, el puerto se abre sin problemas, he testeado desde el host principal con:
Citar$ nc -v -u 192.168.122.2 1194

Y abre correctamente, ahora he probado el ruteo:
Citar$ nc -v -u 127.0.0.1 1194

y también conecta correctamente, el problema viene ahora, que quiero conectarme desde el exterior y no puedo, desde mi pc ejecuto:
Citar$ nc -v -u sitio.com 1194

Y no me conecta, por lo cual supuse que iptables me estaba restringiendo y he habilitado la apertura del puerto:
Citar$ iptables -A INPUT -i eth0 -p udp --destination-port 1194 -j ACCEPT

Pero aun sigo sin poder acceder y no se que pueda estar sucediendo :( ¿Qué hice mal?
#735
Por otro lado:
https://github.com/ethicalhack3r/DVWA/blob/master/vulnerabilities/sqli/source/high.php

<?php
if( isset( $_SESSION 'id' ] ) ) {
// Get input
$id $_SESSION'id' ];
// Check database
$query  "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
$result mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>Something went wrong.</pre>' );
// Get results
while( $row mysqli_fetch_assoc$result ) ) {
// Get values
$first $row["first_name"];
$last  $row["last_name"];
// Feedback for end user
$html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
}
((is_null($___mysqli_res mysqli_close($GLOBALS["___mysqli_ston"]))) ? false $___mysqli_res);
}
?>


La inyección va en el id de sesión, supongo que en algún lado tendrás que modificar tu id de sesión para lanzar la inyección, pero por lo menos en ningún lado utiliza mysql_real_escape_string.

https://github.com/ethicalhack3r/DVWA/blob/master/vulnerabilities/sqli/session-input.php

<?php
define
'DVWA_WEB_PAGE_TO_ROOT''../../' );
require_once 
DVWA_WEB_PAGE_TO_ROOT 'dvwa/includes/dvwaPage.inc.php';
dvwaPageStartup( array( 'authenticated''phpids' ) );
$page dvwaPageNewGrab();
$page'title' ] = 'SQL Injection Session Input' $page'title_separator' ].$page'title' ];
if( isset( 
$_POST'id' ] ) ) {
$_SESSION'id' ] =  $_POST'id' ];
//$page[ 'body' ] .= "Session ID set!<br /><br /><br />";
$page'body' ] .= "Session ID: {$_SESSION'id' ]}<br /><br /><br />";
$page'body' ] .= "<script>window.opener.location.reload(true);</script>";
}
$page'body' ] .= "
<form action=\"#\" method=\"POST\">
<input type=\"text\" size=\"15\" name=\"id\">
<input type=\"submit\" name=\"Submit\" value=\"Submit\">
</form>
<hr />
<br />
<button onclick=\"self.close();\">Close</button>"
;
dvwaSourceHtmlEcho$page );
?>


Basta con enviar vía post data el id con inyección sql y listo.
#736
Pues todo depende de como esté hecha la consulta sql, por ejemplo si usas mysql_real_escape_string mas stripslashes en una consulta donde el valor es numérico, puedes inyectar con espacios en blanco sin usar comillas usando valores dword en hexadecimal.

Por ejemplo:
<?php $query 'select * from users where id = '.mysql_real_escape_string(stripslashes($_GET['id']));

El valor numérico no está encerrado en comillas por lo cual puedes escapar así:
-1 union all select 1,2,@@version -- -

Y si te fijas, ninguno de los carácteres de la inyección necesitan ser escapados por lo cual te bypaseas todas las funciones juntas.

Pero como te dije antes, todo depende de la consulta sql, este es solo un posible escenario.

Otro escenario es que las funciones estén invertidas, por ejemplo:
<?php $query 'select * from users where id = '.stripslashes(mysql_real_escape_string($_GET['id']));

En este caso stripslashes puede invalidar la secuencia de escape de mysql "\", por ejemplo, cuando insertamos una comilla, mysql lo asigna con backslash \', de esta manera queda escapado, pero si le eliminas el backslash entonces mysql_real_escape:string es invalidado y la inyección debiera pasar de manera simple y sin mayores problemas.

En php puedes dar como segundo argumento al mysql_real_escape_string el handler de la conexión mysql, digamos que la conexión esté configurada de manera dinámica según la codificación de caracteres entre el navegador y el servidor, entonces le pasas una cabecera en utf-7 y te bypaseas el filtro usando comillas.

Hay muchas maneras de evadir mysql_real_escape_string(), todo depende de como esté implementado.

Saludos.
#737
Hola, buenas nata3

Pues el problema es que cuando deinstalas virtualbox de la manera tradicional no funciona al 100%, quedan residuos en archivos de configuraciones, especialmente en el archivo de carga del kernel, por eso se edita y se elimina solo si está presente.

Mira, este es mi archivo /etc/modules :
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lp
# vboxvideo


Si te fijas, en la última línea de abajo donde dice vboxvideo está comentada, con eso el módulo de video de virtualbox no se carga en el arranque del kernel y de esa manera inicia de manera limpia.

Lo he agregado al primer post.

Saludos.
#738
Seguridad / Re: Defense Main in the middle
5 Noviembre 2016, 01:52 AM
jajajajaja vaya engel lex, te la has liado por no ver los videos antes xD

Pues si, es bastante mas segura pero aun tiene el mismo problema de diseño que una conexión normal y de todas maneras se puede hacer un MITM, en tu esquema falta un punto muy importante y es el punto de conexión entre el pc y el router y del router hacia internet hasta el servidor y del servidor a google (claro, entre el servidor y google hay un switch, firewall, etc), el tema no es que vamos a vulnerar la vpn.

Si te fijas, has tratado de levantar un servicio DNS que no te ha funcionado y tuviste que utilizar los dns manualmente de google, eso sucede porque has pasado el 100% del tráfico por la vpn de manera inclusiva y no exclusiva, cuando configuras openvpn de manera exclusiva usas el servicio dns de tu proveedor de isp y todo el resto pasa por la vpn o solo el rango de ip que tu quieres.

En este caso digamos que estoy en tu red pero tu estas pasando por tu vpn, pero no estas usando los dns del servidor sino de google, por lo cual basta con spoofear el router y cuando quieras ingresar a un sitio de manera segura por primera ves lo que hará tu navegador será consultar el registro A del servidor DNS, en ese momento nuestro servidor de ataque va a servir su propio servicio de DNS con bindns y va a decir.... yo soy 8.8.8.8 y digo que elbanco.com ahora tiene la ip x.x.x.x la cual es la ip del servidor atacante, entonces despues de eso restaura la conexión y suelta al router que estaba cautivo y cuando el navegador intente conectarse a elbanco.com ya tendrá en su caché la dirección ip del atacante y en ves de entrar al servidor del banco estará entrando al servidor del atacante, pero... entra por http o https? como lo hace para validar el certificado?, pues la mayoría de los portales bancarios no utilizan https en el front, solo en el login, asi que si el atacante simula el sitio del banco podrá crear un login sin ssl o es mas, si la cookie del banco no tiene configurado el flag "secure" entonces la cookie se va a enviar sin cifrar y el atacante con esa cookie podrá capturar la sesión de la victima y lo9guearse como el y tomar su sesión bancaria.

Estos casos son bastantes remotos porque el usuario debiera fijarse en el ssl antes de continuar, pero de todas maneras el MITM ya está efectuado porque la vpn no se ejecuta dentro de una red privada sino a traves de una extranet por internet, por lo cual, sigue siendo interceptable en ambos extremos.

Prevenir eficazmente el MITM no es tan facil como se aparenta, por ejemplo dell tiene una vpnssl de hardware muy buena de 1u el cual previene alguno de estos tipos de ataque, esto es una tarea mas que nada de parte del router, el prevenir la compartición de direcciones mac y modo promiscuo, los routers de casa no estan diseñados para eso, por eso en las buenas practicas se recomienda siempre verificar la huella digital de todos los certificados ssl antes de ingresar a un sitio y jamas aceptar certificados por revocación o expirados, hay que tener cuidado con el tipo de cifrado que no sea vulnerable a fuerza bruta como md5, rsa de 1024 hacia abajo, tls 1.0, diffie hellman, etc.
#739
Seguridad / Re: Defense Main in the middle
2 Noviembre 2016, 17:25 PM
Usar SSL no es una solución para prevenir el capturado de tráfico a traves de un MITM, el atacante basta con que spofee el router y cuando la persona ingrese al servidor del atacante este entregue un certificado inválido y cuando el navegador vaya a consultar el certificado a alguna entidad certificadora el equipo del atacante le dirá que el certificado es válido y listo, ahora hechas a correr wireshark y le das el certificado ssl inválido que generaste y con eso ya te pueden capturar el tráfico cifrado.

Prevenir el MITM puede ser mas complejo de lo que se aparenta.
#740
Hola, tengo un controlador y un template, estoy usando Spring boot y Thymeleaf.

Por lo que yo entiendo, para poder manipular formularios debo crear un modelo y este enviarselo como objeto al formulario, hasta aca todo bien, el problema está en la petición post ya que por un lado recibo el modelo como argumento de la función pero ya no tengo el modelo para poder enviar datos al template.

Controlador:
Código (java) [Seleccionar]
@Controller
public class Main {

    @GetMapping("/")
    public String httpGet(Model model){

        FormModel form_model = new FormModel();
        model.addAttribute("form_model", form_model);
        model.addAttribute("demo", "abc");

        return "main_template";
    }

    @PostMapping("/")
    public String httpPost(@ModelAttribute ModelForm form_model){

        FormModel form_model = new FormModel();

        // <-- Cómo envío model al template si no tengo model?
        model.addAttribute("form_model", form_model);
        model.addAttribute("demo", "abc");

        return "main_template";
    }
}


Mi template:
Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Demo</title>
    </head>
    <body>
        <form class="form-signin" action="#" method="post" th:action="@{/}" th:object="${form_model}">
            <input th:field="*{email}" required="required" type="email" />
            <input th:field="*{password}" type="password" />
            <p th:text="${demo}"></p>
            <button type="submit">Submit</button>
        </form>
    </body>
</html>


Lo que yo entiendo acá: https://spring.io/guides/gs/validating-form-input/ es que primero tengo una funcion para recibir la petición get, como argumento viene un objeto llamado model el cual se encarga de enviar variables al template, como por ejemplo el objeto encargado del formulario, despues en la petición post pasa un solo argumento de modelo el cual es el objeto del formulario mas un validador, hasta acá todo bien, digamos que hubo un error en el formulario y necesito volver a cargar el formulario, necesito pasar otraves el objeto, pero no tengo como mandarlo porque no tengo el objeto llamado model y tampoco puedo iniciarlo desde la función, entonces que hago?

¿cómo puedo recibir el modelo del formulario en una petición post y al mismo tiempo comunicarme con el contenido en html enviando variables?