
إطار التحقق من الثغرات متعدد الخيوط
ZEROScan هو إطار عمل للكشف عن الثغرات الأمنية متعدد الخيوط، يمكن من خلاله بسهولة الحصول على أو تطوير مكونات إضافية للكشف عن الثغرات لاستهداف الاختراق. تم استلهام الواجهة وطريقة الاستخدام من إطار عمل metasploit-framework، مما يجعله سهل الاستخدام وتطوير المكونات الإضافية.
$ git clone https://github.com/zer0yu/ZEROScan.git
أو يمكنك تنزيل أحدث حزمة مضغوطة من الشفرة المصدرية وفك ضغطها للتثبيت:
$ wget https://codeload.github.com/zer0yu/ZEROScan/zip/master
$ unzip ZEROScan-master.zip
➜ ZEROScan git:(master) ✗ python z-console.py
____________ _____ ____ _____
|___ / ____| __ \ / __ \ / ____|
/ /| |__ | |__) | | | | (___ ___ __ _ _ __
/ / | __| | _ /| | | |\___ \ / __/ _` | '_ \
/ /__| |____| | \ \| |__| |____) | (_| (_| | | | |
/_____|______|_| \_\\____/|_____/ \___\__,_|_| |_|
+ -- --=[ ZEROScan - 1.0 ]
# قم بتنفيذ الأمر help لعرض شرح لكل معلمة.
ZEROScan > help
Core Commands
=============
Command Description
------- -----------
run تشغيل المكون الإضافي الحالي
help قائمة المساعدة
use <plugin> اختيار مكون إضافي بالاسم
update تحديث الإطار
search <keyword> البحث في أسماء وأوصاف المكونات الإضافية
set <option> <value> تعيين متغير لقيمة
info <plugin> عرض معلومات حول مكون إضافي واحد
list عرض جميع المكونات الإضافية
version عرض رقم إصدار الإطار
exit الخروج من وحدة التحكم
options عرض خيارات المكون الإضافي الحالي
# استخدم الأمر list لعرض جميع المكونات الإضافية الحالية
ZEROScan > list
\Modules
=======
expName appName appVersion description
--------- --------- ------------ -----------------------------
demo PHP 1230 ثغرة SQL Injection في PH1424/down.php
# يمكن استخدام الأمر info لعرض تفاصيل المكون الإضافي المقابل
ZEROScan > info demo
appName: PHP
appVersion: 1230
Author:
123
Description:
ثغرة SQL Injection في PH1424/down.php
Reference:
http://124.xyz/
# استخدم الأمر use لتحديد المكون الإضافي المراد استدعاؤه
ZEROScan > use demo
# استخدم الأمر options لعرض العناصر التي يجب تعيينها لهذا المكون الإضافي
ZEROScan exploit(demo) > options
# يجب وضع ملف المسح الجماعي في مجلد target
# لتعيين ملف المسح الجماعي، قم بتعيين المعلمة url إلى اسم الملف فقط (لا حاجة لإضافة لاحقة txt)
Name Current Setting Required Description
------ ----------------- ---------- --------------------------
URL 1 عنوان URL أو ملف URL
Thread 1 0 عدد الخيوط
Cookie 0 الكوكيز
Report False 0 هل تحتاج إلى تقرير HTML؟
# استخدم الأمر set للتعيين
ZEROScan exploit(demo) > set URL ww.baidu.com
URL => ww.baidu.com
# الأمر run لتنفيذ المكون الإضافي المقابل
ZEROScan exploit(demo) > run
[!]exploit target:'ww.baidu.com'
[!]Requesting target site:ww.baidu.com
+--------------+------------+-------------+
| target-url | poc-name | status |
+==============+============+=============+
| ww.baidu.com | demo | test_plugin |
+--------------+------------+-------------+
success : 1
# سيتم حفظ النتيجة النهائية في ملف txt داخل مجلد output
ZEROScan exploit(demo) >
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
from lib.core import log
# يمكن استيراد مكتبة requests من thirdparty
#from thirdparty import requests
# expInfo() هي دالة إلزامية، يجب ملء المعلومات التالية هنا
def expInfo():
expInfo={}
expInfo["appName"] = "PHP"
expInfo["appVersion"] = "123"
expInfo["author"] = "Z3r0yu"
expInfo["description"] = "PHPxxx/down.php SQL Injection"
expInfo["references"] = "http://zeroyu.xyz/"
expInfo["options"] = [
{
"Name": "URL",
"Current Setting": "",
"Required": True,
"Description": "عنوان URL أو ملف URL"
},
{
"Name": "Thread",
"Current Setting": "1",
"Required": False,
"Description": "عدد الخيوط"
},
{
"Name": "Cookie",
"Current Setting": "",
"Required": False,
"Description": "الكوكيز"
},
{
"Name": "Report",
"Current Setting": "",
"Required": False,
"Description": "هل تحتاج إلى تقرير HTML؟"
},
]
return expInfo
# يمكنك تعريف أي دالة تحتاجها في المكون الإضافي
def yourDefinition():
return "test_plugin"
# دالة exploit(target, headers=None) هي دالة التنفيذ، وهي إلزامية ويجب أن تحتوي على معلمتين
# المعلمة target تستخدم لتحديد الهدف، و headers يمكن استخدامها لتحقيق وكيل مستخدم عشوائي (UA)
def exploit(target, headers=None):
log.process("Requesting target site:"+ target)
# قم بإرجاع المعلومات التي تريدها
# لكن الإطار سيعتبر الفحص الذي يعيد قيمة كفحص ناجح ويعرضه
return yourDefinition()
هذا البرنامج مخصص لأغراض التعلم والتبادل فقط، يرجى عدم استخدامه لأغراض غير قانونية. وإلا فإن العواقب المترتبة على ذلك لا علاقة لها بالمؤلف.