Boofuzz не перезапускает процесс после сбоя
Я учусь пушить с помощью boofuzz. У меня все настроено на Windows 7 VM. Цель - приложение Vulnserver. Так как я знаю TRUN
, GMON
, а также KSTET
Команды уязвимы, я помещаю эти команды в s_group
список. Я ожидаю vulnserver.exe
Процесс сбой на TRUN
команду, перезапустите, а затем продолжите тестирование других команд. Ниже приведен скрипт boofuzz, который я использовал.
#!/usr/bin/python
from boofuzz import *
from boofuzz import pedrpc
host = "172.16.37.201"
port = 9999
# Define request
s_initialize("Vulnserver")
s_group("verbs", values=["TRUN", "GMON", "KSTET"])
if s_block_start("test", group="verbs"):
s_delim(" ")
s_string("AAA")
s_string("\r\n")
s_block_end("test")
# Define Session
logger = FuzzLogger(fuzz_loggers=[FuzzLoggerText()])
session = sessions.Session(log_level=10, sleep_time=0.03, fuzz_data_logger=logger)
connection = SocketConnection(host, port, proto="tcp")
target = sessions.Target(connection)
target.procmon = pedrpc.Client(host, 26002)
target.procmon_options = {
"proc_name":"vulnserver.exe",
"stop_commands":['wmic process where (name="vulnserver.exe") delete'],
"start_commands":['C:\\Temp\\vulnserver.exe 9999'],
}
session.add_target(target)
session.connect(s_get("Vulnserver"))
session.fuzz()
После запуска vulnserver.exe
Я запускаю скрипт boofuzz и получаю следующую ошибку:
.....
+0c: 41414141 (1094795585) -> N/A
+10: 41414141 (1094795585) -> N/A
+14: 41414141 (1094795585) -> N/A
disasm around:
0x41414141 Unable to disassemble
SEH unwind:
ffffffff -> ntdll.dll:774d61a5 mov edi,edi
[2016-09-02 13:24:06,178] Test Case: 53
[2016-09-02 13:24:06,178] Info: primitive name: None, type: String, default value: AAA
[2016-09-02 13:24:06,178] Info: Test case 53 of 8352 for this node. 53 of 8352 overall.
Traceback (most recent call last):
File "auto.py", line 34, in <module>
session.fuzz()
File "C:\Python27\lib\site-packages\boofuzz\sessions.py", line 414, in fuzz
self._fuzz_current_case(*fuzz_args)
File "C:\Python27\lib\site-packages\boofuzz\sessions.py", line 846, in _fuzz_current_case
target.open()
File "C:\Python27\lib\site-packages\boofuzz\sessions.py", line 71, in open
self._target_connection.open()
File "C:\Python27\lib\site-packages\boofuzz\socket_connection.py", line 118, in open
self._sock.connect((self.host, self.port))
File "C:\Python27\lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 10061] No connection could be made because the target machine actively refused it
Ошибка указывает, что boofuzz не перезапустил vulnserver.exe
процесс. Ниже вывод от process_monitor.py
если это поможет
C:\Tools\boofuzz>python process_monitor.py --crash_bin "crash.bin" --proc_name "vulnserver.exe" --port 26002
[01:23.48] Process Monitor PED-RPC server initialized:
[01:23.48] crash file: C:\Tools\boofuzz\crash.bin
[01:23.48] # records: 0
[01:23.48] proc name: None
[01:23.48] log level: 1
[01:23.48] awaiting requests...
[01:24.01] updating target process name to 'vulnserver.exe'
[01:24.01] updating stop commands to: ['wmic process where (name="vulnserver.exe") delete']
[01:24.01] updating start commands to: ['C:\\Temp\\vulnserver.exe 9999']
[01:24.01] debugger thread-1472837041 looking for process name: vulnserver.exe
[01:24.01] debugger thread-1472837041 found match on pid 1060
[01:24.06] debugger thread-1472837041 caught access violation: '[INVALID]:41414141 Unable to disassemble at 41414141 from thread 1904 caused access violation'
[01:24.06] debugger thread-1472837041 exiting
[01:24.06] debugger thread-1472837046 looking for process name: vulnserver.exe
Спасибо!
1 ответ
TL;DR
Невозможность перезагрузки является результатом ряда ошибок. Бежать pip install --upgrade boofuzz
чтобы получить v0.0.5 или новее, или загрузите последнюю версию кода с Github.
ошибка process_monitor
Ключевая проблема заключается в том, что сбои, обнаруженные procmon, регистрировались как информация, а не сбои, что означает, что перезапуск не был инициирован. Исправить пиар.
ошибка
Эта строка:
socket.error: [Errno 10061] No connection could be made because the target machine actively refused it
намекает на то, что тестируемое приложение скорее всего зависло. Boofuzz должен справиться с этим, а не сбой. Эта проблема была зарегистрирована и исправлена.
Другая ошибка process_monitor
Обратите внимание на ваш process_monitor.py
выведите строку:
[01:23.48] proc name: None
Название Proc не устанавливается! Ошибка в process_monitor.py
строка 368:
if opt in ("-p", "--proc_Name"): #oops!
Так должно быть --proc_name
не --proc_Name
!
Эта проблема была исправлена в последнем коде. Но обходной путь будет использовать короткое имя -p
вместо --proc_name
,