老树开新花,某OA getSqlData接口SQLi利用方式再升级,可直接执行命令。
0x01 序言
事情起源于在服务器上看到了命名随机的jsp文件,打开内容一看是webshell。
根据webshell修改时间,将当天的D:/WEAVER/Resin/logs/access.log
和D:/WEAVER/Resin/log/stderr.log
取出来进行分析,以查找其利用路径。
在stderr.log中发现,攻击者利用SQL注入执行xp_cmdshell命令来上传的文件
存在SQL注入的mapper已经确定是GetSqlDataMapper.xml
.于是便开启了对该漏洞的分析研究
0x02 getSqlData接口SQL注入分析
2.1 漏洞分析
首先来到GetSqlDataMapper.xml
,看一下其SQL拼接情况,如下:
直接将传入的sql参数的值,作为SQL语句进行执行。向上寻找该mapper的调用过程。
继续寻找GetSqlDataMapper接口的调用者
在classbean/com/engine/portal/cmd/elementecodeaddon/GetSqlDataCmd.class
中,逻辑如下:
所以,可以认定此处存在SQL注入。然后我们寻找Web访问接口的位置,因为都是class搜索调用十分不方便,所以使用Windows命令搜索:
findstr /c:"GetSqlDataCmd" /d:"D://WEAVER//ecology//classbean//" /si *.class
然后其调用关系:
所以,找到web入口
/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
然后利用账号密码登录后台
2.2.2 执行命令
ecology的数据库大多数是使用mssql的,而mssql在SQL注入中,常用于执行命令的是xp_cmdshell
,加上该接口直接传入SQL语句,那么我们可以直接通过exec xp_cmdshell
来执行命令。测试如下:
在ecology的《Ecology系统安全配置说明.docx》有做相关说明,如下:
所以带有xp_cmdshell
是肯定会被拦截的,但是想到刚才分析漏洞时,传入的sql会以$
进行分割。
那么,如果我传入exec xp_cmd$shell 'whoami';
,则最终的语句会是:
所以,可以用该方法进行绕过。测试如下:
最终payload:
/Api/portal/elementEcodeAddon/getSqlData?sql=exec%20xp_cmd$shell%20%27whoami%27;
当然要先激活xp_cmdshell
,激活方法:
2.3 武器化
- 本文作者: Alivin
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1775
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!