Ayer me puse a revisar Infobae en búsqueda de agujeros XSS, y grata fue mi sorpresa cuando encontré una falla en el primer intento, lo cual me da a entender que Infobae es un “colador”.

Y eso no es todo. Profundizando un poco más, encontré algo más grave:
- Las líneas de debugging son públicas
- Están imprimiendo consultas de SQL en comentarios HTML
- No están escapando caracteres en las consultas SQL

Este último punto significa que cualquier persona puede realizar inyecciones SQL1, o sea:
- Obtener información sensible de los usuarios registrados en Infobae, como nombres de usuario, números de DNI, direcciones de correo electrónico, contraseñas (si no están encriptadas o si utilizan hashes md5 reversibles2), etc.
- Modificar información del diario, como el título de la portada principal (un amigo me sugirió que ponga “Encontraron las manos de Perón”)
- Vaciar (TRUNCATE) o eliminar (DROP) tablas y bases de datos completas.
Quise contactarme con ellos, pero la página de contacto del diario no anda, así que les envié un mail con una descripción del problema (nunca me contestaron). Para que sepan: pasaron 24 horas y los agujeros no fueron parcheados.

1 – Es posible que utilicen usuarios con jerarquía de privilegios, aunque lo dudo.
2 – “Recently, a number of projects have created MD5 rainbow tables which are easily accessible online, and can be used to reverse many MD5 hashes into strings that collide with the original input, usually for the purposes of password cracking” (Wikipedia)
Acá les dejo un pequeño programa en Python que busca “buenas noticias” en los feeds RSS de Clarín, InfoBAE y La Nación.
Es altamente configurable (pueden agregar o quitar palabras clave y feeds editando FEEDS y KEYWORDS).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # -*- coding: utf-8 -*-
import feedparser
import re
FEEDS = {
u'Clarín': 'http://www.clarin.com/diario/hoy/um/sumariorss.xml',
u'InfoBAE': 'http://www.infobae.com/adjuntos/html/RSS/hoy.xml',
u'La Nación': 'http://www.lanacion.com.ar/herramientas/rss/index.asp',
}
KEYWORDS = ['muerto', 'caos', 'inseguridad']
def main():
regexps = [re.compile(keyword, re.IGNORECASE) for keyword in KEYWORDS]
for feed_name, feed_source in FEEDS.iteritems():
for entry in feedparser.parse(feed_source).entries:
for r in regexps:
if r.search(entry.title):
print '%s: %s - %s' % (feed_name, entry.title, entry.link)
break
if __name__ == '__main__':
main() |
Acá tienen unos resultados de ejemplo:
1
2
3
4
5
6
7
| mahadeva@blue:~$ python buenasnoticias.py
InfoBAE: Un muerto y miles de evacuados por una explosión en Rusia - http://www.infobae.com/mundo/484082-101275-0-Un-muerto-y-miles-de-evacuados-por-una-explosión-en-Rusia
La Nación: Varios muertos en Rusia tras una explosión en un arsenal militar - http://www.lanacion.com.ar/nota.asp?nota_id=1199099
Clarín: Inseguridad: en medio de los cruces, el oficialismo se despega de D'Elía - http://www.clarin.com/diario/2009/11/13/um/m-02040147.htm
Clarín: 12:35 - Detienen a tres chicos por el caso del empresario muerto por una pedrada - http://www.clarin.com/diario/2009/11/13/um/m-02040124.htm
Clarín: Otro choque en la General Paz provocó un caos en el tránsito - http://www.clarin.com/diario/2009/11/13/um/m-02040083.htm
Clarín: Detienen a tres chicos por el caso del empresario muerto por una pedrada - http://www.clarin.com/diario/2009/11/13/um/m-02040124.htm |