安全矩阵

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

6!记一次校内站点的漏洞挖掘测试

[复制链接]

417

主题

417

帖子

2391

积分

金牌会员

Rank: 6Rank: 6

积分
2391
发表于 2023-5-3 21:54:22 | 显示全部楼层 |阅读模式
John 潇湘信安 2023-05-03 17:00 发表于湖南
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
0x00 前言
这次渗透的对象是一个校内的获奖提交申报平台。不知道什么原因,这个站点未接入深信服waf,所以这次渗透过程异常轻松。

0x01 越权
首先使用功能点添加一次申报


点击编辑,抓包



可以看到是使用id控制返回的数据的


服务端没有进行鉴权,修改id可返回其他用户的数据


其他接口也是一样


越权修改




越权删除





0x02 任意文件上传

还是在提交申报那里,添加文件,抓包




并没有返回文件路径,但返回了id,所以要配合刚才的越权接口使用



成功解析




0x03 任意文件下载

在刚才的viewPage接口返回的数据里,可以看到调用了名为downloadFile的js函数



我们看下源码



盲猜这里可以进行目录跨越,fileName就是文件名,fileType就是文件后缀,还不清楚后缀是不是白名单


先随便传个参看看



好家伙,太贴心了,没有任何限制还直接把当前目录都返回出来,构造一下



0x04 任意权限的用户添加

在翻看数据包的时候,发现接口的命名都非常有规律,比如:



addPage就是刚才内联框架所使用的HTML文件,里面不仅包含了相关的接口,还包含了表单的字段名



并且接口名称studentward、role、resource、counsellor都是跟功能相关的英文,非常好猜


构造administrator、organization、controller等名称,或者拿本英汉大字典跑也行,最后Fuzz出来了user


/user/addPage 如下:


  1. <script type="text/javascript">
  2.     $(function() {
  3.         $('#userAddOrganizationId').combotree({
  4.             url : '/organization/tree',
  5.             parentField : 'pid',
  6.             lines : true,
  7.             panelHeight : '200'
  8.         });

  9.         $('#userAddRoleIds').combotree({
  10.             url: '/role/tree',
  11.             multiple: true,
  12.             required: true,
  13.             panelHeight : 'auto'
  14.         });


  15.         $('#sex').combobox({
  16.             url:'/dict/loadcombobox?code=sex',
  17.             method: 'get',
  18.             valueField:'val',
  19.             textField:'description',
  20.             panelHeight : 'auto',
  21.             groupField:'group'

  22.         });

  23.         $('#userType').combobox({
  24.             url:'/dict/loadcombobox?code=userType',
  25.             method: 'get',
  26.             valueField:'val',
  27.             textField:'description',
  28.             panelHeight : 'auto',
  29.             groupField:'group'
  30.         });

  31.         $('#userStatus').combobox({
  32.             url:'/dict/loadcombobox?code=userStatus',
  33.             method: 'get',
  34.             valueField:'val',
  35.             textField:'description',
  36.             panelHeight : 'auto',
  37.             groupField:'group'
  38.         });

  39.         $('#userAddForm').form({
  40.             url : '/user/add',
  41.             onSubmit : function() {
  42.                 progressLoad();
  43.                 var isValid = $(this).form('validate');
  44.                 if (!isValid) {
  45.                     progressClose();
  46.                 }
  47.                 return isValid;
  48.             },
  49.             success : function(result) {
  50.                 progressClose();
  51.                 result = $.parseJSON(result);
  52.                 if (result.success) {
  53.                     parent.$.modalDialog.openner_dataGrid.datagrid('reload');
  54.                     parent.$.modalDialog.handler.dialog('close');
  55.                 } else {
  56.                     var form = $('#userAddForm');
  57.                     parent.$.messager.alert('提示', eval(result.msg), 'warning');
  58.                 }
  59.             }
  60.         });

  61.     });
  62. </script>
  63. <div class="easyui-layout" data-options="fit:true,border:false">
  64.     <div data-options="region:'center',border:false" title="" style="overflow: hidden;padding: 3px;">
  65.         <form id="userAddForm" method="post">
  66.             <table class="grid">
  67.                 <tr>
  68.                     <td>学工号</td>
  69.                     <td><input name="loginName" type="text" placeholder="请输入登录名称" class="easyui-validatebox" data-options="required:true" value=""></td>
  70.                     <td>姓名</td>
  71.                     <td><input name="name" type="text" placeholder="请输入姓名" class="easyui-validatebox" data-options="required:true" value=""></td>
  72.                 </tr>
  73.                 <tr>
  74.                     <td>密码</td>
  75.                     <td><input name="password" type="password" placeholder="请输入密码" class="easyui-validatebox" data-options="required:true"></td>
  76.                     <td>性别</td>
  77.                     <td>
  78.                         <input name="sex" class="easyui-textbox" id="sex" type="text" style="width: 140px; height: 29px;">

  79.                     </td>
  80.                 </tr>
  81.                 <tr>
  82.                     <td>年龄</td>
  83.                     <td><input type="text" name="age" class="easyui-numberbox"/></td>
  84.                     <td>用户类型</td>
  85.                     <td>
  86.                         <input name="userType" class="easyui-textbox" id="userType" type="text" style="width: 140px; height: 29px;">
  87.                     </td>
  88.                 </tr>
  89.                 <tr>
  90.                     <td>部门</td>
  91.                     <td><select id="userAddOrganizationId" name="organizationId" style="width: 140px; height: 29px;" class="easyui-validatebox" data-options="required:true"></select></td>
  92.                     <td>角色</td>
  93.                     <td><select id="userAddRoleIds" name="roleIds" style="width: 140px; height: 29px;"></select></td>
  94.                 </tr>
  95.                 <tr>
  96.                     <td>电话</td>
  97.                     <td>
  98.                         <input type="text" name="phone" class="easyui-numberbox"/>
  99.                     </td>
  100.                     <td>用户状态</td>
  101.                     <td>
  102.                         <input name="status" class="easyui-textbox" id="userStatus" type="text" style="width: 140px; height: 29px;">
  103.                     </td>
  104.                 </tr>
  105.             </table>
  106.         </form>
  107.     </div>
  108. </div>
复制代码
可以看到你不会填的都给你提供相关接口查询,比如userAddRoleIds提供/role/tree接口



最后直接构造数据包



结束



  1. 文章来源:先知社区(John)
  2. 原文地址:https://xz.aliyun.com/t/12391
复制代码





本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 19:04 , Processed in 0.017234 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

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