# Security

## Debug mode

Source: <https://t.me/webpwn/337>

Приложения на Django в debug режиме раскрывают содержимое environment переменных при необработанном исключении.

Несмотря на наличие автоматического сокрытия значений, для переменных соответствующих регулярному выражению `API|TOKEN|KEY|SECRET|PASS|SIGNATURE`, часто это приводит к утечкам через нестандартные имена переменных.

Если обнаружить debug режим можно просто обратившись к несуществующей странице, то вызвать exception иногда бывает проблематично. Даже с раскрытием существующих в приложении путей через 404-ую страницу.

Но существуют и более универсальные подходы.

**Пример 1**

Нестандартные символы в Host. Правда с учетом облачных сервисов этот вариант срабатывает редко.

```
GET / HTTP/1.1
Host: '"

Invalid HTTP_HOST header: '\'"'. The domain name provided is not valid according to RFC 1034/1035.
```

**Пример 2**

Использование большего количества переменных в POST, чем указано в настройке DATA\_UPLOAD\_MAX\_NUMBER\_FIELDS (по умолчанию 1000).

Для эксплуатации необходимо найти любой роут, поддерживающий POST запросы, и в редких случаях получить валидное значение CSRF токена на странице.

```
POST / HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Cookie: csrftoken=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
Content-Length: 3093
 
csrfmiddlewaretoken=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&x=&x=&x=&x=[..1000 раз..]&x=&x=&x=
```

## CVEs

### CVE-2022-34265

PoC & Description: <https://github.com/aeyesec/CVE-2022-34265>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://appsecurity.gitbook.io/devops/ppc/ppc-langs/backend/python/packages/web-frameworks/django/security.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
