Django suffers from an admin list filter data extraction vulnerability.
0df42c652e8f3a5dd96c219a186deee3bc86b62a4050d27531933efc4d5db86e
ADVISORY INFORMATION:
Advisory ID: NGENUITY-2010-009
Date discovered: 8.28.2010
Date published: 12.22.2010
SOFTWARE AFFECTED:
Django is a high-level Python Web framework that encourages rapid
development and clean, pragmatic design. [1]
The admin interface of the Django web framework can be abused to extract
information, such as user password hashes via list filters. Version
1.1.2, 1.2.3 and before are affected. The advisory from the Django dev
team can be found here [2].
TECHNICAL DETAILS:
The principle behind the vulnerability is similar to blind sql
injection, but abuses a feature of t We can use list filters to follow
foreign keys into models and data our user should not normally have
access to. Using regular expressions gives us a lot of flexibility to
work our way down the value we want to extract.
For a model that has a created_by field that points to a User object we
could extract the password hash using a request similar to the below.
http://example.com/admin/testapp/testmodel/?created_by__password__regex=^sha1\$[0-9]$
http://example.com/admin/testapp/testmodel/?created_by__password__regex=^sha1\$[a-f]$
Authentication as a staff user in the admin is required to exploit this
vulnerability. Here's looking at you CMS apps!
CREDIT:
This vulnerability was discovered by Adam Baldwin
<mailto:adam_baldwin@ngenuity-is.com><mailto:adam_baldwin@ngenuity-is.com>
REFERENCES:
[1] - http://www.djangoproject.com
[2] - http://www.djangoproject.com/weblog/2010/dec/22/security/
[3] -
http://ngenuity-is.com/advisories/2010/dec/22/information-leakage-in-django-administrative-inter/
[4] -
http://evilpacket.net/2010/dec/22/information-leakage-django-administrative-interfac/