暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【新手入门系列】一步一步教你漏洞挖掘之某系统从H2 database SQL注入漏洞到RCE回显构造

且听安全 2021-10-19
2504

引言




H2 database 允许用户自定义函数别名,然后执行Java代码。这一特性可以导致SQL注入漏洞提升为RCE。某系统前台存在SQL注入漏洞,因为后台默认采用H2 database,结合Resin命令回显以及BCEL字节码方式,可实现命令执行回显。


漏洞分析




漏洞本身比较简单。查看web.xml文件:



所有的*.do访问URL均通过springmvc进行处理。定位client.do处理代码`ClientAction.class`:



当参数`method`的值为`getupload`,进入`getupload`函数处理:




提取`uploadID`参数,并通过`MobileManager#getUpload`进行处理:



进入`mobileService#getMobileUserUpload`函数:



直接进行了参数拼接,导致出现SQL注入漏洞。系统后台默认采用H2 database数据库,所以有注入就可以直接执行java代码。


SQL注入到RCE




系统后台默认采用H2 database数据库。H2 database允许用户定义函数别名:


H2 database create alias

https://www.h2database.com/html/commands.html#create_alias


因此可以执行Java代码。使用`CALL`语句调用别名,执行Java代码:


CREATE ALIAS EXEC AS
$$ void e(String cmd) throws java.io.IOException
{java.lang.Runtime rt= java.lang.Runtime.getRuntime();rt.exec(cmd);}$$
CALL EXEC('whoami');


结合Resin回显和`com.sun.org.apache.bcel.internal.util.ClassLoader`字节码方式,可以构造命令回显利用:



参考




https://www.h2database.com/html/commands.html#create_alias



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



点关注,不迷路!

文章转载自且听安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论