Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: andres199 en 9 Noviembre 2010, 16:54 pm



Título: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 16:54 pm
hola a todos
 
el caso es este

llevo varios dias mirando en el codigo fuente de una pagina y me encontre lo siguiente

Código:

<?PHP
include('config.php');
include('includes/functions.php');

ini_set("display_errors", "1");
//include("wrapper/adodb-exceptions.inc.php");
include("includes/adodb5/adodb.inc.php");

define('ADODB_ASSOC_CASE', 1);
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
switch (@$_GET['db']) {
case '1':
$db = ADONewConnection($_config['db_type']);
$db->locale = 'us_english';
$db->debug = $_config['dbdebug'];
$rs = $db->PConnect($_config['Server'], $_config['User'], $_config['Pass'], $_config['DB']) or die("Unable to connect!");
    break;
case '2':
$db = ADONewConnection($_config['db_type']);
$db->locale = 'us_english';
$db->debug = $_config['dbdebug'];
$rs = $db->PConnect($_config['Server'], $_config['User'], $_config['Pass'], $_config['DB2']) or die("Unable to connect!");
 break;
  case '3':
$db = ADONewConnection($_config['db_type']);
$db->locale = 'us_english';
$db->debug = $_config['dbdebug'];
$rs = $db->PConnect($_config['Server'], $_config['User'], $_config['Pass'], $_config['DB3']) or die("Unable to connect!");
 break;
}
$db->Execute('SET ANSI_NULLS ON');
$db->Execute('SET ANSI_WARNINGS ON');
$tbl = $db->Execute("select * from information_schema.tables where TABLE_TYPE = 'base Table'");

echo '<table width="100%" cellpadding=4>';
echo '<tr>';

echo '<td rowspan=3 valign="top">';
foreach ($tbl as $tb) {
echo '<li>'.$tb['TABLE_CATALOG'].'.dbo.'.$tb['TABLE_NAME'].'</li>';
}
echo '</td>';
echo '<td valign="top">';
echo '<form method="GET"><input name="query" type="text" value="'.$_GET['query'].'" size="100"><input type="hidden" name="db" value="'.$_GET['db'].'"><input type="submit" value="Query"></form>';

echo '</td>';
echo '</tr>';
echo '<tr>';
echo '<td valign="top">';
if ($_GET['query']) {
$db->debug=1;
echo 'running query...<br/>';

$q = $db->Execute($_GET['query']);
echo $db->ErrorMsg();
echo '<table width="100%" cellpadding=4 border="1">';
foreach ($q as $tb) {
$data .= '<tr>';
$header = '<tr>';
foreach ($tb as $h => $t) {

if (ctype_upper(preg_replace("/[^a-zA-Z0-9s]/", "", $h)))  {
$header .= '<td>'.$h.'</td>';
if (in_array($h, array('DWSERIALNUMBER','INFO'))) $t = bin2hex($t).'-'. hexdec($t);
$data .= '<td>'.$t.'</td>';
}
}
$header .= '</tr>';
$data .= '</tr>';
}
echo $header .$data;

echo '</table>';
}

echo '</td>';
echo '</tr>';


echo '</table>';

?>


*si en mi navegador pongo    http://url-del-site/nobre-de-archivo.php?db=1

se supone que con esa cadena establesco una conexion ( case '1': ) con db ( base de datos numero 1)



* http://url-del-site/nobre-de-archivo.php?db=2

con esa cadena establesco una conexion ( case '2': ) con db2 ( base de datos numero 2)




* http://url-del-site/nobre-de-archivo.php?db=3


con esa cadena establesco una conexion ( case '3': ) con db3 ( base de datos numero 3)



mis preguntas son las siguientes

1). ¿como podria aprovechar esto?

2). ¿ como puedo averiguar los datos  $rs = $db->PConnect($_config['Server'], $_config['User'], $_config['Pass'], $_config['DB'])

salu2


Título: Re: alguien me puede orientar un poco
Publicado por: xassiz~ en 9 Noviembre 2010, 17:07 pm
1.- ¿Aprovechar en qué sentido?
2.- ¿Tal vez en el archivo config.php?


Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 17:13 pm
supongo que esto tiene que ver con tus temas anteriores en los cuales ponias vulnerabilidades....

no entiendo del todo el objetivo de todo este ejercicio....seguridad propia? atacar a alguien?....
por que si es atacar a alguien y ya puedes leer el php sin problemas pues como que no necesitas de una vulnerabilidad web...


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 17:16 pm
si esos datos se encuentran en el archivo config.php  ,  pero no eh podido acceder a ese archivo  la unica manera de acceder a esos datos es por medio de otros archivos como el que acavo de exponer.

puesto que el servidor rechaza y no deja abrir el archivo config.php desde afuera, toca averiguar esos datos desde el mismo servidor y aprovechando los archivos que requieren de estos datos :)


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 17:20 pm
supongo que esto tiene que ver con tus temas anteriores en los cuales ponias vulnerabilidades....

no entiendo del todo el objetivo de todo este ejercicio....seguridad propia? atacar a alguien?....
por que si es atacar a alguien y ya puedes leer el php sin problemas pues como que no necesitas de una vulnerabilidad web...


bueno aclaro
1).  si enrealidad si tiene que ver con mis temas anteriores.

2).  lo hago para aprender mas sobre esto.

3). seguridad propia

4). atacar al chico que dice tener mas seguridad que la casa blanca de los Estados Unidos :)


salu2


PD.  no penseis que soy uno de esos que anda con lammeradas  y destruyendo lo que asu paso encuentra ;)


Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 17:26 pm
los puntos 3 y 4 son contradictorios :P

porque no puedes acceder al archivo config si esta en el mismo directorio que el que expones?


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 17:30 pm

si es claro que esta en el mismo directorio por eso lo cita en esta cadena

Código:
include('config.php');

al citarlo de esa manera se refiere que esta en el mismo dir.


Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 17:40 pm
yo pregunto.....como estas viendo el contenido de ese archivo php?  :xD


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 17:51 pm
yo pregunto.....como estas viendo el contenido de ese archivo php?  :xD


esos archivos estan accesibles, con googlecrome puedes explorar todo su codigo fuente, pero como te digo me denega el acceso al archivo config.php


Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 17:59 pm
disculpame pero.... via browser no podes ver el codigo php que expones, por eso pregunto...


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 18:17 pm
disculpame pero.... via browser no podes ver el codigo php que expones, por eso pregunto...


si se puede mira --- con esta consola puedes husmear por hay xD----- archivos como el que expongo en este tema los eh pillado usando esta consola de google chrome.... el resto lo dejas a tu imaginacion y lo terminas de construir =)   



(http://img522.imageshack.us/img522/7734/dibujozvs.png)


Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 18:26 pm
yo no veo ningun php por ahi  :xD >:D

el codigo php se procesa en el servidor, se genera el html y luego va al browser, las developers tools, asi como el firebug etc trabajan sobre las peticiones que entran y salen del browser por ende, en ese entonces, el php ya fue procesado  >:D

algo no cierra....


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 18:49 pm
yo no veo ningun php por ahi  :xD >:D

el codigo php se procesa en el servidor, se genera el html y luego va al browser, las developers tools, asi como el firebug etc trabajan sobre las peticiones que entran y salen del browser por ende, en ese entonces, el php ya fue procesado  >:D

algo no cierra....



imagina una arañita ah tejido su tela en un arbol( arbol = servidor ---  tela = apache )  ok ahora bien esta arañita es muy confiada y no ah reforsado su tela, no ah puesto un modo seguro (safe_mode).......  imagina que ademas de esto al ser una tela esta enlazada completamente de una punta hasta otra.... luego entonces la consola del google chrome es un acceso a una de las puntas de esa tela de araña.( y recuerda que al acceder a una punta como es una tela puedes ir escalando y encontrando las otras partes de esta tela de araña) =)


salu2


Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 18:57 pm
puedes escalar, pero nunca veras el codigo php puro como lo muestras  >:D.
si con safe mode te refieres al de php pues es bueno que este desactivado por cierto, la seguridad de un servidor no deberia resolverse por ahi.

saludos


Título: Re: alguien me puede orientar un poco
Publicado por: bizco en 9 Noviembre 2010, 19:16 pm
es el segundo post que pides lo mismo, como en este:

http://foro.elhacker.net/nivel_web/tal_ves_podais_ayudarme-t309867.0.html;msg1538665#msg1538665

se te vuelve a repetir que no puedes ver el codigo fuente real del fichero php, primero comprende como funciona php y entenderas que no puede ser.


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 20:21 pm
es el segundo post que pides lo mismo, como en este:

http://foro.elhacker.net/nivel_web/tal_ves_podais_ayudarme-t309867.0.html;msg1538665#msg1538665

se te vuelve a repetir que no puedes ver el codigo fuente real del fichero php, primero comprende como funciona php y entenderas que no puede ser.


primero una aclaracion, obiamente no pretendo que de todos los ficheros pueda ver el codigo fuente real... lo unico que intento es localizar los valores de esto
Código:
rs = $db->PConnect($_config['Server'], $_config['User'], $_config['Pass'], $_config['DB'])



Título: Re: alguien me puede orientar un poco
Publicado por: seele en 9 Noviembre 2010, 20:25 pm
pero a lo que vamos es que no puedes por que es un archivo php, y como dije antes me llama la atencion de donde sacaaste el contenido del archivo php que mostras antes porque de chrome no


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 20:46 pm
pero a lo que vamos es que no puedes por que es un archivo php, y como dije antes me llama la atencion de donde sacaaste el contenido del archivo php que mostras antes porque de chrome no
 



ok eh echo tantas cosas y lo ultimo que estoy haciendo es simular el servidor, osea ese archivo que alli pongo lo tengo en mi servidor, pienso que simulando el server y citando los archivos tal y como lo hace en el servidor me pueda arrojar los datos, pero siepre me dice  "ADONewConnection: Unable to load database driver ''


ademas mesale un alerta de apache que no se puede abrir el archivo config.php que se ah denegado el acceso


Título: Re: alguien me puede orientar un poco
Publicado por: bizco en 9 Noviembre 2010, 20:55 pm
la verdad tio no se si fumas algo extraño o que te hace pensar que poniendo en tu servidor un archivo de otro te va a dar en tu caso el nombre de usuario y contraseña de la db. partiendo de que ¿como vas a hacer que el servidor original haga una simple peticion a tu servidor? o caso contrario que tu servidor haga una peticion a un servidor remoto sin conocer host de la db, usuario y contraseña, estas en lo mismo pero cada vez haces cosas mas extrañas.

en caso de estar yo confundido te invito a que expongas el metodo que usas para "simular" ser tu el servidor.


Título: Re: alguien me puede orientar un poco
Publicado por: andres199 en 9 Noviembre 2010, 21:02 pm
la verdad tio no se si fumas algo extraño o que te hace pensar que poniendo en tu servidor un archivo de otro te va a dar en tu caso el nombre de usuario y contraseña de la db. partiendo de que ¿como vas a hacer que el servidor original haga una simple peticion a tu servidor? o caso contrario que tu servidor haga una peticion a un servidor remoto sin conocer host de la db, usuario y contraseña, estas en lo mismo pero cada vez haces cosas mas extrañas.

en caso de estar yo confundido te invito a que expongas el metodo que usas para "simular" ser tu el servidor.


ok algo bastante extenso pero lo hare me tardare unos minutos .........



bien como habia dicho antes el servidor se encuentra compuesto de dos directorios pricipales (dir1)= main (dir2)= backend

el directorio que yo simulo es el main  y este es el archivo de configuracion de enlace al directorio backend ( alojado en el servidor victima )

Código:
<?PHP
include('config.php');
session_start();
error_reporting(0);
$cachetime = 24 * 3600; // cache time in seconds
//cache manager
if (@$_SERVER['QUERY_STRING'] == '') {
include('includes/cachemanager.php');
} else {

if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
  ob_start("ob_gzhandler");
  if ($_GET['type'] == 'xml')
header("Content-Type: text/xml");
  else
header ("content-type: text/javascript; charset: UTF-8");
  header ("cache-control: must-revalidate");
  $offset = 60 * 60;
  $expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
  header ($expire);
} else
ob_start();








//cache manager end








if ($_config['nocache'] == false) {
//$GAME = $_config['server_feeds'][$_GET['server']][1];
$cache = preg_replace('/\&nocache\=1/i','',$_SERVER['QUERY_STRING']);
$slash =  addcslashes($_config['server_feed'], 'z..A://');

$cache = preg_replace('/'.$slash.'/i','',urldecode($cache));

 // replace accented chars
$accents = '/&([A-Za-z]{1,2})(grave|acute|circ|cedil|uml|lig);/';
$string_encoded = htmlentities($cache ,ENT_NOQUOTES,'UTF-8');

$string = preg_replace($accents,'$1',$string_encoded);

// clean out the rest
$replace = array('([\40])','([^a-zA-Z0-9-])','(-{2,})');
$with = array('-','-','-');
$string = preg_replace($replace,$with,$string);

$ext = preg_split('/-/', $string, -1, PREG_SPLIT_OFFSET_CAPTURE);
$ext = $ext[3][0];

$cachefile = 'cache/'.$string.'.'.$ext;


if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile) && !isset($_GET['nocache'])) {
//
if ($_GET['type'] == 'xml')
echo file_get_contents($cachefile);
else
include($cachefile);
// echo '<test>'.$cachefile.'</test>';
//echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n";
exit;
}

}
$homepage = file_get_contents($_SERVER['QUERY_STRING']);
echo $homepage;

if ($_config['nocache'] == false) {
$fp = @fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
}
}
?>

el archivo config del directorio main ( osea el que yo simulo)  se encuentran datos como ip de la base de datos, configuracion de cache, ip de enlace al directorio backend etc...

poniendo una cadena como la siguente  
Código:
$db = ADONewConnection('mssql');
$db->locale = 'us_english';
$db->debug = $_config['dbdebug'];
$rs = $db->PConnect($_config['Server'], $_config['User'], $_config['Pass'], $_config['DB']) or die("Unable to connect!");

puedo realizar consultas al sql  en la db (database 1)  ... consultas como  
Código:
$result = $db->Execute("SELECT ID FROM register_table where upper(ID),(Email),(password) ", array($value));
  o esta

Código:
exec dbo.user_register ‘user’, ‘pass’,'Email'
hay ya tengo un registro y funciona pero no es esto lo que yo quiero lograr.

aunque puedo realizar consultas ala base de datos remplazando los valores

ip dela database por =  $_config['Server']
usuario sql por = $_config['User']
y contraseña por = $_config['Pass']

sin embargo lo que yo necesito es saber los datos de

1).$_config['User']
2).$_config['Pass']


apesar que los puedo reemplazar usando esas cadenas, solo me sirve para eso en la pagina web.

si algo no quedo bien claro lo podre explicar mejor ;)

salu2