freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

CVE-2021-28073 Ntopng权限绕过漏洞复现
FreeBuf-329171 2021-08-09 16:40:33 259632

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 文件。

其相关代码如下:

charpath[255] ={ 0}, uri[2048];
structstatbuf;
boolfound;
...
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=newLuaEngine(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

image-20210731092703804

查看容器,启动成功

docker ps

image-20210731092722481

4.访问登录页面

http://192.168.141.131:3000

image-20210731092752902

输入账号密码 admin/admin 进行登录,进去重置一下密码

image-20210731092814418

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

image-20210731092836015

0x04 漏洞复现

1.使用poc进行验证

计算出ntopng lua目录的长度

python3 poc.py --urlhttp://192.168.141.131:3000/ baselength

image-20210731092853754

浏览我们想要未经授权访问的页面或界面,如/lua/find_prefs.lua,会被重定向到登录页面。

python3 poc.py --urlhttp://192.168.141.131:3000/ generate -l36-pfind_prefs.lua

image-20210731092911250

直接访问回显的 url 即可未经授权进行访问

image-20210731092932013

0x05 防护建议

1)将ntopng更新至相关commit记录之后

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

2)若无需求,将其功能设置为仅对可信地址开放

# 渗透测试 # 黑客 # web安全 # 漏洞分析 # 网络安全技术
本文为 FreeBuf-329171 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf-329171 LV.5
这家伙太懒了,还未填写个人描述!
  • 27 文章数
  • 7 关注者
CVE-2020-13942 Apache Unomi 远程代码执行漏洞复现
2021-08-31
CVE-2020-11651CVE-2020-11652 SaltStack认证绕过漏洞、目录遍历漏洞
2021-08-30
CVE-2020-1938 Tomcat AJP漏洞复现
2021-08-27
文章目录