正方教务管理系统最新版无条件注入&GetShell

没穿底裤 2020年1月1日06:06:13评论13,327 views12字数 2312阅读7分42秒阅读模式
摘要

最新几个版本正方教务系统的SQL注入漏洞,无需任何条件!真正的教务杀手,获取教师、部门用户密码,查看妹子信息不是梦!
正方教务系统提供了一系列的WebService接口,然而这些接口并未经过严格的认证,从而导致任何浏览者都可以使用这些接口查询信息。由于其对用户提交的参数未进行过滤,从而导致注入的发生!
搜索发现正方教务系统的asmx文件大致有这么些:

【1】文件管理接口
首先查看file.asmx:

checkFile(检查文件是否存在)只要求提供一个文件路径便可以工作。

尝试使用soap协议去请求:

UpFile2Dir(上传文件到指定目录),本以为这个接口有些利用价值,然而看完代码后却发现根本无法利用。代码如下:

其中的 checkFilePath函数是来检查filepath是否法的,当然这个filepath并不是指文件路径,它是写在配置文件中的一系列字串。然而通过对众多正方教务系统的测试发现,基本上都没有配置这个字串。所以无论你的filePath是什么,当调用UpFile2Dir时均会报“未设置可信地址”这个错误。从日志的记录中也印证了这一点:

【2】各类查询接口
正方教务系统同样提供了各类查询接口,我仅仅研究了service.asmx和service1.asmx中的数个接口便发现了众多的注入。

需要注意的是这些接口中需要提供strPass,和strKey这两个参数(有的只用提供strKey有的需要提供strPass,有的则两都都要提供)。
经过反编译发现strPass是从数据库中查询出来的(不过悲剧的是绝大多数的正方教务系统并没有wsmmb这个表,估计这是历史遗留下的接口。。。):

而strKey是定义好的常量(
sKey = "KKKGZ2312";
);
到这里已经非常显然了,有了sKey就可以去查询一些接口了。
【3】查询接口注入
比如BMCheckPassword(检查部门账号密码?):

实际上只提供strYHM、sKey这两个参数就可查询了,如图(提供正确的用户名时回显结果为5,用户名错误时回显结果为3):

尝试在这里构造注入语句:

使用这样的payload来查询jwc01的密码:

最新几个版本正方教务系统的SQL注入漏洞,无需任何条件!真正的教务杀手,获取教师、部门用户密码,查看妹子信息不是梦!
正方教务系统提供了一系列的WebService接口,然而这些接口并未经过严格的认证,从而导致任何浏览者都可以使用这些接口查询信息。由于其对用户提交的参数未进行过滤,从而导致注入的发生!
搜索发现正方教务系统的asmx文件大致有这么些:
正方教务管理系统最新版无条件注入&GetShell
【1】文件管理接口
首先查看file.asmx:
正方教务管理系统最新版无条件注入&GetShell
checkFile(检查文件是否存在)只要求提供一个文件路径便可以工作。
正方教务管理系统最新版无条件注入&GetShell
尝试使用soap协议去请求:
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
UpFile2Dir(上传文件到指定目录),本以为这个接口有些利用价值,然而看完代码后却发现根本无法利用。代码如下:
正方教务管理系统最新版无条件注入&GetShell
其中的 checkFilePath函数是来检查filepath是否法的,当然这个filepath并不是指文件路径,它是写在配置文件中的一系列字串。然而通过对众多正方教务系统的测试发现,基本上都没有配置这个字串。所以无论你的filePath是什么,当调用UpFile2Dir时均会报“未设置可信地址”这个错误。从日志的记录中也印证了这一点:
正方教务管理系统最新版无条件注入&GetShell
【2】各类查询接口
正方教务系统同样提供了各类查询接口,我仅仅研究了service.asmx和service1.asmx中的数个接口便发现了众多的注入。
正方教务管理系统最新版无条件注入&GetShell
需要注意的是这些接口中需要提供strPass,和strKey这两个参数(有的只用提供strKey有的需要提供strPass,有的则两都都要提供)。
经过反编译发现strPass是从数据库中查询出来的(不过悲剧的是绝大多数的正方教务系统并没有wsmmb这个表,估计这是历史遗留下的接口。。。):
正方教务管理系统最新版无条件注入&GetShell
而strKey是定义好的常量(
sKey = "KKKGZ2312";
);
到这里已经非常显然了,有了sKey就可以去查询一些接口了。
【3】查询接口注入
比如BMCheckPassword(检查部门账号密码?):
正方教务管理系统最新版无条件注入&GetShell
实际上只提供strYHM、sKey这两个参数就可查询了,如图(提供正确的用户名时回显结果为5,用户名错误时回显结果为3):
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
尝试在这里构造注入语句:
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
使用这样的payload来查询jwc01的密码:

jwc01' and (SELECT SUBSTR(TO_CHAR(KL),1,1) from yhb where yhm='jwc01')='a

正方教务管理系统最新版无条件注入&GetShell
最后得到jwc01的加密密码为:2jl)Dssu,解密得:llj@usst
正方教务管理系统最新版无条件注入&GetShell
登录教务系统:
正方教务管理系统最新版无条件注入&GetShell
【4】更粗暴的注入
获得上面接口的注入点后,我并满足,因为更新一点版本的正方教务系统已经去掉了BMCheckPassword这个接口,于是继续寻找。功夫不负有心人最终找到了GetStuCheckinInfo这个接口中存在的注入。
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
提供学号、学年+学期、sKey便可以查询。然而这个接口注入的粗暴之处在于可以使用union查询。
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
学号处构造这样的payload测试:

222222' union select Null,'test',Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null from yhb where 'a'='a

正方教务管理系统最新版无条件注入&GetShell
查询jwc01的密码:
正方教务管理系统最新版无条件注入&GetShell
获得加密密码:zaqtHswK 解密得:1qaz2wsx。登录jwc01这个账号:
正方教务管理系统最新版无条件注入&GetShell
【5】GetShell绝杀正方教务系统
您可能要问了:为什么你这么跟jwc01过不去呢?原因很简单:1、jwc01是正方教务系统的初始管理账户,基本上每个教务系统都存在这个账户不必要再麻烦的去获取数据库中的账户信息了。2、正如1所述,jwc01是初始管理账户,拥有很高的权限!
1、低版本的正方
会对低版本的正方教务系统,可以在教务公告发布那里直接上传ashx文件来取得webshell。有时候教务公告发布这个页面并没有给出链接(当然页面是一直存在的),可以F12随便修改个链接为:

<a onclick="GetMc('教务公告发布');" target="zhuti" href="jwggfb.aspx?xh=jwc01&xm=&gnmkdm=N120201">教务公告发布</a>

然后点击标签,你会发现教务公告发布页面打开了!
上传的文件后保存到/wbwj/这个目录中去,上传生成aspx文件的ashx到wbwj,访问测试(当然直接上传ashx类型的webshell也是可行的):
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
正方教务管理系统最新版无条件注入&GetShell
2、高版本的正方
高版本的正方教务系统如果提交的文件名中含有asp、cer、aspx、cdx、asa等这些关键字(只要文件名或后缀中含有这些关键字)就会拦截掉请求。
正方教务管理系统最新版无条件注入&GetShell
审计反编译的代码得知允许上传的缀列表保存在表fjsckzb中:
正方教务管理系统最新版无条件注入&GetShell
允许上传的后缀SYFLG列标记为1,很显然,除了这些后缀其它的均不允许上传。
尝试上传ashx文件:

那么可不可以添加一条后缀到这个表中呢?(我对Oracle了解的不够深入,不知道如何通过注入点多行查询去insert一条记录。。。)然而我使用了另一种方法:通过注入点(正方默认连接的账号是DBA)获取数据库的账号密码之后内网连接数据库或是使用Oracle提供的isqlplus登录:http://jwgl.xx.edu.cn:5560/isqlplus。之后再将ashx后缀添加到可上传列表,管理账号登录上传>取得webshell。(事实上只要获得了DBA权限的账号和密码,就可以使用JAVA来执行命令了*^_^*)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
没穿底裤
  • 本文由 发表于 2020年1月1日06:06:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   正方教务管理系统最新版无条件注入&GetShellhttps://cn-sec.com/archives/76623.html

发表评论

匿名网友 填写信息