编辑/etc/passwd文件进行权限升级的技巧
0x00 前言
在本文中,我们将学习“修改/etc/passwd文件以创建或更改用户的root权限的各种方法”。有时,一旦目标被攻击,就必须知道如何在/etc/passwd文件中编辑自己的用户以进行权限升级,其中我们将此技巧应用于权限提升。打开下面给出的链接:
链接1:Hack the Box Challenge: Apocalyst Walkthrough
链接2:Hack the Hackday Albania VM (CTF Challenge)
0x01 基础知识
首先,在进行提权之前,我们应该深入了解/etc/passwd文件。在etc目录中,我们将得到三个最重要的文件,即passwd、group和shadow。
etc/passwd:它是一个可读的文本文件,存储用户帐户的信息
etc/group:也是一个可读的文本文件,它存储组信息以及用户所属的组,可以通过该文件识别。
etc/shadow:它是一个包含加密密码的文件,任何用户的用户信息都将过期。
/passwd: 文件中的详细信息格式


详细说明
Username:第一个字段表示用于登录用户的名称
Encrypted password:x表示加密密码,实际存储在/shadow文件中。如果用户没有密码,则密码字段将用*(星号)表示
User Id (UID):必须为每个用户分配一个用户ID(UID)。Uid 0(零)为root用户保留,UID 1-99为进一步的预定义帐户保留,UID 100-999为管理目的由系统保留。UID 1000几乎是第一个非系统用户,通常是管理员。如果我们在Ubuntu系统上创建一个新用户,它将被赋予UID 1001
Group Id (GID):表示每个用户的组;与UID一样,前100个GID通常保留以供系统使用。GID为0与root组相关,GID为1000通常表示用户。新组通常分配GID从1000开始
Gecos Field:通常,这是一组以逗号分隔的值,用于说明与用户相关的更多详细信息。GECOS字段的格式表示以下信息:
用户全名
地址和门牌号码或联系人
办公电话号码
家庭电话号码
任何其他联系信息
Home Directory:表示用户主目录的路径,其中存储用户的所有文件和程序。如果没有指定的目录,则/将成为用户的目录
Shell:它表示(由用户)执行命令并显示结果的默认shell的完整路径
注意:每个字段用(冒号)分隔
0x02 提权技巧
1.默认方法添加用户
让我们首先通过cat命令打开/etc/passwd文件,以查看系统中当前可用的用户

从上面给出的截图中,您可以看到“raj”是最后一个使用uid 1000的用户。这里gid 1000表示它是非系统用户。
当我们使用adduser命令添加任何用户时,让我们看看/passwd文件中实际发生了什么。因此,在这里您可以清楚地看到下面给出的信息以及截图。
adduser user1
Username: user1
GID: 1002
UID: 1001
Enter password: 任意密码
Home Directory: /home/user1
Gecos Filed:full Name(全名), Room Number(门牌号), Work phone(工作电话), Home Phone(家庭电话), Other

当您打开/passwd文件时,您会注意到上述所有信息都存储在/etc/passwd文件中

2./etc/passwd文件中手动编辑用户
一般来说,普通用户对passwd文件具有只读权限,但有时用户也可能具有读/写权限,在这种情况下,我们可以借助上述理论将自己的用户添加到/etc/passwd文件中。
user2:*:::,,,:/home/user2:/bin/bash
*(星号)符号表示对于user2空口令。

因为我们已经为user2分配了GID 1003 ,所以我们也需要在/etc/group文件中对其进行处理
请遵循以下格式:
语法:username:x:gid
因为我们没有密码,所以在x处使用*符号
user2:*::

现在,使用passwd命令为user2设置密码并输入密码。
passwd user2

由于我们在不使用adduser命令的情况下手动创建了一个新用户user2,因此在/etc/shadow文件中找不到任何有关信息。但是它在/etc/passwd文件中,此处*符号已被加密密码值替换。通过这种方式,我们可以创建自己的用户以进行权限提升。

3.OpenSSL
有时无法执行passwd命令来设置用户的密码; 在这种情况下,我们可以使用OpenSSL命令,它将使用salt生成加密密码。
OpenSSL passwd将使用salt字符串和基于MD5的BSD密码算法1计算指定密码的哈希值
语法:openssl passwd-1-salt[salt value]password
openssl passwd - -salt user3 pass123

我们将获得加密的密码,然后在终端中输入vipw命令打开/passwd文件,并手动添加用户名。按照添加新用户user3的手动步骤,在*或X处粘贴加密值以获取密码。
在下图中,您可以看到,我已经分配了uid:0和gid:0以及主目录/root/root,因此我们为用户user3赋予了root权限。

现在切换用户并通过user3访问终端并确认root访问权限。
YESSSSSS表示以root权限访问
注意:您还可以修改其他用户的密码,方法是将:x:替换为您自己加密的密码,然后使用您的密码登录该用户帐户

4.mkpasswd
mkpasswd类似于openssl passwd,它将生成指定密码字符串的哈希值。
语法:mkpasswd -m [hash type] {password}
mkpasswd -m SHA- pass

它将为您的密码字符串生成哈希值,重复上述步骤或更改其他现有用户的密码。
如果您将比较user1的信息,那么您还可以注意到不同。我们已经替换了: X: 来自我们的哈希值。

现在切换用户并通过user1访问终端并确认root访问权限
su user1
whoami
id
很好,成功以root权限访问

5.Python
使用python,我们可以导入crypt库,并将salt添加到我们的密码中,这将创建包含salt值的加密密码。
python -c 'import crypt; print crypt.crypt("pass", "$6$salt")'

它将生成密码字符串的哈希值,重复上述步骤或更改其他现有用户的密码。如果您将比较user2的信息,那么您还可以注意到不同。我们已经从新的哈希值替换了旧的哈希值。

现在切换用户并通过user2访问终端并确认root访问权限。
su user2
whoami
id
pwd
sudo -l
它也能进行提权,以前它是/home/user2目录的成员,但是在成为/root目录的成员之后,您可以注意到它拥有root用户的所有特权

6.Perl
类似地,我们可以使用Perl和crypt来使用salt值为我们的密码生成哈希值。
perl -le 'print crypt("pass123", "abc")'

您将获得加密的密码,然后在终端中键入vipw命令并手动添加用户名,再次打开/passwd文件。按照添加新用户user4的手动步骤,将加密值粘贴到*或X的位置以获取密码。
在下图中,您可以看到,我分配了uid:0和gid:0以及home directory/root/root,因此我们为user4赋予了root权限

现在切换用户并通过user4访问终端并确认root访问权限。
su user4
whoami
id
很好,这种方法也能获取root权限。

7.PHP
同样,我们可以使用PHP和crypt来使用salt值为我们的密码生成哈希值。
php -r "print(crypt('aarti','123') . \"\n\");"

您将获得加密的密码,然后在终端中键入vipw命令打开/passwd文件,并手动添加用户名。按照添加新用户user5的手动步骤,并将加密值粘贴到密码字段中。
在下图中,您可以看到,我分配了uid:0和gid:0以及home directory/root/root,因此我们为user5授予了root权限

现在切换用户并通过user5访问终端并确认root访问权限。
su user5
whoami
id
因此,有很多方法可以为您自己的用户添加root访问权限,这对于在任何主机中获得root权限非常有帮助。

编辑/etc/passwd文件进行权限升级的技巧的更多相关文章
- 使用SUID二进制文件进行Linux权限升级技巧
0x00 基础知识 众所周知,在Linux中一切都以文件存在,包括具有允许或限制三个执行操作(即读/写/执行)权限的目录和设备.因此,当给任何文件设置权限时,应该需要了解允许的Linux用户或限制 ...
- Linux权限管理 文件特殊权限
概述 除了我们前面介绍的rwx权限外,Linux中还有另外三种特殊权限:SUID,SGID,SBIT 权限 执行条件 执行示例 SUID s出现在文件所有者的x权限上. 1. SUID只能用 ...
- 【Linux】文件特殊权限 SUID/SGID/Sticky Bit
linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/b ...
- Linux中的文件特殊权限
linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/b ...
- 解决将/etc/passwd文件中1000改为0后只能guest进入系统的问题 ||ubuntu下将普通用户权限升级为root用户权限的方法;
其实我现在才知道linux系统对于用户权限管理比较严,在ubuntu下系统不允许root权限的用户进入图像界面系统.由于之前没弄过权限这个东西瞬间掉坑了了. 我是想修改一下root下的nginx.co ...
- Linux权限之/etc/passwd文件
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性.系统管理员经常会接触到这个文件的修改以完成对用户的管理工作.这个文件对所有用户都是可读的.但是L ...
- 第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)
2. 文件特殊权限(主要用来临时提升命令执行者或其组身份) 2.1 SetUID (1)SetUID的功能 ①只有可以执行的二进制程序才能设定SUID权限.用来临时提升执行程序(或某条命令)的用户身份 ...
- 第3章 Linux上文件的权限管理
3.1 文件/目录的权限 3.1.1 文件的权限 每个文件都有其所有者(u:user).所属组(g:group)和其他人(o:other)对它的操作权限,a:all则同时代表这3者.权限包括读(r:r ...
- 使用sudo进行Linux权限升级技巧
0x00 前言 在我们之前的文章中,我们讨论了如何使用SUID二进制文件和/etc/passwd 文件的Linux权限提升技巧,今天我们发布了另一种“使用Sudoers文件进行Linux权限提示技巧” ...
随机推荐
- [转]JsonCpp遍历json
#include "json.h" typedef Json::Writer JsonWriter; typedef Json::Reader JsonReader; typede ...
- Sword CRC算法原理
CRC校验原理 CRC校验其根本思想a.发送端和接收端约定一个整数 bb.发送端在原始数据帧后面附加一个数 k ,产生一个新的数据帧c.接收端接收到数据帧后,对接收的数据帧和整数 b 进行位异或操作, ...
- 008-linux shell vim使用
一.概述 vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式) 输入模式 末行模式 模式转换 ...
- Pan wutong团队技术支持
本网页为Pan wutong团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱:2535510006@qq.com
- 解决IDEA打Jar包找不到或无法加载主类问题
转自以下博主内容:https://blog.csdn.net/qq_43189115/article/details/99856659 就是因为打包一直提示有问题,网上很多帖子试过没有用,就是这个博主 ...
- C++11 并发编程库
C++11 并发编程 C++11 新标准中引入了几个头文件来支持多线程编程,他们分别是: <atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_f ...
- 安装 python 爬虫框架 Scrapy
官方安装说明文档:https://doc.scrapy.org/en/latest/intro/install.html#installing-scrapy 一.scrapy 需要以下依赖 二.一般来 ...
- Docker容器部署Mysql数据库服务器
本节会用到的Docker命令如下: docker images 查看mysql镜像id docker run -d -p xxxxxxxxxxxxxxx/zhufc/mysql:v2 通过镜像生成 启 ...
- [转]How to Install Oracle Java 11 in Ubuntu 18.04/18.10
链接地址:http://ubuntuhandbook.org/index.php/2018/11/how-to-install-oracle-java-11-in-ubuntu-18-04-18-10 ...
- 【ARM-Linux开发】【CUDA开发】NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南
NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南 转载请注明作者和出处:http://blog.csdn.net/u011475210 嵌入式平台:NVIDIA Jetson TX1 ...