OpenSSH <=7.2p1 xauth命令注入漏洞(CVE-2016-3115)研究

工作中扫描发现OpenSSH <=7.2p1 xauth命令注入漏洞(CVE-2016-3115),对于该漏洞,我们做出如下验证与研究:

1. 漏洞信息
e1
OpenSSH <=7.2p1在实现上存在xauth命令注入漏洞,可导致绕过forced-command及/bin/false。

2.漏洞研究与验证:
AIX和Linux在创建用户时,useradd命令可以指定/bin/false选项,意思是禁止该用户以任何形式登陆系统,当选择该选项时,用户尝试ssh远程服务器将会禁止登陆。forced-command配置可以使ssh client端登陆服务器时运行指定的命令。该漏洞可以绕过这两个限制,OpenSSH低于7.2p1版本的都受此漏洞影响。
测试环境:

e2
e3
首先创建一个用户ln,并且指定/bin/false:

Useradd  -m -s /bin/false ln  

然后为用户ln设置密码:

Passwd ln  

OK,查看一下/etc/passwd 看用户是否创建成功:

cat /etc/passwd  

e4
用户ln创建成功,并且设置为/bin/false,此时如果用户ln ssh登录服务器时,将不被允许:
e5
因为配置了/bin/false,所以ln任何形式的登陆都不被允许,登录框变灰,但利用该漏洞可以成功绕过该限制,详细poc参见附件(需要python环境),我们在client端运行该poc:

Python poc.py xx.188.197.38 22 ln Aa-11111  

e6 成功绕过/bin/false登陆限制,如果OpenSSH开启ForwardX11选项,我们可以进一步注入xauth命令,执行.readfile,查看/etc/passwd文件:
e7
命令执行成功,成功读取/etc/passwd文件内容。

3.总结:

该漏洞可以绕过登陆限制,执行命令,并且已有成熟的poc,利用较为容易,具有一定的风险,建议升级至OpenSSH最新版本7.2p1。



blog comments powered by Disqus