
Многопоточный фреймворк для верификации уязвимостей
ZEROScan — это многопоточный фреймворк для обнаружения уязвимостей. С его помощью можно легко получать или разрабатывать плагины для обнаружения уязвимостей и проводить пентест целей. Интерфейс и способ использования заимствованы из фреймворка metasploit-framework, что делает его простым в освоении и разработке плагинов.
$ git clone https://github.com/zer0yu/ZEROScan.git
Или вы можете скачать последний zip-архив с исходным кодом и распаковать его:
$ 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 PH1424/down.php SQL Injection
#Используйте команду info для просмотра подробной информации о соответствующем плагине
ZEROScan > info demo
appName: PHP
appVersion: 1230
Author:
123
Description:
PH1424/down.php SQL Injection
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 Cookie
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
#Конечные результаты сохраняются в текстовый файл в каталоге 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": "cookie"
},
{
"Name": "Report",
"Current Setting": "",
"Required": False,
"Description": "Нужен ли HTML-отчёт?"
},
]
return expInfo
#В плагине вы можете определять любые нужные вам функции
def yourDefinition():
return "test_plugin"
#exploit(target, headers=None) — это функция выполнения, она обязательна и должна принимать два параметра
#Параметр target указывает цель, headers можно использовать для реализации случайного User-Agent
def exploit(target, headers=None):
log.process("Requesting target site:"+ target)
#верните нужную вам информацию
#Однако фреймворк будет считать успешным и отображать только те сканирования, у которых есть возвращаемое значение
return yourDefinition()
Данное программное обеспечение предназначено только для обучения и обмена. Не используйте его в незаконных целях, иначе автор не несёт ответственности за последствия.