2025-cybersibir-service-ncdex
NightCity Data Exchange - Биржа эксплоитов
Название: NightCity Data Exchange Cтек: Crystal + Postgresql
Порты: 7331
Описание: Биржа уязвимостей, где покупают и продают найденные эксплойты, за внутренние кредиты. При регистрации и за добавление уязвимостей — начисляются , эксплойты можно купить. Кредиты можно обменивать между пользователями.
Уязвимости
1. Открытая БД с дефолтным паролем (Misconfiguration)
- Порт PostgreSQL проброшен наружу:
...
ports:
- "8432:8432"
...
В конфиге указано подключение к БД без безопасных параметров:
database: "postgres://postgres:postgres@localhost:7432/nde"
Любой пользователь в пределах сети может подключиться к базе данных с дефолтным логином/паролем (postgres:postgres), получить доступ к данным, выполнить SQL-инъекции или удалить всё.
2. IDOR (Insecure Direct Object Reference)
-
При переводе средств (транзакция
/users/transfer) можно подменить email отправителя (from_user). -
На сервере нет проверки соответствия текущего пользователя
from_user.
Email'ы других пользователей можно спарсить с публичной страницы /transactions, где почта замаскирована, но легко угадывается c помощью данных со страниц /users/:id.
Пример эксплойта: exploit/simpleidor.rb
3. DOS через незакрытую транзакцию
- Метод обновления пользователя вызывает
DBC.query(...), который открывает транзакцию и не завершает её:
query = "UPDATE users SET username = $1, email = $2 WHERE id = $3"
result = DBC.query(query, self.username, self.email, self.id) # query открывает транзакцию
- При большом числе одновременных запросов — пул подключений быстро заполняется, и сервис перестаёт отвечать (
DB::PoolRetryAttemptsExceeded).
exploit/
├── dos.rb # Занимает пул подключений, вызывает отказ в обслуживании
└── simpleidor.rb # Использует IDOR для перевода средств от имени другого пользователя
2025-cybersibir-service-ncdex
- 1
- 0
- 0
- 0
- 0
- 2 months ago
- March 20, 2025
MIT License
Tue, 27 Jan 2026 00:18:29 GMT