安全矩阵

 找回密码
 立即注册
搜索
查看: 800|回复: 0

一次十分详细的漏洞挖掘记录,新思路+多个高危

[复制链接]

417

主题

417

帖子

2391

积分

金牌会员

Rank: 6Rank: 6

积分
2391
发表于 2024-3-10 19:53:06 | 显示全部楼层 |阅读模式
迪哥讲事 2024-03-06 22:01 江苏

[color=rgba(0, 0, 0, 0.9)]“cookie中缺少了JSESSIONID,这时候我拿缺少JSESSIONID的包去修改userid居然发现成功了。Cookie变成了万能cookie,可以用于任意用户的信息修改。删除了JSESSIONID,创造了一个万能用户的标识。”
01

起因
[color=rgba(0, 0, 0, 0.9)]最近补习班机构开设了一套机考系统,需要集赞才能够领取使用。







[color=rgba(0, 0, 0, 0.9)] 我硬是在小号一个一个加了18个人才凑够了数量成功领取(无奈大号添加的人实在太多)
[color=rgba(0, 0, 0, 0.9)]闲来无事的我便是测试一下是不是有漏洞呢?
[color=rgba(0, 0, 0, 0.9)]想来它肯定是搭建在了公网上了,才能做到让学生在线答题排名。
[color=rgba(0, 0, 0, 0.9)](因为之前想过对另一个系统开展测试,但遗憾的是系统是搭建在内网上的,学生只能在线下机房才能参与考试,无奈只能放弃。)
[color=rgba(0, 0, 0, 0.9)]
02

展开思路
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]拿到站点之后
[color=rgba(0, 0, 0, 0.9)]拿到目录探测工具里扫一下





[color=rgba(0, 0, 0, 0.9)]可以看到有不少东西,在后台登录口进行了弱口令、js未授权均无果。
[color=rgba(0, 0, 0, 0.9)]不过没关系,这次报告的重点不在这里哈哈
[color=rgba(0, 0, 0, 0.9)]还是回到重点,学生端的使用入口
[color=rgba(0, 0, 0, 0.9)]|首先第一个小瑕疵




[color=rgba(0, 0, 0, 0.9)]这里的登录验证码并不会随着登录而刷新,可以重复使用,一般的OCR就可以对其识别,给了攻击者暴力破解密码以及用户枚举的机会。
03

正式开始漏洞挖掘之旅
[color=rgba(0, 0, 0, 0.9)]登录账号
[color=rgba(0, 0, 0, 0.9)]对页面的功能点展开思考



[color=rgba(0, 0, 0, 0.9)]1.用户的个人信息界面  
[color=rgba(0, 0, 0, 0.9)]站点会和服务器进行数据请求和交换----看看有没有控制用户参数,可能出现越权漏洞
[color=rgba(0, 0, 0, 0.9)]可以看到有头像的存在,说明可以进行文件上传---可以测试xss和getshell
[color=rgba(0, 0, 0, 0.9)]2、3.我的笔迹与习题收藏
[color=rgba(0, 0, 0, 0.9)]站点会和服务器交互显示用户储存的题目等信息-----可以测试sql注入、注入写马
[color=rgba(0, 0, 0, 0.9)]4.套卷练习
[color=rgba(0, 0, 0, 0.9)]本系统需要vip兑换码成为会员身份才可以进行套卷练习--可测SQL注入、未授权vip身份
[color=rgba(0, 0, 0, 0.9)]5.退出点
[color=rgba(0, 0, 0, 0.9)]结合头像上传处可以考虑退出链接替换头像url造成csrf漏洞,效果就是看到头像的用户就会自动退出账号,再次发散思想,可以尝试注销账号、修改密码等csrf如果造成看到头像的用户就自动注销自己的账号绝对就是高危漏洞。
04

漏洞一xss

[color=rgba(0, 0, 0, 0.9)]这个漏洞也是有点奇怪





[color=rgba(0, 0, 0, 0.9)]报错信息是从用户端发包给服务端然后再显示的,而不是输入了错误的兑换码然后服务端返回报错信息,这就导致用户输入的字段会回显在页面上(xss可测)
[color=rgba(0, 0, 0, 0.9)]报错信息
[color=rgba(0, 0, 0, 0.9)]%E6%BF%80%E6%B4%BB%E6%8F%90%E7%A4%BA&msg=%E5%8D%A1%E5%8F%B7%E6%88%96%E5%AF%86%E7%A0%81%E9%94%99%E8%AF%AF%EF%BC%8C%E8%AF%B7%E7%A1%AE%E8%AE%A4%EF%BC%8C%E8%B0%A2%E8%B0%A2%EF%BC%81
[color=rgba(0, 0, 0, 0.9)]解码后
[color=rgba(0, 0, 0, 0.9)]激活提示&msg=卡号或密码错误,请确认,谢谢!



我们尝试替换为<script>alert(安心落意)</script>



成功弹窗,xss漏洞一枚


05

进入下一界面,展开思考
[color=rgba(0, 0, 0, 0.9)]进入下一界面,展开思考
[color=rgba(0, 0, 0, 0.9)]1.最重要的漏洞,想要达到没有会员兑换码也可以享受会员身份的效果
[color=rgba(0, 0, 0, 0.9)]尝试:翻看js代码进行审计,看看兑换成功or失败是否存在返回包的明显不同,尝试进行修改看看能不能绕过判定逻辑。
[color=rgba(0, 0, 0, 0.9)]2.用户填写兑换码---数据库校验是否存在--返回结果 测试SQL注入




首先输入错误的兑换码看看数据包




在源码中输入passwordError搜索,可以看到逻辑



  1. var msg = "";
  2. var flag = false;
  3. if (result.entity == 'passwordError') {
  4. msg = "卡号或密码错误,请确认,谢谢!";
  5. } else if (result.entity == 'userError') {
  6. msg = "该会员卡已被使用!";
  7. } else if (result.entity == 'usedError') {
  8. msg = "该会员卡已被使用!";
  9. } else if (result.entity == 'overdueError') {
  10. msg = "该会员卡已过期!";
  11. } else if (result.entity == 'destroyError') {
  12. msg = "该卡已作废,不能进行激活,请确认!谢谢";
  13. } else if (result.entity == 'typeError') {
  14. msg = "卡号或密码错误,请确认,谢谢!";
  15. } else if (result.entity == 'succeed') {
  16. dialog('激活提示', "您的会员卡已兑换成功!", 0);
  17. flag = true;
  18. setTimeout(function () {
  19. window.location.reload();
  20. }, 2000);
  21. }
  22. if (!flag) {
  23. $('.dialog-shadow').remove();
  24. dialog('激活提示', msg, 1);
  25. }
  26. } else {
  27. dialog('激活提示', result.message, 1);
  28. setTimeout(function () {
  29. window.location.reload();
  30. }, 2000);
  31. }
复制代码


06

未授权漏洞,享受VIP身份
[color=rgba(0, 0, 0, 0.9)]再次输入错误兑换码,并且拦截,修改数据包





可见前端已经显示兑换成功,但是先别着急,有可能显示还是没有会员权限的


成功,以前做不了的卷子都可以做喽 由于这是系统核心功能点  高危逻辑+1


07

逻辑漏洞,任意账户接管(
[color=rgba(0, 0, 0, 0.9)]继续挖掘
[color=rgba(0, 0, 0, 0.9)]接下来,也是整个渗透过程的最亮点(),可以修改全站用户的账号,并且查看密码等敏感个人信息,接管用户账号期间被害者全程无感。
[color=rgba(0, 0, 0, 0.9)](注意是修改用户的账号而不是密码,由于注册时填写的手机or邮箱就是账号,用户是无法通过发送验证码找回的,永久接管)









思路:尝试修改userid尝试越权;这里还有一个出乎我意料的点,就是居然有mobile这个字段,修改手机号本应该是需要验证码等手段经过授权才能够修改的,但是这里就直接出现了,这个思考也是直接引起了后面的漏洞。
  1. 信息字段汇总
  2. user.userId=

  3. user.sex=1

  4. user.showName

  5. user.subject

  6. mobile=

  7. user.email

  8. user.picImg=/imag/xxxxx/089871.jpg
复制代码


[color=rgba(0, 0, 0, 0.9)]登录AB不同账号,拿到不同的userid
[color=rgba(0, 0, 0, 0.9)]尝试修改userid,虽然数据包仍然返回成功,但是没有修改另一账号的信息。然后尝试部分删除cookie后直接显示302,这里心想应该就是没有洞了,很显然鉴权参数融入了cookie。Userid无用。
[color=rgba(0, 0, 0, 0.9)]但是随后的测试又让我改变了这一想法,因为,csrf居然测试成功???
[color=rgba(0, 0, 0, 0.9)]心想不应该啊,csrf居然能成功说明鉴权信息出现了缺陷,回头去看数据包
[color=rgba(0, 0, 0, 0.9)]这是csrf发出的包



这是原来的数据包


[color=rgba(0, 0, 0, 0.9)]没错,cookie中缺少了JSESSIONID,这时候我拿缺少JSESSIONID的包去修改userid居然发现成功了。Cookie变成了万能cookie,可以用于任意用户的信息修改。
[color=rgba(0, 0, 0, 0.9)]userid为32281 手机号为15511xxxxx






[color=rgba(0, 0, 0, 0.9)]任意用户账号修改成功!
[color=rgba(0, 0, 0, 0.9)]假如黑客遍历userid,把手机号改成13888888976这样的号码,可以说是很难自己找回了
[color=rgba(0, 0, 0, 0.9)]导致全站用户丢失学习记录,做题进度,危害极大。
[color=rgba(0, 0, 0, 0.9)]密码是MD5,解密即可登录。
[color=rgba(0, 0, 0, 0.9)]|关于JSESSIONID


  1. JSESSIONID 是Java Servlet技术中用于维持Web应用用户会话的一个标识符。当用户访问基于Java Servlet容器(如Apache Tomcat、Jetty等)构建的Web应用程序时,服务器会为每个新的、未携带会话标识的HTTP请求分配一个新的会话对象,并生成一个唯一的JSESSIONID作为该会话的标识符。

  2. 具体工作流程如下:

  3. 会话创建:

  4. 当用户首次访问Web应用时,如果应用内有创建会话的动作(比如调用了 HttpServletRequest.getSession() 方法),服务器会为该用户创建一个会话,并生成JSESSIONID。

  5. 会话标识传输:

  6. JSESSIONID通常以两种方式传递给客户端:

  7. 作为Cookie发送到用户的浏览器,浏览器在后续对同一服务器的请求中自动携带此Cookie。

  8. 如果用户禁用了Cookie,服务器还可以通过URL重写的方式,即将JSESSIONID附加在每个动态资源URL的查询字符串或路径部分,以便在每次请求时都能传递会话标识。

  9. 会话管理:

  10. 服务器端通过JSESSIONID来识别不同的用户会话,从而能够维持用户的状态信息,如登录状态、购物车内容或其他临时数据。

  11. JSESSIONID的生命周期取决于服务器端的会话管理策略,包括会话超时设定、手动失效(通过HttpSession.invalidate()方法)或者浏览器关闭(若仅依赖Cookie且不启用持久化会话)等情况。
复制代码


[color=rgba(0, 0, 0, 0.9)]总之,JSESSIONID是Java Web应用程序中用于跟踪用户会话的关键标识,确保了在无状态的HTTP协议基础上实现有状态的用户交互过程。
[color=rgba(0, 0, 0, 0.9)]在此系统中删除了JSESSIONID,创造了一个万能用户的标识。
[color=rgba(0, 0, 0, 0.9)]如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-27 22:28 , Processed in 0.014158 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表