渗透测试|记一次 bypass 前端验证 + 后端缺陷

965ba615f6fb0f90b7f9f0895b0f4f3b

0x00 故事的开始

有人找到我,搞攻防请求支援,当然这种请求那当然要逝世呀

0x01 开始渗透

发了一堆站,有ip有域名

我搞了一晚上啥都没发现,本来想挖挖越权啥的

早上起来用jsFinder扫描,说不定有什么接口泄露呢

结果还真扫到了一堆,一看就看到了一些不得了的东西

渗透测试|记一次 bypass 前端验证 + 后端缺陷

getAllUsers,deleteuser等
尝试访问一个接口发现报错
渗透测试|记一次 bypass 前端验证 + 后端缺陷

有可能是未授权!,赶紧构造一下参数

分析js后需要两个参数

渗透测试|记一次 bypass 前端验证 + 后端缺陷

随便构造了一下出现了所有人的信息但是密码全部md5加密了,尝试解密了一下解不出来,size表示显示的字节

渗透测试|记一次 bypass 前端验证 + 后端缺陷

接下来要想办法进入后台进行更多的操作,因为构造参数什么的太麻烦了,他的大部分参数都rsa加密过

渗透测试|记一次 bypass 前端验证 + 后端缺陷

尝试修改过登入的返回包也没用

渗透测试|记一次 bypass 前端验证 + 后端缺陷

改为0表示成功

image-20210604174516077

发现并没有用

image-20210604174618827

如果换做以前的我,我会放弃,但是!我遇到了龙哥(前端代码审计的神)

0x02开始反转

image-20210604174901464

image-20210604175102543

找到了js判断是否登入后台的地方

  1. while (1)
  2. switch (e.prev = e.next) {
  3. case 0:
  4. if (T.a.start(),
  5. document.title = j(t.m eta.title),
  6. i = O bject(P["a"])(), !i) {
  7. e.next = 9;
  8. sessionStorage.setItem("user", JSON.stringify({ "userRole": "admin" }))
  9. break
  10. }
  11. if ("/login" !== t.path) {
  12. e.next = 9;
  13. break
  14. }
  15. o({
  16. path: "/"
  17. }),
  18. T.a.done(),
  19. e.next = 28;
  20. break;
  21. case 9:
  22. if (r = p["a"].getters.name, !r) {
  23. e.next = 15;
  24. break
  25. }
  26. s = JSON.parse(sessionStorage.getItem("user")),
  27. "admin" == s.userRole && "/bg_userManage" !== t.path ? (O bject(a["Message"])({
  28. message: "只有用户管理的权限",
  29. type: "warning",
  30. duration: 5e3
  31. }),
  32. o({
  33. path: "/bg_userManage"
  34. }),
  35. T.a.done()) : "audit" == s.userRole && "/bg_logManage" !== t.path ? (O bject(a["Message"])({
  36. message: "只有日志管理的权限",
  37. type: "warning",
  38. duration: 5e3
  39. }),
  40. o({
  41. path: "/bg_logManage"
  42. }),
  43. T.a.done()) : "user" != s.userRole || "/bg_logManage" !== t.path && "/bg_userManage" !== t.path ? (o(),
  44. T.a.done()) : (o({
  45. path: "/404"
  46. }),
  47. T.a.done()),
  48. e.next = 28;
  49. break;
  50. case 15:
  51. return e.prev = 15,
  52. e.next = 18,
  53. p["a"].dispatch("user/getInfo");
  54. case 18:
  55. o(),
  56. e.next = 28;
  57. break;
  58. case 21:
  59. return e.prev = 21,
  60. e.t0 = e["catch"](15),
  61. e.next = 25,
  62. p["a"].dispatch("user/resetToken");
  63. case 25:
  64. a["Message"].error(e.t0 || "Has Error"),
  65. o("/login?redirect=".concat(t.path)),
  66. T.a.done();
  67. case 28:
  68. e.next = 31;
  69. break;
  70. case 30:
  71. -1 !== z.indexOf(t.path) ? (T.a.done(),
  72. o()) : (-1 !== n.path.indexOf("/non_visitor") ? o("/dashboard") : o(n.path),
  73. p["a"].commit("user/SET_LOGINWINDOWSTATE"),
  74. T.a.done());
  75. case 31:
  76. case "end":
  77. return e.stop()
  78. }

使用f12断点进行Dbug调试

image-20210604175501133

发现是走到了0

image-20210604175537414

然后赋值了30,因为是while (1)所以跳到了30后面就直接结束了

image-20210604175647519

注意到了9,感觉就是后台页面,我们只需要想办法进到9里面就可以了

image-20210604175807700

尝试重新调试

只需要在他赋值30的完事后在重新赋值覆盖掉他的值

image-20210604175943529

然后不就会跳转到9了?

确实,成功跳到了9

image-20210604180037854

第一个if没有进,不管他看下面的s.userRole,而s又等于JSON.parse(sessionStorage.getItem(“user”))

image-20210604180348622

直接在这个地方赋值s.userRole=”admin”发现报错,请求了龙哥

0x03白热化阶段

image-20210604180522104

image-20210604180545776

image-20210604180635111

  1. sessionStorage.setItem("user",JSON.stringify({"userRole":"admin"}))

他这里先构造一个userRole=admin的json然后在进行写入本地的sessionStorage?

前面搞定了只需要把path路径改为bg_userManage就可以查看了

image-20210604181200037

成功进来了这个判断:

image-20210604181409145

查看后台:

渗透测试|记一次 bypass 前端验证 + 后端缺陷

尝试添加一个账号

image-20210604181657503

果然,rsa加密了,如果我不进后台,拿头给他构造

image-20210604181820472

登入就完事了

image-20210604182027341

第一次登入需要修改密码:

image-20210604182104210

尝试直接修改别的用户的密码:

image-20210604182155268

结果真的可以修改

登入后的页面就不展示了,全是水印根本码不过来

0x04推荐

推荐浏览器插件reres

可以把网站的js下载到本地进行本地加载(实现修改js的目的,省的dbug修改)

image-20210604182851612

可以直接在0的地方修改

image-20210604182948940

就不用每一次dbug了

0x05结尾

以后渗透要多看看js,接口什么,实现真正的从0到1

image-20210604183205324

e1e96219645d2c0658973305cfc640ec-1

本文来自投稿,不代表安强科技社区立场,如若转载,请注明出处:https://community.anqiangkj.com/archives/2776

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年1月14日 上午12:11
下一篇 2022年1月14日 上午12:19

相关推荐

发表回复

您的电子邮箱地址不会被公开。