网站内容管理系统上传图片(最新几个版本正方教务系统的SQL注入漏洞,无需任何条件!)

优采云 发布时间: 2022-01-18 08:10

  网站内容管理系统上传图片(最新几个版本正方教务系统的SQL注入漏洞,无需任何条件!)

  概括

  正方教育系统最新版SQL注入漏洞,无条件!真正的教育杀手,拿到老师和部门用户的密码,查女生的信息不是梦!

  正方教育系统提供了一系列WebService接口,但这些接口并没有经过严格的认证,任何浏览器都可以使用这些接口查询信息。发生注入是因为没有过滤用户提交的参数!

  搜索发现方形教育系统的asmx文件大致如下:

  [1] 文件管理界面

  先看file.asmx:

  checkFile(检查文件是否存在)只需要文件路径即可工作。

  尝试使用soap协议请求:

  UpFile2Dir(上传文件到指定目录),本以为这个接口有点用处,但是看了代码发现根本不能用。代码显示如下:

  checkFilePath 函数是检查文件路径是否合法。当然,filepath并不是指文件路径,它是写在配置文件中的一系列字符串。但是,通过对多个正方教务系统的测试,发现这个字符串基本没有配置。所以不管你的filePath是什么,在调用UpFile2Dir的时候都会报错“trusted address not set”。这也从日志记录中得到证实:

  [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文件大致如下:

  

  [1] 文件管理界面

  先看file.asmx:

  

  checkFile(检查文件是否存在)只需要文件路径即可工作。

  

  尝试使用soap协议请求:

  

  

  UpFile2Dir(上传文件到指定目录),本以为这个接口有点用处,但是看了代码发现根本不能用。代码显示如下:

  

  checkFilePath 函数是检查文件路径是否合法。当然,filepath并不是指文件路径,它是写在配置文件中的一系列字符串。但是,通过对多个正方教务系统的测试,发现这个字符串基本没有配置。所以不管你的filePath是什么,在调用UpFile2Dir的时候都会报错“trusted address not set”。这也从日志记录中得到证实:

  

  [2] 各种查询接口

  正方教育系统还提供各种查询接口。刚刚研究了service.asmx和service1.asmx中的几个接口,发现有很多注入。

  

  需要注意的是,这些接口需要提供strPass和strKey参数(有的只需要提供strKey,有的需要提供strPass,有的需要两者都提供)。

  反编译后发现是从数据库中查询到strPass(但悲剧的是正方教务系统大多没有wsmmb表,估计这是历史遗留的接口……):

  

  strKey 是一个已定义的常量 (

  sKey = "KKKGZ2312";

  );

  这里非常明显。使用sKey可以查询一些接口。

  [3] 查询接口注入

  例如BMCheckPassword(检查部门账号密码?):

  

  其实只能查询strYHM和sKey这两个参数,如图(如果提供了正确的用户名,则回显结果为5,如果用户名不正确,回显结果为3) :

  

  

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

  

  

  使用这个payload查询jwc01的密码:

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

  

  最后jwc01的加密密码为:2jl)dssu,解密后:[emailprotected]

  

  登录教育系统:

  

  [4] 更粗鲁的注入

  得到上述接口的注入点后,我很满意,因为新版本的正方教务系统已经去掉了BMCheckPassword的接口,所以我继续寻找。努力得到了回报,终于找到了GetStuCheckinInfo接口中存在的注入。

  

  

  提供学号、学年+学期、sKey查询。但是,这种接口注入的粗暴之处在于可以使用联合查询。

  

  

  学生 ID 构造了这样一个有效载荷测试:

  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

  

  查询jwc01的密码:

  

  获取加密密码:zaqtHswK 解密:1qaz2wsx。登录账号 jwc01:

  

  [5] GetShell杀掉正方教育系统

  你可能会问:你为什么对jwc01这么难?原因很简单:1、jwc01是正方教务系统的初始管理账号。基本上每个教务系统都有这个账号。在数据库中获取账户信息是不必要的。2、1中提到,jwc01是初始的具有高权限的管理账号!

  1、方块的低版本

  正方教育系统低版本可以直接上传教务公告中的ashx文件获取webshel​​l。有时候教务公告没有给出这个页面的链接(当然这个页面一直存在),可以F12随意修改链接如下:

  教务公告发布

  然后点击标签,你会发现教务公告发布页面打开了!

  上传文件后,保存到/wbwj/目录下,将生成aspx文件的ashx上传到wbwj,访问测试(当然直接上传ashx类型的webshel​​l也是可行的):

  

  

  

  2、方块的更高版本

  如果提交的文件名中收录asp、cer、aspx、cdx、asa等关键字(只要文件名或后缀中收录这些关键字),高版本正方教育系统会拦截该请求。

  

  审计反编译的代码,知道允许上传的后缀列表存储在fjsckzb表中:

  

  允许上传的后缀SYFLG列标记为1。显然,除了这些后缀之外,不允许上传。

  尝试上传 ashx 文件:

  那么你可以给这个表添加一个后缀吗?(我对Oracle的了解不够,不知道如何通过注入点多行查询插入记录……)但是我用了另一种方法:通过注入点获取数据库(默认连接方的账号是DBA)账号密码后连接内网数据库或者使用Oracle提供的isqlplus登录:5560/isqlplus。然后将ashx后缀添加到可上传列表中,管理账号登录上传>获取webshel​​l。(其实只要有DBA权限的账号和密码,都可以用JAVA执行命令*^_^*)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线