Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#4101
Lo que sucede es que para que un usuario de Phpmyadmin ejecute una inyección de comandos arbitrario en contra de su voluntad necesitas hacerlo mediante un CSRF y eso se evita mediante ese token que es un hash de seguridad que se asigna aleatoriamente y va cambiando cada vesque cambias de página.

Ahora eso de la inyección puede servirte en el caso de que tengas acceso a ese phpmyadmin, el token lo puedes sacar viendo el código fuente del frame que está al costado derecho o copiando algún link de ese frame y lo pegas en un texto, verás que aparece el token, luego escribes tu sql inyección y le ingresas ese token pero como te digo , remotamente sin acceso no podrás a menos que encuentres alguna variable vulnerable que no pida ese token.

Haz la prueba y entra en un phpmyadmin propio y copia el link de un botón, luego lo pegas en tu explorador y le borras el token.. podrás ver que no realiza lo que pides en ese link porque el token es inválido.

Espero que te pueda servir esta información.

Citar/server_databases.php?pos=0&dbstats=0&sort_by="]) OR exec('cp $(pwd)"/config.inc.php" config.txt'); //&sort_order=desc&token=[valid token]
Lo copiaste de una web con htmlencode, el link real es

Citar
server_databases.php?pos=0&dbstats=0&sort_by=[acá pones tu inyección de comandos]&sort_order=desc&token=[acá va el token de seguridad]

Inyección : "]) OR exec('cp $(pwd)"/config.inc.php" config.txt');

Lo mas probable es que eso fue procesado por un eval() y por eso te permite escapar con "]) ahora si esto es así significa que la prueba de ejemplo que diste está mal hecha ya que debolverá un error en la sintaxis, para eso aparte de cerrar la cadena hay que volver a abrirla para que la ejecución siga su curso normal.

"]); OR exec('cp $(pwd)"/config.inc.php" config.txt'); OR printf($x["
#4102
CitarHi whk.
bueeen proyecto te felicito, pero tenia una duda.. porque no en vez de hacer muxas funciones, es hacer una gran clase (POO). seria muxo mas estructurado. tambien se podrian mezclar funciones (extends).

Tambien otra sugerencia, es hacer 1 solo archivo, seria mas portable.
Eso queda a libertad de cada desarrollador ya que por ejemplo supongamos que quiero crear una captcha y necesitaré una imagen, talves un .js y otro php que funcione como miniblog en una sola hoja, ya con eso tenemos dos sistemas diferentes de un mismo usuario y por eso no puedo crear todo en una sola clase ya que cada uno debe tener la livertad en su propio espacio sin invadir la de los demás.

Talves sea una buena recomendación para los codeadores pero eso ya deopende de cada uno ya que es uno solo el motor y el resto se comparte entre usuarios.

Puse todo en un solo directorio y que pueda hacerse funcionar desde un solo include para que puedas llevar ese drectorio en un zip a donde quieras, hacerle el include  y ya. Si alguien necesita solo algunas funciones de ingamc podrá borrar el directorio de whk sin causar problemas en el sistema.

Citartambien estaria bueno que los nombres de todas las funciones empiecen igual, asi cuando usas un ide es mucho mas facil codear
Buena idea pero imaginate:
phplibs_username_nombrefuncion()
veo que se ve un poco largo  :-\ pero es válido, intentaré todo lo posible de incorporarlo.
#4103
Nivel Web / Re: Problemas Shell c99 y wamp.
17 Enero 2009, 05:02 AM
CitarNo para, soy new, pero no pa tanto jaja, lo subi como php.
La shell es la que puso WHK en otro post, esta encode con base 64 creo que era o algo asi..

El wamp por defecto no viene con el módulo gzip activado, en el menú de abajo debes activarselo y reiniciar el servidor.
#4104
CitarWHK, si sabes que se puede hacer todo ese codigo de permisos en una query a SQL? consumes menos recursos.. ve el parche que puse en el foro de lo de privado-privado

Si me acordé y eso fue lo primero que hize en el parche pero después me arrepentí porque el tuyo solo indica si el foro es público entonces se muestra y si es privado no se muestra pero.. que pasa si yo tengo permisos para ver foros privados y accedo? se verá privado/privado y la idea en esa función que hice fue que cada usuario pueda ver los temas que le permiten ver, si tu puedes ver solo 2 foros privados de 3 en total solo podrás ver esos dos, esa es la idea.. ajustarse un poco a las reglas de smf ahora que alex lo quiera así para evitar el copy paste de links es otra cosa  :P
#4105
Nivel Web / Re: Inyeccion Sql Filtro
16 Enero 2009, 08:48 AM
intenta sacarlo sin comillas para ver si realmente es necesario;
http://www.web.com/noticia.php?id=1 and 1=1
Si no te funciona y obligadamente necesitas escapar con esa comilla no puedes hacer nada por los slashses que agrega el php.
#4106
PHP / Re: Una pregunta
16 Enero 2009, 07:36 AM
Si te entiendo pero me cuesta un poco hacerlo ya que hay muchas variantes que anteponerse, por ejemplo si
{{D11, D12, D13}, {{D11, D12, D13}, D2, {{D11, D12, D13}, D2, D3}}, D3}
habría que comenzar a hacer explode a todas las llaves de apertura y comenzar desde la última para asegurarnos de que vamos desde el nivel mas alto hasta el inferior e ir uniendo los resultados con las llaves restantes para comenzar a crear el array auqnue eso me complicó un poco  :P.

Ahi te dejo un poco el avance de tu función, yo me voy a dormir porque ya me dieron las 3.36am  :-\

Código (php) [Seleccionar]
<?php

if(!$datos $_GET['datos']){
 
$datos '{{D11, D12, D13}, D2, D3}fuck %&$<>();meequiboqueaaahhh!!!GGrr';
}
echo 
metodo_hacktor($datos);
echo 
'<br><br>';
//echo metodo_hacktor($datos, 'D1');

function metodo_hacktor($datos$id_D false){
 
/* Eliminamos el primer y último carácter asumiendo 
 que son llaves de apertura y cierre y eliminamos los espacios en blanco,
 además permitimos solo los carácteres utiliozados para evitar
 mostrar errores al procesar el contenido. */
 
$datos preg_replace('|[^D0-9,{}]|i'''$datos);
 
$datos[0] = ' ';
 
$datos[strlen($datos) - 1] = ' ';
 
$datos str_replace(' '''$datos);
 if(
strlen(preg_replace('|[^{}]|i'''$datos)) % == 0){
 
/*
  if(!$datos = explode(',', $datos)){
   return 'No hay datos para procesar.';
  }
   */
  // $buffer = explode('{', $datos);
  
  
 
}else{
  return 
'Error de sintaxis, faltan o sobran llaves.';
 }
 
 
/*
 if($id_D){
  
 }
 */
}
/*
Pos
0     D1 -> D11 - D12 - D13
1     D2 -> D2
2     D3 -> D3

y con D1
D1:

Pos
0     D11 -> D11
1     D12 -> D12
2     D13 -> D13
*/
?>
#4107
Hasta hace poco Milw0rm ha publicado una falla del sistema MKPortal, conocido por su funcionamiento como brigde entre portal y foro en especial SMF e IPBoard.

El documento se encuentra acá:
http://milw0rm.com/exploits/7796

Mañana me instalaré este sistema para ver que podemos hacer y tratar de entender estas fallas y aprender a usarlas y parcharlas, prevenirlas y protegerse ante ataques.
#4108
Acá una función que hize para verificar el acceso a la visualización de títulos de temas o boards (==)
Código (php) [Seleccionar]
function seo_verifica_permisos($id, $tipo){
global $user_info, $db_prefix;
if(!$id = (int)$id){
return false;
}
if($user_info['is_admin'] == '1'){
return true; // Si es administrador entonces tiene permisos por defecto.
}
if($tipo == 'board'){ // Procesa Board
if($request = @db_query("
SELECT memberGroups
FROM {$db_prefix}boards
WHERE ID_BOARD = {$id}
LIMIT 1", __FILE__, __LINE__)){
if($row = @mysql_fetch_assoc($request)){
mysql_free_result($request);
}
}
if(!$permisos = @explode(',', $row['memberGroups'])){
if(!$permisos = (int)$row['memberGroups']){ // Hay permiso solo para un tipo de usuario
return false; // No hay permisos preestablecidos
}
}
foreach($permisos as $valor){
if($valor == $user_info['groups'][0]){
return true; // Tiene permisos
}
}
return false; // No tiene permisos
}elseif($tipo == 'topic'){
if($request = @db_query("
SELECT ID_BOARD
FROM {$db_prefix}topics
WHERE ID_TOPIC = {$id} LIMIT 1", __FILE__, __LINE__)){
if($row = @mysql_fetch_assoc($request)){
mysql_free_result($request);
}
}
if(seo_verifica_permisos((int)$row['ID_BOARD'], 'board')){
return true; // Tiene permisos
}else{
return false; // No tiene permisos
}
}else{
return false; // No hay tipos para procesar
}
}


Entre muchisimos cambios para evitar una multitud de fallas que no habia contemplado pero por el camino fuí viendo y parchando al mismo tiempo, en algunos casos algunas funciones retornan y otros no ya que en algunos casos es necesario mostrar retornos válidos y en otros casos no, no hize un texto para describir todos los cambios o hubiese quedado mas grande que el mismo script.

Este parche parcha todas las fallas antes mencionadas y mas.
Si alguien utiliza este mod modificado por mano propia tendrá que volver a crear esos cambios.
Este parche consta de 3 archivos solamente:
  • Themes/{$THEME}/Seo4SMFAdmin.template.php
  • Sources/Seo4SMFAdmin.php
  • seo4smf-redirect.php

    Los archivos a reemplazar están acá, en la primera linea de cada archivo está la localización.

    Dudas, sugerencias, propuesas, reclamos, demandas?¿?¿?
    Si quieres ver específicamente los cambios puedes utilizar el comando diff en linux o busquen el programa windiff de windows.
#4109
Nivel Web / Re: Pregunta ¿MD5?
16 Enero 2009, 02:22 AM
En muchos casos cuando alguien logra obtener un hash como password de alguna cuenta piensan que es necesario descifrarla crackeandola y no es así.

dark_soul, si logras obtener el hash del Administrador mas su número de seguridad (pass asault) que se utiliza para reforzar la contraseña entonces no es necesario crackearla para hacer uso de ella, simplemente averigua como joomla fabrica las cookies a partir del hash, por ejemplo puede que la cookie sea user:md5(pass) y con eso te la agregas a tus cookies en tu explorador y tendrás acceso a la administración.

Ahora creo que joomla te da un tiempo limite para que las cookies expiren pero no se si eso se refleja en la base de datos, buscaré un poco sobre eso y te cuento.

Por ejemplo en smf si obtienes el id de user mas su hash y su asault entonces puedes fabricar su cookie e ingresar haciendo creer al sistema que entraste por las buenas.
#4110
Está raro ya que se supone en php no es necesario declarar una variable o constante antes de utilizarla a menos que estes usando una versión muy antigua de php, de todas fromas tienes razón y tendré que adaptarme a las versiones también. Lo modificaré.