事情起源于在服务器上看到了命名随机的jsp文件,打开内容一看是webshell。
根据webshell修改时间,将当天的D:/WEAVER/Resin/logs/access.log
和D:/WEAVER/Resin/log/stderr.log
取出来进行分析,以查找其利用路径。
在stderr.log中发现,攻击者利用SQL注入执行xp_cmdshell命令来上传的文件
存在SQL注入的mapper已经确定是GetSqlDataMapper.xml
.于是便开启了对该漏洞的分析研究
首先来到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获取权限的案例。
这是往上比较常见的利用方法,可以通过执行SQL语句查询ecology的管理员账号密码,从而登录后台。
payload如下:/Api/portal/elementEcodeAddon/getSqlData?sql=Select%20*%20from%20HrmResourceManager%20where%20loginid=%27sysadmin%27
然后利用账号密码登录后台
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
,激活方法:
13 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!