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

admin 2023年5月4日01:02:02评论23 views字数 3673阅读12分14秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安设为星标”,否则可能看不到了


0x00 前言

这次渗透的对象是一个校内的获奖提交申报平台。不知道什么原因,这个站点未接入深信服waf,所以这次渗透过程异常轻松。

0x01 越权

首先使用功能点添加一次申报
6!记一次校内站点的漏洞挖掘测试


点击编辑,抓包
6!记一次校内站点的漏洞挖掘测试

可以看到是使用id控制返回的数据的
6!记一次校内站点的漏洞挖掘测试


服务端没有进行鉴权,修改id可返回其他用户的数据
6!记一次校内站点的漏洞挖掘测试


其他接口也是一样

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


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


0x02 任意文件上传

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


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

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

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

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

成功解析

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

0x03 任意文件下载

在刚才的viewPage接口返回的数据里,可以看到调用了名为downloadFile的js函数
6!记一次校内站点的漏洞挖掘测试


我们看下源码
6!记一次校内站点的漏洞挖掘测试


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


先随便传个参看看

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


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

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


0x04 任意权限的用户添加

在翻看数据包的时候,发现接口的命名都非常有规律,比如:
6!记一次校内站点的漏洞挖掘测试


addPage就是刚才内联框架所使用的HTML文件,里面不仅包含了相关的接口,还包含了表单的字段名
6!记一次校内站点的漏洞挖掘测试


并且接口名称studentwardroleresourcecounsellor都是跟功能相关的英文,非常好猜


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


/user/addPage 如下:

<script type="text/javascript">    $(function() {        $('#userAddOrganizationId').combotree({            url : '/organization/tree',            parentField : 'pid',            lines : true,            panelHeight : '200'        });
$('#userAddRoleIds').combotree({ url: '/role/tree', multiple: true, required: true, panelHeight : 'auto' });

$('#sex').combobox({ url:'/dict/loadcombobox?code=sex', method: 'get', valueField:'val', textField:'description', panelHeight : 'auto', groupField:'group'
});
$('#userType').combobox({ url:'/dict/loadcombobox?code=userType', method: 'get', valueField:'val', textField:'description', panelHeight : 'auto', groupField:'group' });
$('#userStatus').combobox({ url:'/dict/loadcombobox?code=userStatus', method: 'get', valueField:'val', textField:'description', panelHeight : 'auto', groupField:'group' });
$('#userAddForm').form({ url : '/user/add', onSubmit : function() { progressLoad(); var isValid = $(this).form('validate'); if (!isValid) { progressClose(); } return isValid; }, success : function(result) { progressClose(); result = $.parseJSON(result); if (result.success) { parent.$.modalDialog.openner_dataGrid.datagrid('reload'); parent.$.modalDialog.handler.dialog('close'); } else { var form = $('#userAddForm'); parent.$.messager.alert('提示', eval(result.msg), 'warning'); } } });
});</script><div class="easyui-layout" data-options="fit:true,border:false"> <div data-options="region:'center',border:false" title="" style="overflow: hidden;padding: 3px;"> <form id="userAddForm" method="post"> <table class="grid"> <tr> <td>学工号</td> <td><input name="loginName" type="text" placeholder="请输入登录名称" class="easyui-validatebox" data-options="required:true" value=""></td> <td>姓名</td> <td><input name="name" type="text" placeholder="请输入姓名" class="easyui-validatebox" data-options="required:true" value=""></td> </tr> <tr> <td>密码</td> <td><input name="password" type="password" placeholder="请输入密码" class="easyui-validatebox" data-options="required:true"></td> <td>性别</td> <td> <input name="sex" class="easyui-textbox" id="sex" type="text" style="width: 140px; height: 29px;">
</td> </tr> <tr> <td>年龄</td> <td><input type="text" name="age" class="easyui-numberbox"/></td> <td>用户类型</td> <td> <input name="userType" class="easyui-textbox" id="userType" type="text" style="width: 140px; height: 29px;"> </td> </tr> <tr> <td>部门</td> <td><select id="userAddOrganizationId" name="organizationId" style="width: 140px; height: 29px;" class="easyui-validatebox" data-options="required:true"></select></td> <td>角色</td> <td><select id="userAddRoleIds" name="roleIds" style="width: 140px; height: 29px;"></select></td> </tr> <tr> <td>电话</td> <td> <input type="text" name="phone" class="easyui-numberbox"/> </td> <td>用户状态</td> <td> <input name="status" class="easyui-textbox" id="userStatus" type="text" style="width: 140px; height: 29px;"> </td> </tr> </table> </form> </div></div>

可以看到你不会填的都给你提供相关接口查询,比如userAddRoleIds提供/role/tree接口
6!记一次校内站点的漏洞挖掘测试


最后直接构造数据包
6!记一次校内站点的漏洞挖掘测试


结束

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


文章来源:先知社区(John)原文地址:https://xz.aliyun.com/t/12391



关 注 有 礼



关注公众号回复“9527”可以领取一套HTB靶场文档和视频1208”个人常用高效爆破字典0221”2020年酒仙桥文章打包2191潇湘信安文章打包,“1212”杀软对比源码+数据源,0421Windows提权工具包
6!记一次校内站点的漏洞挖掘测试 还在等什么?赶紧点击下方名片关注学习吧!6!记一次校内站点的漏洞挖掘测试

推 荐 阅 读




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

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

原文始发于微信公众号(潇湘信安):6!记一次校内站点的漏洞挖掘测试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月4日01:02:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   6!记一次校内站点的漏洞挖掘测试https://cn-sec.com/archives/1704635.html

发表评论

匿名网友 填写信息