“蓝桥教育”是国内顶尖的以在线实验为核心的教育平台。本文摘自《渗透测试方法论:Linux提权》。目前,该课程已在“蓝桥教育平台”上线,对Linux提权进行了梳理。十种提权方法,每种提权场景都会搭配相应的在线实战实验,可以帮助您更好地理解提权原理,掌握提权的方法和技巧。
别忘了使用专属折扣码()享受折扣哦! 1.基础理论知识
在开始学习Linux提权之前,我们需要了解以下三个问题:
只有了解了以上三个问题,我们在后续学习具体的升力技巧时才能够明白到底发生了什么以及为什么发生。
0x1 什么是权限提升?
首先我们来看看什么是系统提权?
一个完整的渗透测试流程一般包括以下8个步骤:
主机发现 > 服务枚举 > 实施攻击 > 获取shell > 权限提升 > 权限维护 > 内网渗透 > 痕迹清除
在渗透测试初期,我们会尽力通过“某漏洞攻击”的方式获取目标主机系统上的shell来执行系统命令,从而达到控制目标主机的目的,也就是第4步图中。
当我们最初获得的shell是低权限用户时,我们需要想办法将权限提升到高权限用户。这个过程称为系统权限提升,简称“权限提升”(对应图中的步骤5)。
0x2 为什么shell有不同的权限?
有同学会有疑问:为什么通过漏洞攻击获得的shell有时是低权限,有时是高权限呢?
下面用一个简单的例子来说明:
通常,Web服务架构如上图所示:后端Linux服务器通过中间件提供Web服务。
当今的计算机操作系统是基于多用户设计的。通常一台计算机上同时存在多个具有不同权限的系统用户。在Linux服务器上,每个服务都需要被赋予一定的用户权限才能运行。
用户权限定义:“用户权限”用于控制某个系统用户可以进行哪些操作,不允许进行哪些操作。
假设该服务以普通用户www-data的权限运行,提供Web服务。这时,如果黑客通过Web漏洞获得了shell,那么该shell将是具有www-data用户权限的shell——这种情况下,就需要进行提权。
相反,如果以root用户权限运行,则黑客获得的shell将具有root权限。
0x3 为什么需要提权?
在渗透测试中,高权限shell可以带来以下好处:
总之,获得更高权限的shell可以给渗透测试的后期工作带来方便。
2.Linux提权方法
Linux中常用的提权方法有以下几种:
文件提权 文件提权 SUID 可执行文件提权 Cron Jobs 定时任务提权 通配符注入提权 sudo 滥用提权 敏感文件提权 跳板用户提权 Linux 内核漏洞提权 暴力提权 0x1 文件提权
/etc/和/etc/文件是Linux系统登录认证的关键文件。如果系统运维人员对文件内容或权限配置错误,可以利用这些文件进行系统权限提升。
本章我们主要讨论/etc/文件提权的方法。 /etc/文件提权的方法将在下一章讨论。
本章的实验需要Linux操作系统文件权限的基础知识。如果您对Linux文件权限不了解,建议先学习《Linux基础入门》课程实验三——用户与文件权限管理。
知识点
《理解/etc/文件的含义》
我们先来了解一下/etc/内容的含义:
Linux密码信息存储在两个文件中:/etc/和/etc/
/etc/文件用于保存用户信息。每行代表一个用户。每行由冒号分为七个部分::
用户名和密码。如果是的话
例如,假设 /etc/ 文件中的某一行如下:
其含义解释如下:
简单来说,登录Linux系统时有以下几个步骤:
检查“输入的用户名”是否与/etc/文件中一行的第一个字段匹配。如果匹配成功,则比较该行第二个字段中的密码。如果两者匹配成功,则登录成功。登录成功后所拥有的权限由第三字段UID和第四字段GID决定。其中,UID=0代表root用户,也就是说——无论第一个字段代表的用户名是什么,只要UID=0,该账户就拥有root权限——这在提权中非常重要。
可见/etc/文件在Linux登录认证过程中起着非常关键的作用。
试想一下,如果我们能够伪造、篡改/etc/文件的内容,我们就可以轻松登录成功,获取任意用户权限。
但一般情况下,只有root用户对/etc/文件有写权限,其他用户只有读权限。但有时由于系统管理员的错误配置,也会给我们带来机会。
“通过/etc/文件提升权限”
一般来说,通过/etc/提权有两种方式:
如果你有/etc/的w(写)权限,可以直接添加root权限的用户。如果root用户密码哈希值存储在/etc/中,则可以使用john来破解。场景1:/etc/有写权限。
简介:/etc/权限配置不正确,导致普通用户没有写权限。
开始尝试
用于查看当前用户:
使用id查看用户组id信息:
从上图中的信息可以看出,当前的用户组是普通用户组-syl,没有明显的可以进一步利用的信息。
接下来,使用以下命令检查/etc/和/etc/文件的权限:
ls -alh /etc/passwd /etc/shadow
结果如上图所示。可以发现,由于运维人员配置不正确,“其他用户”对/etc/文件具有“写”权限。
那么接下来的使用思路就是:
“构造一行用户数据,添加到文件中,自定义用户名和密码,并将UID设置为0,这时候我们就可以登录获取root权限了。”
使用以下命令查看文件中root用户数据的格式,并以此为参考构建我们的用户数据:
cat /etc/passwd|grep root
结果是:
root:x:0:0:root:/root:/bin/bash
第一步——首先设置用户名:将用户名从root更改为任何其他用户名,例如syl-:
syl-passwd:x:0:0:root:/root:/bin/bash
步骤 2 - 设置密码:如前所述,第二个字段 x 表示用户的密码存储在 /etc/ 文件中。如果/etc/中不需要保存密码,可以直接将x替换为“”。
但需要注意的是,这里的“密码”并不是明文密码,而是经过哈希算法加密后的密文字符串。那么如何计算hash字符串呢?我们可以使用套件。
使用以下命令创建 Linux 哈希,密码为:
openssl passwd -1 -salt ignite pass123
参数解释:
计算出的哈希值是 $1$$。用它来代替x。最后我们构建的用户数据如下:
syl-passwd:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash
接下来将其添加到文件中:
echo 'syl-passwd:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /etc/passwd
注意:
您必须使用单引号,而不是双引号。使用 >> 代替 >
使用以下命令确认我们已经添加成功:
cat /etc/passwd|grep syl-passwd
确认添加成功后,我们接下来使用su syl-切换到syl-用户,密码为:
如上图所示,可以看到我们切换成功后,成功获得了Linux系统的最高权限——root权限。
场景 2:/etc/ 存储用户密码哈希
简介:密码哈希值存储在/etc/中,而不是/etc/中。
开始尝试
和以前一样,使用以下命令检查 /etc/ 和 /etc/ 文件的权限:
ls -alh /etc/passwd /etc/shadow
但是发现权限配置都是正确的。普通用户只有/etc/文件的读权限。
接下来检查/etc/文件的内容:
cat /etc/passwd
找到这样一行:
root:$1$ignite$J98A8EVPG1O40.WnwrPEM1:0:0:root:/root:/bin/bash
这种情况通常是由于主机之前被入侵过,或者运维人员配置错误造成的。这样我们就获得了root用户的密码hash,但是如何使用呢?
这就需要用到哈希破解神器——john。 Kali 上默认安装了这个工具,但是你需要自己在 Kali 上安装。打开新终端并输入以下命令进行安装:
sudo apt install john
john将调用指定的字典来破解哈希字符串。破解时间取决于词典大小和计算机性能。 john 支持使用内置词典,也可以指定自定义词典。本课程中,我们使用john自己的字典来完成破解。
首先将之前获得的root用户hash写入到文件hash.txt中:
# 此处必须单引号
echo 'root:$1$ignite$J98A8EVPG1O40.WnwrPEM1:0:0:root:/root:/bin/bash' > ~/hash.txt
然后使用john来破解:
john ~/hash.txt
如上图所示,John成功破解了密码为hello。 (因为本次实验中的密码比较简单,所以John破解得很快。在实际环境中,密码复杂度可能会更高,所以破解时间会更长。)
我们回到-syl用户shell,使用su命令切换到root用户(输入密码时不会显示任何内容):
至此,我们已经成功将权限提升到root用户了。
注意:
john工具只会对同一个破解文件中的相同哈希记录进行一次破解。如果第二次执行john ~/hash.txt,将不会得到结果。您只会得到以下输出:
如果想查看上次爆炸的结果,需要使用--show参数:
《本章实验总结》
在本节实验中,我们学习了Linux系统登录认证流程、/etc/文件的含义,并通过实验深入了解了Linux系统文件提权方法。
祝您在接下来的课程学习愉快,有所收获~
课后反思问题
我们添加构造数据时使用的命令如下:
echo 'syl-passwd:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /etc/passwd
为什么我们需要使用单引号? 0x2 其他提权方法
有关权限提升技术的更详细说明,请参阅《渗透测试方法论:Linux 权限提升》。我们真诚地希望能为您提供帮助,并感谢您的支持。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。