
استخدام عدد كبير من ثغرات/استغلالات عالية التهديد للحصول بسرعة على صلاحيات الهدف، للاختراق والاستطلاع السريع للفريق الأحمر
🦄 POC bomber هي أداة لاكتشاف/استغلال الثغرات الأمنية، تهدف إلى استخدام عدد كبير من POC/EXP للثغرات عالية الخطورة للحصول بسرعة على صلاحيات الخوادم المستهدفة
يجمع هذا المشروع من الإنترنت POC/EXP للثغرات عالية الخطورة مثل RCE · رفع الملفات العشوائي · إلغاء التسلسل · حقن SQL، وهي ثغرات عالية الخطورة تتيح الحصول على الصلاحيات الأساسية للخادم، ويتم دمجها في ترسانة POC bomber. يتم استخدام عدد كبير من POC عالية الخطورة لاختبار هدف واحد أو أهداف متعددة بطريقة الضبابية (Fuzzing)، وذلك للعثور السريع على الأهداف الضعيفة بين الأصول والوصول إلى صلاحيات الخوادم المستهدفة. سيناريوهات الاستخدام تشمل على سبيل المثال لا الحصر ما يلي:
تدعم POCs الخاصة بأداة POC bomber اكتشاف الثغرات في المكونات الأكثر عرضة للهجوم مثل weblogic و tomcat و apache و jboss و nginx و struct2 و thinkphp2x3x5x و spring و redis و jenkins وثغرات لغة PHP و shiro و泛微OA و致远OA و通达OA، كما تدعم استدعاء منصة dnslog للكشف عن ثغرات RCE بدون استجابة ظاهرة (بما في ذلك الكشف عن log4j2)، وتدعم فحص هدف واحد وفحص جماعي، ويعتمد البرنامج على تجمع خيوط عالي التوافق، ويدعم استيراد POC/EXP مخصص، كما يمكنه إنشاء تقارير الثغرات. يعتمد POC bomber افتراضيًا وضع التحقق (verify) للتحقق من POC، وعندما تكون قيمة attack في النتيجة المرجعة True، يمكنك إضافة المعامل (--attack) للدخول في وضع الهجوم واستدعاء EXP مباشرة للهجوم (تحتاج إلى تحديد اسم ملف POC)، لتحقيق الحصول على شيل (getshell) بضغطة واحدة.
الإصدار v3.0.0 من POC-bomber يتمتع بكفاءة فحص أسرع، ويصلح مشكلة التجمّد الناتجة عن POC منفرد والعديد من الأخطاء الأخرى، ويضيف إخراجًا ملونًا وشريط تقدم، ويدعم تحديد مجلد POC، ومناسب للإيقاع السريع في فعاليات HVV، كما يضيف بعض POCs للثغرات التي تم كشفها عام 2022. كما يدعم إنشاء خادم dnslog محلي خاص، حيث يمكنك بعد إعداد نطاقك الخاص استخدام POC-bomber لفتح منصة dnslog على خادم VPS لإجراء كشف DNS خارج النطاق (Out-of-Band) لبعض الثغرات.
python3 pocbomber.py -u http://xxx.xxx
image image

python3 pocbomber.py -u http://xxx.xxx --poc="thinkphp2_rce.py" --attack

git clone https://github.com/tr0uble-mAker/POC-bomber.git
cd POC-bomber
pip install -r requirements.txt
查看用法: python3 pocbomber.py
模式:
获取poc/exp信息: python3 pocbomber.py --show
单目标检测: python3 pocbomber.py -u http://xxx.xxx.xx
批量检测: python3 pocbomber.py -f url.txt -o report.txt
指定poc检测: python3 pocbomber.py -f url.txt --poc="thinkphp2_rce.py"
exp攻击模式: python3 pocbomber.py -u 目标url --poc="指定poc文件" --attack
参数:
-u --url 目标url
-f --file 指定目标url文件
-o --output 指定生成报告的文件(默认不生成报告)
-p --poc 指定单个或多个poc进行检测, 直接传入poc文件名, 多个poc用(,)分开
-t --thread 指定线程池最大并发数量(默认30)
--show 展示poc/exp详细信息
--attack 使用poc文件中的exp进行攻击
--dnslog 使用dnslog平台检测无回显漏洞(默认不启用dnslog,可在配置文件中启用)
/inc/config.py
--dnslogdnslog_flag على True.--attack. +--------- poc_bomber.py (启动 POC-bomber)
|
+--------- inc(存放支撑 POC-bomber 框架运行的核心文件)
|
\--------- pocs(POC存放列表)----------- framework(存放框架漏洞POC)
|
|------ middleware(存放中间件漏洞POC)
|
|------ ports(存放常见端口漏洞,主机服务漏洞POC)
|
\----- webs(存放常见web页面漏洞POC)
يدعم POC bomber كتابة POC مخصصة.
يُشترط أن تكون جميع الـ POCs مكتوبة بلغة Python 3، وأن تحتوي على دالتين هما verify و attack (غير إلزامية) للتحقق والهجوم على التوالي.
اسم الدالة هو verify، وتستقبل معامل عنوان URL للهدف.
تعيد الدالة النتيجة على شكل قاموس (dict) يحتوي على مفتاحين هما name وvulnerable؛ حيث يوضح name اسم الثغرة، ويشير vulnerable إلى وجود الثغرة من عدمه عبر القيمتين True وFalse.
إذا كانت الثغرة موجودة، يجب ضبط قيمة vulnerable في القاموس المُعاد على True، وإضافة عنوان URL للهدف ومعلومات ذات صلة كصفحات استغلال الثغرة وما إلى ذلك.
استخدم طريقة try لمحاولة التحقق، وعند استخدام requests أو غيره لإرسال الحزم يجب ضبط مهلة زمنية (timeout) لتجنب تعليق POC.
def verify(url):
relsult = {
'name': 'Thinkphp5 5.0.22/5.1.29 Remote Code Execution Vulnerability',
'vulnerable': False,
'attack': False, # 如果有exp支持attack模式将attack的值置为True
}
try:
......
(用任意方法检测漏洞)
......
if 存在漏洞:
relsult['vulnerable'] = True # 将relsult的vulnerable的值置为True
relsult['url'] = url # 返回验证的url
relust['xxxxx'] = 'xxxxx' # 可以添加该漏洞相关来源等信息
......
return relsult # 将vulnerable值为True的relsult返回
else: # 不存在漏洞
return relsult # 若不存在漏洞将vulnerable值为False的relsult返回
execpt:
return relsult
إذا كان هناك EXP، يمكن كتابة دالة attack كدالة هجوم EXP،
اسم الدالة هو attack، وتستقبل معامل عنوان URL للهدف.
ويتم كتابة كود EXP داخل try لتنفيذ الهجوم، ويمكن أن يتفاعل مع إدخالات المستخدم.
بعد الانتهاء من كتابتها، يجب ضبط قيمة attack في القاموس الذي ترجعه دالة verify الخاصة بهذه الثغرة على True.
عند نجاح الهجوم تُرجع True، وعند الفشل لأي سبب آخر تُرجع False فقط.
def attack(url):
try:
........................................
攻击代码(执行命令或反弹shell上传木马等)
........................................
return True
except:
return False
بعد اكتمال كتابة POC، ضعه مباشرة في أي مكان داخل مجلد /pocs وسيتم استدعاؤه بشكل تكراري (recursively)!