天天看點

CVE-2021-28073 Ntopng權限繞過漏洞複現

0x00 簡介

ntopng是原始ntop的下一代版本,它是一種監視網絡使用情況的網絡流量探測器。ntopng是基于libpcapa的,它是以一種可移植的方式編寫的,以便在每個Unix平台、MacOSX和Windows上都能運作,它提供了一個直覺、加密的web使用者界面,用于探索實時和曆史交通資訊。

0x01 漏洞概述

Ntopng對外提供web頁面,其4.2及其以前版本web接口的權限認證繞過,導緻攻擊者可以在未授權的情況下請求符合漏洞利用條件的接口,并最終利用伺服器端請求僞造和高危服務實作遠端代碼執行。ntopng 的 Web 界面由 Lua 開發,對于 HTTP 請求的處理、認證相關的邏輯由後端 C++ 負責,檔案為 HTTPswever.cpp。

對于一個 HTTP 請求來說,ntopng 的主要處理邏輯代碼都在 handle_lua_request函數中,ntopng 調用 snprintf 将使用者請求的 URI 寫入到 path 數組中,而 snprintf 會在字元串結尾添加\0。由于 path 數組長度有限,即使使用者傳入超過 255 個字元的路徑,也隻會寫入前 254 個字元,我們可以通過填充 ./來構造一個長度超過 255 但是合法的路徑,并利用長度限制來截斷後面的 .css.lua,即可繞過 ntopng 的認證以通路部分 Lua 檔案。

其相關代碼如下:

char path[255] = { 0 }, uri[2048];
struct stat buf;
bool found;
...
if(strlen(path) > 4 && strncmp(&path[strlen(path) - 4], ".lua", 4))
  snprintf(&path[strlen(path)], sizeof(path) - strlen(path) - 1, "%s", 
  (char*)".lua");

ntop->fixPath(path);
found = ((stat(path, &buf) == 0) && (S_ISREG(buf.st_mode))) ? true : false;

if(found) {
  ...
  l = new LuaEngine(NULL);
  ...
  l->handle_script_request(conn, request_info, path, &attack_attempt, username,
               group, csrf, localuser);
           

0x02 影響範圍

ntopng commit < e8b9721479f401f595c5c7bb151819aceb03ad71
           

0x03 環境搭建

1.安裝虛拟機應用程式(本次測試使用的是VMware Workstation Pro16.1版本)

虛拟機的擷取和安裝可自行上網搜尋相關教程

2.通過 vulhub 搭建 ntopng 環境

https://github.com/vulhub/vulhub/tree/master/ntopng/CVE-2021-28073
           

3.啟動容器

docker-compose up -d
           
CVE-2021-28073 Ntopng權限繞過漏洞複現

檢視容器,啟動成功

CVE-2021-28073 Ntopng權限繞過漏洞複現

4.通路登入頁面

http://192.168.141.131:3000
           
CVE-2021-28073 Ntopng權限繞過漏洞複現

輸入賬号密碼 admin/admin 進行登入,進去重置一下密碼

CVE-2021-28073 Ntopng權限繞過漏洞複現

得到如下界面,即搭建成功

CVE-2021-28073 Ntopng權限繞過漏洞複現

0x04 漏洞複現

1.使用poc進行驗證

計算出ntopng lua目錄的長度

python3 poc.py --url http://192.168.141.131:3000/ baselength
           
CVE-2021-28073 Ntopng權限繞過漏洞複現

浏覽我們想要未經授權通路的頁面或界面,如

/lua/find_prefs.lua

,會被重定向到登入頁面。

python3 poc.py --url http://192.168.141.131:3000/ generate -l 36 -p find_prefs.lua
           
CVE-2021-28073 Ntopng權限繞過漏洞複現

直接通路回顯的 url 即可未經授權進行通路

CVE-2021-28073 Ntopng權限繞過漏洞複現

0x05 防護建議

1)将ntopng更新至相關commit記錄之後

https://github.com/ntop/ntopng/commit/e8b9721479f401f595c5c7bb151819aceb03ad71
           

2)若無需求,将其功能設定為僅對可信位址開放

繼續閱讀