概述
漏洞详情
Cisco HyperFlex HX数据平台安装程序使用基于HTTP的Web控制台,可通过https://<server_name>访问。
其中<server_name>是安装Cisco HyperFlex HX的计算机名称。HTTP又称超文本传输协议HTTP,用于客户端和服务器端之间的通信。客户端向服务器发送请求,服务器将响应回复给客户端。一个HTTP请求由请求行、请求头、一个空行和一个可选的消息体组成:
Request = Request-Line headers CRLF [message-body]
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Headers = *[Header]
Header = Field-Name ":" Field-Value CRLF
其中CRLF表示由回车(CR)字符后跟换行(LF)字符组成的行终止符序列,SP表示空格字符。参数可以在请求URI或消息正文中作为名称-值对从客户端传递到服务器,具体取决于使用的方法和内容类型标头。例如,使用GET方法传递名为“param”,且参数值为“1”的一个简单的HTTP请求,如下所示:
GET /my_webapp/mypage.htm?param=1 HTTP/1.1
Host: www.myhost.com
使用POST方法的HTTP请求可能如下所示:
POST /my_webapp/mypage.htm HTTP/1.1
Host: www.myhost.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 7
param=1
如果需要传递多个参数/值对,就需要使用“&”符号对键值对进行分割:
var1=value1&var2=value2&var3=value3...
远程用户可以向Cisco HyperFlex HX服务器的/auth/端点提交请求,以便在安装操作之前对其进行身份验证。以下是提交到/auth/以执行系统恢复和重启操作的请求示例:
OST /auth/ HTTP/1.1
Host: 172.16.20.56:8080 Connection: keep-alive Content-Length: 27
[... truncated for readability ...]
username=<someName>&password=<somePass>
前端NGINX服务器会将HTTP请求转发到侦听TCP/8082端口的后端HTTP服务器:
location ~ /auth/
{
proxy_pass http://127.0.0.1:8082;
proxy_set_header Host $host;
proxy_read_timeout 3600;
}
HTTP服务器在ELF可执行文件/opt/springpath/auth/auth中实现。当它接收到发送到/auth/端点的HTTP请求时,会调用main_loginHandler()函数对请求进行处理。该函数首先会使用HTTP请求中提供的用户名值,从/etc/shadow文件的行中提取salt值。然后它将调用main_validatePassword()函数来验证用户提供的密码。该函数最终调用main_checkHash()函数。为了计算提供密码的哈希值,该函数将使用生成的Python代码,如下所示:
python -c 'import crypt; print crypt.crypt("<somePass>", "<salt>")'
其中<somePass>是HTTP请求中提供的密码,<salt>是从/etc/shadow文件中提取的值。
这里存在一个Python代码注入漏洞。该漏洞是由于在使用密码生成Python代码字符串之前,未能正确验证密码的值导致的。攻击者可以在password参数的值中包含Python命令注入字符,以注入任意Python代码。例如,如下所示的值:
",eval(compile("""__import__('os').popen(r'COMMAND').read()""",'','single'))#
这意味着生成的Python代码将类似于:
import crypt; print crypt.crypt("",eval(compile("""__import__('os')
.popen(r'COMMAND').read()""",'','single'))#", "<salt>")
因此,在调用生成的Python代码时将执行OS命令。
未经身份验证的远程攻击者可以通过向目标服务器,发送精心设计的请求来利用此漏洞。成功利用此漏洞可能允许攻击者以root用户身份在受影响的设备上执行任意命令。
总结
思科在2021年5月对该漏洞进行了修复,在其发布的安全公告中,提到没有解决方法。因此建议受影响的用户尽快安装相应的补丁以避免受到此漏洞的影响。
END
本文始发于微信公众号(SecTr安全团队):CVE-2021-1497:Cisco HyperFlex HX中的命令注入漏洞详情
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论