2012/05/16

OWASP::LatamTour 2012::HTExploit

Matias Katz y Maxi Soler mostraron como explotar una mala combinación de http authentication y php.

Como me inspiró un par de ideas de usabilidad, he implementado una versión en bash. No la hice en python para no "competir" y además las ideas son trivialmente traducibles a python.

Básicamente agregué:
  • La posibilidad de especificar un alias al salvar los resultados obtenidos, ya que hay ciertos nombres de url que pueden pelearse con el filesystem.
  • Auto alias en caso de pelea o colisión de nombres.
  • Un lindo reporte html con links al mensaje y como extra al response header

Dada una lista:

/protected  main
 /protected/index.php
/protected/index.html
/protected/index.php?var=null

El script hace los trim apropiados. La segunda columna es el alias.

En la carpeta donde se ejecuta, crea una carpeta con el nombre del target y un html con links














Si vamos a ese html, se ven los links probados y las repuestas

 En las siguientes imágenes, vemos el contenido de cada respuesta

Esta es la ejecución del php



Esta es una falla razonable, ya que no hay php en el destino


 

Y este es un ejemplo con parámetros






Por último, si hacemos click en alguna de las columnas de la derecha, vemos los response headers en caso de éxito

Y en caso contrario



Cuando ellos me habiliten, publicaré el código.

2012/05/15

FLISOL 2012

Sólo voy a hacer crítica constructiva. No tengo quejas.

(Des)organización


La desorganización no era paralizante pero si irritante. Había una estructura radial alrededor de los principales organizadores. Afortunadamente no habia conflictos ni roces, hasta donde percibí.

Ilustro con la siguiente experiencia


-Hola, me costó mucho llegar, ¿puedo señalizar el camino? - La facultad de Derecho es bastante grande.

-Si, Julio esta imprimiendo los carteles. (Julio por decir algún nombre)

Más tarde logré encontrar a Julio, que no estaba pegando los carteles, si no haciendo otra cosa.

-Pego los carteles yo, ¿ok?

-Si, dale.

De puro accidente tenía enfrente mio a un señor de seguridad, a quien tuve la prudencia de preguntar acerca de donde se podian pegar los carteles.

-Yo tengo orden de despegar todo lo que encuentro, pero dejame que consulto...

Tras algunas averiguaciones, me dijo que pegue pero cuidando la pintura. Tomé nota mental de despegar los carteles al retirarnos y pegué los carteles.

Tres horas antes de la finalización, tal como mi vida privada habia previsto, me retiré, confiando en que alguien sacaría los carteles.


Veamos ahora como pudo haber sido mejor.



Pegamos dos papelitos, "imprimir señalización" y "pegar señalización" en la columna de "pendientes".

Julio pone su nombre en "imprimir señalización" y lo pasa a la columna "haciendo".

Yo paso y pregunto quién es Julio o estoy atento a cuando alguien pase "imprimir señalización" a la columna de "hecho". O le pego una notita diciendo que me avise. De un modo u otro me entero y recibo los carteles.

Habiendo hablado con seguridad, creo la nueva tarea "retirar señalización al terminar" y la pego en "pendientes".

Pongo "pegar señalización" en "haciendo" y me voy por ahi a pegar los carteles.

Cuando finaliza el evento, alguien encuentra "retirar señalización al terminar" en la columna de "pendientes" y se hace cargo.

¿En qué consiste este escenario alternativo?


En sacar la organización de la mente de unas pocas personas y ponerla en la de todas. Dada nuestra incapacidad para la telepatía (al menos de mi parte), usar una superficie divida en tres regiones nombradas "pendientes", "haciendo" y "hecho", donde se pueden pegar papelitos que representan tareas.

Para que esto arranque, al comienzo se definen todas las tareas, escritas en los papelitos con una breve descripción y se pegan en la primera columna.

Luego cada persona que colabora toma la tarea o solicita ayuda o llama la atención para que alguien la tome, momento en el cual se pasa a la segunda y al finalizar a la tercera. Cuando se descubren nuevas tareas se agregan.

Puede ser útil anotar quién la está haciendo. Es importante tomar una sola tarea a la vez y evitar interrumpirla.

Esto nos permite liberar al nucleo de la organización de ser un cuello de botella y aumentar las probabilidades de hacer todo y hacerlo una sola vez. Además es más fácil encontrar a las personas que se están encargando de cada cosa.

Esta es una breve lista de las tareas que se me ocurre rapidito, sumadas a las tres del ejemplo.

  • Buscar comida.
  • Armar red.
  • Conseguir teclados, pantallas y mouse.
  • Conectar red a Internet.
  • Configurar access point.
  • Gestionar instaladores (*).
  • Recepción en la puerta (*).
  • Disponer de los desechos de la comida.


Las marcadas con (*) son tareas de todo el dia, que pueden (o deben) ser repartidas a lo largo del dia.

Este método no se reduce al momento del evento. Tambien se puede utilizar de modo remoto durante la organización previa del evento, como por ejempo con la herramienta https://trello.com/ (Gracias SR Gianazza)

Charlas


Mi charla de manejo de contraseñas no fue muy satisfactoria, dado que no tuve proyector y baja concurrencia. Es como todo espectáculo, si hay poco público es más difícil. No sé como fue la concurrencia de las otras. Si sé de alguna persona que hubiese venido y no lo hizo por conflictos con otras charlas. El clima no ayudó en general a la concurrencia.

Se me ocurre que quizas hubiese sido mejor que fueran bajo demanda. Anunciar cada charla disponible y la persona responsable, que puede darla en cierto rango horario. Cuando se junta una cantidad suficiente de personas interesadas, se realiza.  Es un poco riesgoso, quizas te quedes sin dar la charla.

Voy a proponer estos dos puntos en el próximo evento y espero que algún agilista me acompañe, a ver que resulta.