记一次校内站点的渗透测试

admin 2023年6月6日01:37:40评论12 views字数 3546阅读11分49秒阅读模式

免责声明

由于传播、利用本公众号夜组安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号夜组安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

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

记一次校内站点的渗透测试
记一次校内站点的渗透测试

SRC

记一次校内站点的渗透测试
记一次校内站点的渗透测试

01

越权

首先使用功能点添加一次申报

记一次校内站点的渗透测试

点击编辑,抓包

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

其他接口也是一样

越权修改

记一次校内站点的渗透测试

记一次校内站点的渗透测试

越权删除

记一次校内站点的渗透测试

02

任意文件上传

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

成功解析

记一次校内站点的渗透测试

03

任意文件下载

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

记一次校内站点的渗透测试

我们看下源码

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

04

任意权限的用户添加

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

比如:

记一次校内站点的渗透测试

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

记一次校内站点的渗透测试

并且接口名称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接口

记一次校内站点的渗透测试

最后直接构造数据包

记一次校内站点的渗透测试

结束

记一次校内站点的渗透测试

05

参考链接

文章来源:先知社区-John

原文链接:https://xz.aliyun.com/t/12391

06

往期精彩

记一次校内站点的渗透测试

用友系列全漏洞检查工具plus版


记一次校内站点的渗透测试

圈子新增内容汇报


记一次校内站点的渗透测试

原文始发于微信公众号(夜组安全):记一次校内站点的渗透测试

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

发表评论

匿名网友 填写信息