Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: Pavotron en 22 Agosto 2010, 17:32 pm



Título: Pedido de Hackeo
Publicado por: Pavotron en 22 Agosto 2010, 17:32 pm
Hola a todos.

Antes que nada quiero decirles que a pesar de ser ''nuevo'' por aca siempre he visitado este foro y siempre me a sido de mucha ayuda.

Quiero contarles que soy un participante de un proyecto GNU/GPL, un juego tipo ogame que ya tiene algunos años, pero siempre tenemos problemas de seguridad; hace poco estoy probando un nuevo sistema de seguridad y espero que uds puedan ayudarme a romperlo.

La pagina es http://hackmexg.byethost33.com/ (http://hackmexg.byethost33.com/).

Espero me puedan ayudar con este tema ya que es un proyecto libre y de uso publico :)

Saludos.

pd.: Espero les guste la imagen de bienvenida dentro del juego ;)


Título: Re: Pedido de Hackeo
Publicado por: tragantras en 22 Agosto 2010, 19:54 pm
cuando dices tipo ogame te refiers a OGAME?, no? xD


Título: Re: Pedido de Hackeo
Publicado por: Dznp en 22 Agosto 2010, 20:09 pm
Me gusto la imagen principal del juego, le da un toque profesional ;-)

Ahora si, sobre el juego...
¿Vos lo codeaste? sería más fácil para mi (y para muchos) encontrar bugs viendo el codigo antes que ir testeando toda la web.

Si nos das los archivos podríamos hacer algo.


Suerte :silbar:


Título: Re: Pedido de Hackeo
Publicado por: cgvwzq en 22 Agosto 2010, 20:16 pm
Para empezar esta lleno de CSRFs... Meto una imagen en mi alianza como sigue:

Código:
[img] http://hackmexg.byethost33.com/game.php?page=logout[/img]

Y al visitarla cerrará la sesión, si se pueden poner imagenes en mensajes ya se lía parda. Y las opciones de construir edificios, destruirlos, etc, también les pasa lo mismo.

Para el resto de opciones que usan parametros vía POST, simplemente tengo que crear un script en una página externa y hacer que la visiten los usuarios para que hagan lo que uno quiera.

Edito: Si modificamos la url de la carpeta de estilos y ponemos una dirección remota, se podrían monitorear las peticiones que realice el usuario. Es un ataque más elaborado, pero factible.

Se puede inutilizar una cuenta modificando algunos campos con valores incorrectos, por ejemplo los campos de ordenación en el panel de opciones.

XSS: Y ya con esto se puede hacer cualquier cosa... Hay que ponerlo en el code de la alianza.

[img][font= onerror=foo() tr=][/font][/img]


Título: Re: Pedido de Hackeo
Publicado por: Pavotron en 22 Agosto 2010, 22:32 pm
me a sido imposible reproducir esto
Código:
 [img]http://r.i.elhacker.net/cache?url=http://hackmexg.byethost33.com/game.php?page=logout[/img]

dependerá del navegador...?

esto si
Código:
[img]http://r.i.elhacker.net/cache?url=http://[font= onerror=foo() tr=][/font][/img]

como lo fixeo...


esto como lo lograste?
Código:
Se puede inutilizar una cuenta modificando algunos campos con valores incorrectos, por ejemplo los campos de ordenación en el panel de opciones.

Muchas gracias por la mano  ;-)


Título: Re: Pedido de Hackeo
Publicado por: cgvwzq en 23 Agosto 2010, 00:04 am
En el primer caso, hay que quitar la parte del caché de elhacker.net, se pone automáticamente en este foro. En el ejemplo se destruye la sesión y por lo tante el usuario queda desconectado, pero puede extenderse a otras peticiones.

Para solucionar lo del parser del bbcode, lo mejor será que cojas algún módulo de una aplicación segura y lo implementes en tu juego.

Lo de inutilizar la cuenta, fue poniendo en las Opciones el valor -1 al parametro "Ordenar planetas por:". Si juntamos el ataque uno y este se podría inutilizar la cuenta del usuario. Ell problema esta en que comprueba la validez de algunos datos una vez modificados, y se debería hacer antes de modificarlos.


Título: Re: Pedido de Hackeo
Publicado por: toxeek en 23 Agosto 2010, 04:20 am
Citar
Para empezar esta lleno de CSRFs... Meto una imagen en mi alianza como sigue:

Código:

(http://hackmexg.byethost33.com/game.php?page=logout)


Hmmm.. eso mas que CSRF es un Open Redirect  :P


Saludos.


Título: Re: Pedido de Hackeo
Publicado por: Pavotron en 23 Agosto 2010, 08:14 am
ya solucione los problemas que encontraste cgvwzq , muchas gracias por tu ayuda  :)

Abran otros agujeros mas...? :huh:


Título: Re: Pedido de Hackeo
Publicado por: cgvwzq en 23 Agosto 2010, 08:37 am
@Pavatron, de nada... Probablemente irán saliendo más agujeros... No lo he comprobado, pero ¿hay algún frame buster? Así te evitas problemas de clickjacking.

@averno, para mí eso es un CSRF (http://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29), en ningún momento hay ninguna redirección. ^^

Saludos!


Título: Re: Pedido de Hackeo
Publicado por: tragantras en 23 Agosto 2010, 10:38 am
deberías poner un tiempo máximo para que la sesión expire, la deje logueada ayer por la noche, me despierto, me meto y aun sigue válida la cuenta xD


por si alguien se deja la sesión en algun cyber abierta o algo así, deberías hacer eso!

http://www.desarrolloweb.com/articulos/1991.php


Por cierto, el CSRF del logout aún sigue funcionando


Título: Re: Pedido de Hackeo
Publicado por: cgvwzq en 23 Agosto 2010, 16:23 pm
Eso no es una solución:

[img]favicon.ico?[font= onload=alert(/pwn3d/.source) style=display:none tr=][/font][/img]


Título: Re: Pedido de Hackeo
Publicado por: Pavotron en 23 Agosto 2010, 16:40 pm
Disculpame, creo que ahora ya esta, lo sanee de esta manera; sera suficiente o es muy chapuza?  :P
Código:
	private function imagefix($img)
{
if(substr($img, 0, 7) != 'http://' or (substr($img, -4, 4) != '.png' and substr($img, -4, 4) != '.jpg'))
{
//$img = $img . './images/';
                        $img = 'Ingrese solo formatos "Jpg" ó "Png"';
}
return '<img src="' . $img . '" alt="' . $img . '" title="' . $img . '" />';
}


Título: Re: Pedido de Hackeo
Publicado por: cgvwzq en 23 Agosto 2010, 16:53 pm
[img]http://hackmexg.byethost33.com/favicon.ico?[font= onload=alert(1) style=display:none tr=][/font].jpg[/img]

De todas formas el problema no es solo de la imagen:

[url=/][font= onmouseover=alert(1) tr=]A[/font][/url]

Tienes que cambiar el sistema. O haces algo bién con expresiones regulares o coge el que usa SMF, por ejemplo. Te vas a ahorrar muchos dolores de cabeza...



Título: Re: Pedido de Hackeo
Publicado por: Pavotron en 24 Agosto 2010, 23:34 pm
al final luego de parchar todo el bbcode decidi cambiar por esto...

tendrá alguna vulnerabilidad???  :silbar:

Código:
function BBCode($string) {
$string = trim($string);

// BBCode [code]
if (!function_exists('escape')) {
function escape($s) {
global $string;
$string = strip_tags($string);
$code = $s[1];
$code = htmlspecialchars($code);
$code = str_replace("[", "&#91;", $code);
$code = str_replace("]", "&#93;", $code);
return '<pre><code>'.$code.'</code></pre>';
}
}
$string = preg_replace_callback('/\[code\](.*?)\[\/code\]/ms', "escape", $string);

// Smileys to find...
$in = array( ':)',
':D',
':o',
':p',
':(',
';)'
);
// And replace them by...
$out = array( '<img alt=":)" src="'.EMOTICONS_DIR.'emoticon-happy.png" />',
'<img alt=":D" src="'.EMOTICONS_DIR.'emoticon-smile.png" />',
'<img alt=":o" src="'.EMOTICONS_DIR.'emoticon-surprised.png" />',
'<img alt=":p" src="'.EMOTICONS_DIR.'emoticon-tongue.png" />',
'<img alt=":(" src="'.EMOTICONS_DIR.'emoticon-unhappy.png" />',
'<img alt=";)" src="'.EMOTICONS_DIR.'emoticon-wink.png" />'
);
$string = str_replace($in, $out, $string);

// BBCode to find...
$in = array( '/\[b\](.*?)\[\/b\]/ms',
'/\[i\](.*?)\[\/i\]/ms',
'/\[u\](.*?)\[\/u\]/ms',
'/\[img\](.*?)\[\/img\]/ms',
'/\[email\](.*?)\[\/email\]/ms',
'/\[url\="?(.*?)"?\](.*?)\[\/url\]/ms',
'/\[size\="?(.*?)"?\](.*?)\[\/size\]/ms',
'/\[color\="?(.*?)"?\](.*?)\[\/color\]/ms',
'/\[quote](.*?)\[\/quote\]/ms',
'/\[list\=(.*?)\](.*?)\[\/list\]/ms',
'/\[list\](.*?)\[\/list\]/ms',
                                         '/\[font=(.*?)\](.*?)\[\/font\]/ms',
'/\[\*\]\s?(.*?)\n/ms'
);
// And replace them by...
$out = array( '<strong>\1</strong>',
'<em>\1</em>',
'<u>\1</u>',
'<img src="\1" alt="\1" />',
'<a href="mailto:\1">\1</a>',
'<a href="\1">\2</a>',
'<span style="font-size:\1%">\2</span>',
'<span style="color:\1">\2</span>',
'<blockquote>\1</blockquote>',
'<ol start="\1">\2</ol>',
'<ul>\1</ul>',
                                         '<span style="font-family:\1">\2</span>',
'<li>\1</li>'
);
$string = preg_replace($in, $out, $string);

// paragraphs
$string = str_replace("\r", "", $string);
$string = "<p>".preg_replace("/(\n){2,}/", "</p><p>", $string)."</p>";
$string = nl2br($string);

// clean some tags to remain strict
// not very elegant, but it works. No time to do better ;)
if (!function_exists('removeBr')) {
function removeBr($s) {
return str_replace("<br />", "", $s[0]);
}
}
$string = preg_replace_callback('/<pre>(.*?)<\/pre>/ms', "removeBr", $string);
$string = preg_replace('/<p><pre>(.*?)<\/pre><\/p>/ms', "<pre>\\1</pre>", $string);

$string = preg_replace_callback('/<ul>(.*?)<\/ul>/ms', "removeBr", $string);
$string = preg_replace('/<p><ul>(.*?)<\/ul><\/p>/ms', "<ul>\\1</ul>", $string);

return $string;
}
[/code]