freebsd查看服务_CVE-2019-16278:Nostromo Web服务器的远程命令执行

ff29d1f4c876ae3746feccdb263570b9.png

在这篇文章中,我将分析CVE-2019-16278漏洞的成因,以及如何去利用它。这个漏洞存在于Nostromo web服务上(又名nhttpd),这是一个开源的web服务,在Unix系统上非常流行,例如FreeBSD, OpenBSD等等。

Nostromo由于在验证URL安全性方面存在缺陷,导致目录穿越,任何人都可以遍历系统中任何文件。因此未经过身份验证的远程攻击者可以强制服务器指向/bin/sh这样的shell文件,借此执行任意命令。在我测试时,Nostromo的所有版本,包括最新的1.9.6版本,都存在漏洞。甚至它的开发者网站www.nazgul.ch也有。

在以前Nostromo也出现过目录穿越漏洞,最终也可导致远程命令代码,编号为CVE-2011-0751。漏洞原因在于当时的web服务在对URL进行检查的时机是在URL被解码前,因此攻击者只需将/转换为%2f就可绕过检查,最后paylaod如下:

/..%2f..%2f..%2fbin/sh

虽然Nostromo很快修正了1.9.4版本的CVE-2011-0751漏洞,但现在我们又有了CVE-2019-16278,同样也是目录穿越。

利用

在Shodan上进行搜索,你可以在公网上找到大约2000个Nostromo web服务:"Server: nostromo"

89f5c345ba4a845bce97ccf1ab2aa6a8.png


我也用Python编写了一些PoC来抽查一些服务器。

5bc9db8415a0408fd0e5c0ade4ab6e65.png

如果你查看我的脚本呢,你会发现我发送了一个包含/.%0d./.%0d./.%0d./.%0d./bin/sh的请求。与CVE-2011-0751相比,我仅仅只是加入了大量%0d,Nostromo并不会对这种特殊字符进行检查。你可能想知道为什么加入了这种特殊字符就可绕过安全检查,下面我将详细说明。

让我们看一下Nostromo 1.9.6版本的源代码。

分析:

首先,服务器会验证请求然后处理它。

cf84bd1e5286b02063ac7ac7597e22aa.png

在上图的函数http_verify()中,请求的首行会先进行解码,然后检查/../是否存在。注意,此时攻击请求的首行包含/.r./.r./.r./.r./bin/sh

31a3363801dd474d89693b30b80ff8c5.png

接下来,函数http_proc()会将首行传递给函数http_header()

88f438099b65a5ba1b451cbc75380279.png

漏洞根源就在这,函数http_header()会通过函数strcutl()解析数据。

bd1b539f948635d532cf536958bf13e1.png

而在函数strcutl()的内部,你可以看到它会把字符串中的r(回车)去除。

a6fc2ca89cc9f9f86b27e14ff23ce172.png

最后,得到的路径是/../../../../bin/sh。那么,目录穿越完成,命令执行如何进行呢?在函数http_proc()中的execve()函数(用于执行指定程序)中,它执行了rh->rq_filef,这正是路径过滤后的结果/../../../../bin/sh

6e0c9611bbee3f03ad18c47a125a3aff.png


于是,我们就得到了一个可导致RCE的目录穿越!

如果你有任何问题,请通过我的Twitter和我交流。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:CVE-2019-16278:Nostromo Web服务器的远程命令执行

原文:https://www.sudokaikan.com/2019/10/cve-2019-16278-unauthenticated-remote.htm

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 引言 FreeBSD的起源 Unix的历史发展 FreeBSD的起源和发展 当前FreeBSD的版本 FreeBSD的功能特点 FreeBSD的特点和应用范围 使用FreeBSD的实例 其他相关系统和组织 GNU’s Not Unix GNU/Linux 其他BSD系统 FreeBSD的相关资源 联机文档 出版物 Internet资源 商业服务和支持 第2章 安装与配置 安装之前的准备 硬件设备 安装介质 准备硬盘和软盘 安装FreeBSD 启动安装程序 安装系统 基本系统配置 设置网络 其他安装问题 第3章 系统管理和维护 系统的启动与关闭 系统启动过程 系统启动脚本 系统登录与退出 关闭系统 用户管理 增加用户 超级用户root 登录类别 shell设置 文件系统与磁盘操作 文件的属性 设备文件 安装文件系统 软盘操作 维护文件系统 检查硬盘 调整文件系统的目录结构 建立文件系统 管理交换设备 调整系统设置 调整控制台设置 配置系统时间 进程管理 查看系统状态 定时执行程序 进程的权限 安装应用软件 应用软件的类别 Packages Collection 打印机配置 系统结构 配置打印机 系统日志与备份 系统日志 系统备份 第4章 网络配置与使用 DOD参考模型 基本网络设置 手工配置网络 拨号网络 串口和modem PPP协议 DNS服务 DNS的体系结构 配置缓冲或转发方式的named 定义自己的名字服务 电子邮件 邮件服务器FreeBSD查看邮件 网络文件系统(NFS) NFS客户支持 NFS服务器 第5章 设置和使用X Window 安装和设置X服务器 X Free86的硬件要求 安装XFree86 使用XF86Setup配置X服务器 使用xf86config配置X服务器 使用和配置X Window X Window的基本概念 进入X Window 定制X Window的基本方法 X Window下的中文环境 中文X应用软件 外挂式中文显示与输入软件 中文X服务器 配置文件XF86Config 第6章 定制应用软件与系统内核 编译应用软件 Ports Collection 手工编译安装程序 可执行程序格式 配置FreeBSD内核 为编译内核准备源代码 编译安装新内核 缺省内核配置选项 其他内核设置选项 升级系统 第7章 与Windows系统集成 集成Unix和Windows的方式 NetBIOS与SMB/CIFS协议 NetBIOS名字解析 SMB/CIFS协议 配置和使用Samba 安装samba 配置samba 根据Windows网络设置Samba 访问Windows系统资源 使用smbclient访问Windows资源 使用SharityLight安装SMB文件系统 设置DHCP DHCP的工作过程 设置和使用DHCP 第8章 系统与网络安全 网络安全概念 认证与加密 安全问题 防火墙技术 增强安全设置 设置基本系统 安全工具 设置防火墙功能 设置和使用ipfw/natd 设置和使用ipfilter 构建防火墙 第9章 设置WWW服务 基本概念 超文本传输协议HTTP 数据处理方式 安装和设置Apache 基本安装 配置Apache服务器 服务器的安全控制 对IP地址和域名的控制 基于用户的访问控制 安全连接方式SSL CGI和SSI的安全性 调整服务器性能 单服务器性能调整 提升静态网页服务能力的综合方式 负载均衡技术 基于DNS的负载均衡 反向代理负载均衡 基于NAT的负载均衡技术

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值