链接:https://zhuanlan.zhihu.com/p/304572787
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这篇文章摘录至《渗透测试方法论之 Linux 提权》,目前该课程已上线蓝桥教育平台,其中梳理了 Linux 提权的十种方法,并且每个提权场景都会搭配相应的在线实战实验,能帮助你更好的理解提权的原理,掌握提权的方法和技巧。
课程制作非常不易,共花费了我十多个周末来修修改改,课程价格实惠就几十块钱,如果对你有帮助的话,就请支持我一下吧,真心的感谢!
课程上线首周有八折优惠,加上我的专属优惠码(7MaDpzNc)还能折上折哦!
渗透测试方法论之 Linux 提权实战www.lanqiao.cn/courses/2650
在开始学习 Linux 提权之前,我们需要先理解什么是提权?为什么要进行提权?
一次完整的渗透测试流程,应该包含以下 8 个步骤:
在渗透测试前期,我们会想尽办法通过「某个漏洞攻击」获取到目标主机系统上的一个 shell 用于执行系统命令,从而达到控制目标主机的目的,也就是图中的第4步。
当我们获取到的初始 shell 为低权限用户时,需要想办法提升权限为高权限用户,这个过程就叫做系统权限提升,简称「提权」 (对应图中第5步)。
有些同学会有一个疑惑:为什么同样是通过漏洞攻击获取到的 shell ,有时候是低权限,有时候又是高权限呢?
下面以一个简单的例子来说明:
通常情况下 Web 服务架构如上图所示:后端 linux 服务器通过 Tomcat 中间件提供 Web 服务。
如今的计算机操作系统都是基于多用户设计的,通常一台计算机上同时存在着多个不同权限的系统用户,而在 Linux 服务器上,每个服务都需要先赋予某个用户权限才能运行。
用户权限定义:「用户权限」是用来控制某个系统用户被允许做哪些操作和不允许做哪些操作。
假设 tomcat 服务以普通用户 web-user
的权限运行并提供 Web 服务,此时如果黑客通过 Web 漏洞获取到 shell,此 shell 就是一个 web-user
用户权限的 shell——此时就需要提权。
反之,若 tomcat 是以 root 用户权限运行,那黑客获取到的 shell 就是 root 权限。
在渗透测试中,高权限 shell 能带来以下好处:
简而言之,获取更高权限的 shell,能为渗透测试后期的工作带来便利。
摘录至蓝桥教育平台《渗透测试方法论之 Linux 提权》第十二章,内容会有所删减。
在前面的实验中,我们已经为大家介绍了多种 Linux 提权方法,这些方法已经覆盖到了实战中的绝大部分场景,但如果你遇到前面所有的方法都无法成功提权时,别忘了还有一种最原始但有用的方法可以尝试——暴力破解。
通常来说,可以通过两种途径暴力破解 root 用户的密码:
下面我依次为大家介绍这两种方法。
Linux su 命令用于切换为其他使用者身份,除 root 外,其他用户使用时需要输入将要切换的「目标用户」的密码。
su 命令暴力破解使用的工具是 sucrack
。
sucrack 是一个多线程的Linux
工具,用于通过 su 爆破本地用户密码。
因为 su 命令需要从 TTY shell 获取用户输入,因此不能只用一个简单的 shell 脚本来完成爆破,sucrack 是采用 c 语言编写的工具,并且支持多线程,爆破效率非常高。
sucrakck 官方地址如下:
https://leidecker.info/projects/sucrack.shtml
在实战环境中,靶机可能是无法连接外网的,因此我们可以使用如下两种方法安装 sucrack:
sucrack
源码并上传到靶机上,再编译运行。sucrack
源码,在本地编译好之后再上传到靶机运行。本课程旨在为大家演示 sucrack
的用法,因此为了方便我们直接使用 apt 安装 sucrack :
sudo apt install sucrack
如上图所示,安装成功。
sucrack 的用法非常简单,最基础的命令如下:
sucrack -w 20 wordlists.txt
参数解释:
-w
指定线程数wordlists.txt
爆破使用的字典sucrack 默认爆破 root 用户,你也可以使用 -u
指定要爆破的用户:
sucrack -u myuser -w 20 wordlists.txt
我预先准备了一份密码字典用于演示,存放在 /tmp/common-wordlists.txt
,同学们也可以使用自己的字典。
使用如下命令尝试爆破 root 密码,线程数保守一点设定为 20:
sucrack -w 20 /tmp/common-wordlists.txt
开始爆破之后,按键盘任意键刷新显示进度:
等待一会,成功破解出 root 用户的密码为 **ly:
然后使用 su root
切换为 root 用户:
sucrack 功能是非常简单强大的,你学会了吗?
SSH 服务的配置文件有为两个,分别是:
仅当 /etc/ssh/sshd_config
中 PermitRootLogin
设置为 yes,root 用户才能登录 ssh:
因此,在通过 ssh 爆破 root 用户密码之前,我们需要先使用如下命令来查询靶机是否允许 root 用户通过 ssh 登录:
注意,此时我们已经获取到目标靶机的初始 shell,因此可以直接查看靶机上的 sshd 配置文件,后续的 ssh 爆破也是在本地进行的。
cat /etc/ssh/sshd_config |grep -i permitrootlogin
当 PermitRootLogin 被设置为 yes
时,才用尝试 SSH 暴力破解,否则就没必要在尝试了。
SSH 协议爆破使用到的工具是 hydra,hydra 是一款非常著名的爆破工具,除了 SSH 协议以外,hydra 还支持众多其他协议例如 RDP、SMB、HTTP、MySQL 等,由于篇幅有限,具体可以参考下面这篇文章:
https://github.com/Jewel591/OSCP-Pentest-Methodologies/blob/master/Password%20Attacks/README.md
hydra 在 Kali Linux 上默认安装,实验主机的 ubuntu 环境也已经提前安装好,爆破 SSH 协议的语法如下:
hydra -l root -P passwords.txt -t 4 -V <IP> ssh
参数解释:
-l
: 指定用户名-P
: 指定爆破字典-t
: 指定爆破线程-V
: 查看破解详情、进度下面我们尝试爆破 root 用户的密码,字典仍然使用 /tmp/common-wordlists.txt
:
hydra -l root -P /tmp/common-wordlists.txt -t 64 -V 127.0.0.1 ssh
如上图所示,成功爆破出 root 用户的密码。
注意:如果你使用的 hydra 是 v9.0 之前的版本,在爆破 ssh 协议时很可能会出现误报,请先升级后再使用(实验环境是 v9.2)。
在本节实验中,我们学习了通过两种途径爆破 SSH 服务的方法—— su
和 SSH
,并且分别介绍了对应的两种破解工具的使用。
更多提权技巧详解,请见《渗透测试方法论之 Linux 提权》。