对学校教务系统的一次不完全渗透

zkaq840490109   ·   发表于 2020-06-10 16:11:55   ·   实战纪实

1.学了这么久的渗透怎么可能不搞自己学校呢?

首先介绍下基本信息,学校的教务系统比较老,只能用IE浏览器进行访问,不然很多功能无法使用,因为是自己学校,所以就有学生账号

2.通过低权限,低功能学生界面进行信息收集

一开始我的想法有两个,一:是通过学生界面看能不能找到越权,或者sql注入,二:通过弱密码得到老师的账号,然后再进行渗透。

1.先来看看学生的功能吧,因为IE浏览器,所以很多谷歌插件都不能使用,所以我就只用了BURP,

小技巧:有时候抓包经常有网站会自动发包,可以这样设置,这样就能限制抓包的范围

2.抓包先看看,在没有查询具体信息的时候,发包的内容都大同小异


都是这个模板,只不过,传参和值有细微的区别

然后查询具体内容

发包结果

可以看到,有where,orderby,sqlstring,这些传参,很明显,这些就是数据库查询语句,更重要的是貌似where,order这种关键内容我们居然可以控制,这里我试过sql注入,但失败了,我讲一下关键点吧

首先where传参,判断是数字型还是字符型,我通过1=1,判断他是数字型(也就是说没有单引号干扰)

然后我判断数据库类型,直接—+会报错,返回为空,但orderby我们也能控制,在orderby用换行%0a,就没有报错,这说明—+执行成功(只注释了—+到%0a中间的内容),同时说明orderby后面还有内容,不能注释,用#再试一遍,出错了(说明是mssql同时有注入点),接下来order by 执行语句我试过很多方法都想不通,然后问了下风哥,说这可能是预编译。

然后我开始对orderby传参进行尝试(预编译无法限制表名和order by处注入),orderby传参处必须要有asc,desc(升序,降序)不然也会报错,最后我把传参改成6 asc成功,7 asc报错,判断出他有6个字段,但执行其他语句和where一样报错,到这就卡住了。(我猜测是对传参的格式有限制)

虽然失败了,但还是来讲讲收获吧:传参名一目了然,一看你就能知道他的作用是什么,where orderby可控,虽然不能用联合查询之类的语句但可筛选特定内容比如:通过orderby判断字段名(order by password没报错说明有password这个字段),然后通过where password=123456筛选出是的用户弱密码

既然思路一行不通那就换一种思路吧

3.测试老师端

1.首先如果学生不修改密码的话,初始密码就是身份证后6位按照这个思路我尝试登录老师的账户,先获取老师的账户,我的账号是学号,哪老师的账号就是教工号,
通过查看课表功能我得到了所有老师的账号

身份证的话我通过其他手段也搜到了,但试了好几个老师的都不对,于是我尝试对外教的账号进行破解,原因:他没有身份证,外教可能安全意识更弱,不会修改密码,最终尝试几次后发现密码,就是12345678,我试了好几个外教的密码都一样,于是得出结论,初始密码就是12345678,然后对全校老师进行登录,最后得出有1/3的老师没有修改密码(终于有进展了)

2.对老师的账号进行登录,发现老师的账户也进行了权限限制,普通老师:

某系教务处负责人:

某系管理员:

教务处那肯定是成绩管理功能才是核心啦,但这依然有限制,自己系的管理员只能管理自己系学生的成绩,刚好我没有计算机学院老师的账户(或许是计算机学院老师都有安全意识吧),于是我先判断能不能越权,

这是一个体育学院管理员的账号


我先是对COOKIE进行修改把session的最后一个数字改成1,然后返回登录已过期,请重新登录,不行,于是我用一个文学院管理员的COOKIE进行代替,发现成功执行,说明这里存在水平越权,哪怎么才能查到计算机学院的呢?我发现体育学院的代号是17,而且传参中刚好有17这个值,而且是单独的值,我把17改成20成功查询到文学院的成绩,哪我把17直接删除呢?于是我查询到了所有人的成绩



发现管理员的权限也不能修改成绩(看来还有一个超级管理员),只能修改课程性质和课程属性

于是抓包看能不能继续越权
包的内容有点多

可以看到:ZdSzCode=kcxz 刚好是课程性质的简写于是搜索KZXZ,一共有3个地方有,分别是ZdSzCode,keydm,tableFields,对tableFields进行解码

而zdszcode刚好是字段设置键的意思,ZdSzCodeValue,则是字段设置键的值的意思

哪把KCXZ换成总成绩的简写zcj,ZdSzCodeValue改成100是不是可以~~

结束

怎么说呢,像教务系统这种学校的核心业务,防护还是做得挺到位的(或许是我菜吧),只能找找逻辑漏洞,而且信息收集,英语,细心都是挺关键的
求水哥教我sql

用户名金币积分时间理由
admin 100.00 0 2020-06-15 15:03:56 支持

打赏我,让我更有动力~

4 Reply   |  Until 2020-6-22 | 1635 View

蝶舞恋冰
发表于 2020-6-15

哇!好熟悉的界面。。我们学校也是这个。。

评论列表

  • 加载数据中...

编写评论内容

fthgb
发表于 2020-6-15

先赞一波

评论列表

  • 加载数据中...

编写评论内容

mq
发表于 2020-6-15

提出点质疑(我不是喷子):
1、这里的kzxz是不是写错了应该是-> kcxz
2、这里的管理员账户修改不了成绩需要越权操作,在下面的url解码结果中包含了课程成绩这一属性,是否这里的无法修改成绩仅仅做了前端的限制而对于后台提交没有影响,在这样的先决条件下我们直接修改成绩再编码加回去就好了,无需改其他键值以免出错
3、如果2条件不满足,使用课程性质偷换课程成绩的话有两大疑点:1、每个属性都会有一个数字码(例如10:1:70,不知道是不是表示数字码的意思),如果直接修改课程性质为总成绩,那你的特征码也需要修改,如果2条件不满足也就是后端做了过滤,那么照样无法修改而且会和原来的成绩产生冲突(这里可以试一波看是是否可以导致参数污染)2、是否有两个相同的总成绩会导致数据出错或者说去掉一个课程性质也可能会导致数据产生非预期的错误,还希望作者补全测试过程

一点小建议:
1、希望作者把sql部分的sqlstring解码出来看看,我真的有强迫症啊啊啊,想看看内容
2、sql部分希望能够截图步骤可以更多一些,有些地方可能自己心里知道但是别人很难理解(我知道脱敏难搞但是还是要多搞点图 嘿嘿)
3、关于小技巧方面语言描述可以更好点(十分实用,我也十分受用),第一个小技巧可以再详细说一下,截图上最好有文字
4、你真的得到授权了吗,我自学的时候差点被学校抓了(滑稽)

写的内容很丰富,给个赞!!!!希望上述可以得到采纳,作者有空一起来喝茶

评论列表

  • 加载数据中...

编写评论内容

qiushui
发表于 2020-6-22

艾特镜哥,镜哥牛逼

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.