天天看点

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)若无需求,将其功能设置为仅对可信地址开放

继续阅读