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 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/ _______________________________________________ Full-Disclosure - We believe in it. Charter: http://lists.grok.org.uk/full-disclosure-charter.html Hosted and sponsored by Secunia - http://secunia.com/