CVE-2008-2302
NoneCVSS
—
EPSS
1.3%
Published
May 23, 2008
CISA due date
—
Cloudanix analysis
A security flaw in the website's underlying software could allow an attacker to trick an administrator into running malicious code, potentially letting the attacker take full control of the application.
- Exploitation
- Requires User Interaction
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Web Framework
- Class
- XSS
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a reflected Cross-Site Scripting (XSS) vulnerability. An attacker can inject arbitrary web script or HTML into the administration login page by crafting a malicious URL. The injected script executes within the security context of the victim's browser session, which can lead to session hijacking, credential theft, or performing unauthorized actions on behalf of the authenticated user.
Why it matters to the business
If an administrator is tricked into clicking a malicious link, an attacker could compromise their account and gain full control over the web application. This could lead to theft of sensitive data, website defacement, distribution of malware to users, and significant reputational damage. The low complexity of the attack increases the likelihood of exploitation if administrators are targeted.
How an attack unfolds
An attacker first identifies an application running a vulnerable version of Django. They then craft a special URL that includes a malicious JavaScript payload. This URL is sent to a target administrator, typically through a phishing email or social engineering. When the administrator clicks the link, they are taken to the application's login page. The application insecurely reflects the script from the URL into the page's HTML. The script then executes in the administrator's browser, allowing the attacker to steal their session cookie or redirect them to a fake login page to capture their credentials, ultimately leading to a full administrative takeover.
How to fix it
To remediate this vulnerability, upgrade the Django framework to a patched version. For Django 0.91, upgrade to 0.91.2 or later. For Django 0.95, upgrade to 0.95.3 or later. For Django 0.96, upgrade to 0.96.2 or later. As these versions are extremely old, a full migration to a modern, supported version of Django is strongly recommended to protect against this and numerous other vulnerabilities.
How to confirm the fix worked
To validate the fix, confirm that the Django version in use is patched (e.g., 0.91.2+, 0.95.3+, 0.96.2+). You can manually test for the vulnerability by navigating to the administration login page via a URL that contains a simple script payload (e.g., `https://<your-app>/admin/<script>alert('XSS')</script>`). If the script executes (e.g., an alert box appears), the application is vulnerable. If the payload is properly HTML-encoded or removed from the output, the vulnerability has been mitigated.
Typical attack path
- An attacker crafts a malicious URL containing a JavaScript payload targeting the application's administration login endpoint.
- The attacker uses social engineering, such as a phishing email, to trick a privileged user into clicking the malicious URL.
- The user's browser sends a request to the vulnerable application with the attacker's payload in the URI.
- The application's login form improperly reflects the payload from the URI back into the HTML response.
- The malicious script executes in the user's browser, stealing session cookies or credentials and sending them to the attacker.
- The attacker uses the stolen session or credentials to impersonate the administrator and gain full control of the application.
How to detect it
To detect potential exploitation, analysts should review web server access logs (e.g., Nginx, Apache) for GET requests to administration login pages. Look for URIs that contain suspicious strings such as `<script>`, `onerror=`, `onload=`, or their URL-encoded equivalents (`%3Cscript%3E`). Correlate these requests with subsequent anomalous activity from the source IP or the targeted user account, such as the creation of new administrative users or unusual data access patterns.
- GET /admin/.*%3Cscript
- GET /admin/.*<script
- GET /admin/.*javascript:
- GET /admin/.*onerror=
- GET /admin/.*onload=
- GET /admin/.*%3Cimg%20src
What your security team should do
- Immediately identify and inventory all applications using legacy versions of Django (0.91, 0.95, 0.96) and prioritize them for upgrade.
- Upgrade affected Django instances to the specified fixed versions or, preferably, migrate to a currently supported version of the framework.
- If immediate patching is not possible, implement a Web Application Firewall (WAF) with rulesets designed to block reflected XSS attacks as a temporary compensating control.
- Review web server access logs for requests to admin login pages that contain script tags or other suspicious HTML constructs in the URI to search for historical compromise.
The record
Cross-site scripting (XSS) vulnerability in the login form in the administration application in Django 0.91 before 0.91.2, 0.95 before 0.95.3, and 0.96 before 0.96.2 allows remote attackers to inject arbitrary web script or HTML via the URI of a certain previous request.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| PyPI | django | 0 | 1.1 |
| PyPI | django | 0.91 | 0.91.2 |
| PyPI | django | 0.95 | 0.95.3 |
| PyPI | django | 0.96 | 0.96.2 |
| Debian:10 | python-django | 0 | 0.96.2-1 |
| Debian:11 | python-django | 0 | 0.96.2-1 |
| Debian:12 | python-django | 0 | 0.96.2-1 |
| Debian:13 | python-django | 0 | 0.96.2-1 |
| pypi | Django | 0.91 | No fix |
| pypi | Django | 0.95 | No fix |
| pypi | Django | 0.96 | No fix |
Related vulnerabilities
- GHSA-8p8v-wh79-9r56 Django vulnerable to Uncontrolled Resource Consumption Also affects django
- GHSA-mjgh-79qc-68w3 Django has a Race Condition vulnerability Also affects django
- CVE-2026-25673 An issue was discovered in 6.0 before 6.0.3, 5.2 before 5.2.12, and 4.2 before 4.2.29. Also affects django
- CVE-2026-25674 An issue was discovered in 6.0 before 6.0.3, 5.2 before 5.2.12, and 4.2 before 4.2.29. Also affects django
- GHSA-6426-9fv3-65x8 Django has an SQL Injection issue Also affects django
- GHSA-gvg8-93h5-g6qq Django has an SQL Injection issue Also affects django
- GHSA-2mcm-79hx-8fxw Django has Observable Timing Discrepancy Also affects django
- GHSA-33mw-q7rj-mjwj Django has Inefficient Algorithmic Complexity Also affects django