html代码转换小程序_草莓樱桃秋葵奶茶站长推荐_上海设计公司胡启民_线下产品推广方案

开发小游戏需要什么技术

网站视频免费下载、软文营销网、永久使用、不限域名、上海企业服务云怎么收费

栖霞设计学校?

html代码转换小程序_草莓樱桃秋葵奶茶站长推荐_上海设计公司胡启民_线下产品推广方案

IDEA设置

下载了导入的依赖库源码后才能对库中代码进行搜索和跳转

SQL注入

在源文件中,多处出现 include 引用 sqlwhere

而sqlwhere的foreach语句中存在着sql注入,如果传入的集合sqlWhereList的el属性为eq,则可以控制field属性来写入恶意sql语句

搜索发现有好几处条件查询引用了sqlWhere

先查看net\mingsoft\mdiy\dao\IDictDao.xml

向上查询query,发现是net\mingsoft\base\dao\IBaseDao定义的接口

这里还是属于Mapper层

其传入的参数为BaseEntity

里面有获取sqlWhereList的方法

如果我们传入sqlWhere参数,且是JSON数组类型,就会转换为sqlWhereList

向上查看哪里调用了query方法

来到Service层

net\mingsoft\base\biz\impl\BaseBizImpl

再往上即controller层

有这么多地方调用了query,逐一尝试

其实不应该漫无目的的逐一尝试,有些query并没有引用sqlWhere,应该去搜索引入sqlWhere的query对应的controller

应重点关注这四个的controller

第一个

net/mingsoft/cms/action/CategoryAction

接口地址为:/ms/cms/category/list

传入的参数类型是CategoryEntity,该类又继承自BaseEntity,因此可以传入sqlWhere参数,并构造恶意的json数组:
[{"field":"updatexml(1,concat(0x7e,(select database())),1)","el":"eq"}]

第二个

net/mingsoft/cms/action/ContentAction.java

接口地址:/ms/cms/content/list

虽然这个做了过滤

但他只是对参数中的CategoryId做了过滤,没有考虑sqlWhere

同样存在sql注入漏洞

第三个

net\mingsoft\mdiy\action\DictAction

接口地址:/ms/mdiy/dict/list

第四个

接口地址:/ms/basic/log/list

第五个

跟前面的不一样

net/mingsoft/base/dao/IBaseDao.xml

在net.mingsoft.base.biz.impl.BaseBizImpl多处调用了queryBySQL

其中一处向上追踪

发现在net.mingsoft.basic.action.BaseAction#validated进行了调用

把fieldName和fieldValue作为键值对传入sql语句

其中fieldName就是里面的${key},如果fieldName可控,就会存在SQL注入漏洞

向上追踪,在net.mingsoft.mdiy.action.PageAction#verify调用了

接口地址:/ms/mdiy/page/verify

fieldName和fieldValue用户可控

payload:

/ms/mdiy/page/verify?fieldName=updatexml(1,concat(0x7e,(select%20database())),1)&fieldValue=1

XSS

地址:http://localhost:8080/mcms/search.do

当在输入框搜索恶意代码时,会报错

在IDEA中可以看到报错信息:

跟踪到XssHttpServletRequestWrapper.java查看

此处虽然对输入做了过滤,但是最后却直接将输入返回给前端

throw new BusinessException("参数异常:"+ content);

导致了XSS漏洞

文件上传

第一个

后台登录地址:http://localhost:8080/ms/login.do

系统设置->模板管理中存在上传接口

其接口地址为:/ms/file/uploadTemplate.do

文件上传的信息都保存在Bean中

此处虽然说只能上传zip文件,但是抓包之后可以修改为其他类型的文件,修改为一个TXT文本进行尝试:

打断点调试

发现bean对象的uploadPath默认都为template

将bean对象的相关属性放到Config中然后调用uploadTemplate方法

uploadTemplate方法负责文件上传,并黑名单检测文件后缀是否为exe,jsp,jspx,sh

最终上传的文件都会到web根目录下的/template/1/中

同时返回文件地址

且能够成功访问

但是并不能上传jsp后缀的文件

尝试将jsp文件打包成zip然后上传,看看是否会自动解压

查看代码发现在文件上传成功后会自动调用/template/unZip.do方法进行解压

该方法将ZipFile解压到ZipFile的父目录下,且限制了路径穿越

可以看到成功解压了,绕过了后缀名的限制

但是springboot启动的情况下,虽然能访问到jsp⽂件但是不能解析,⼀般是在tomcat部署的情况下才能解析成功

第二个

在模板管理中可以编辑模板,并保存

此时抓包得到的接口地址为:/ms/template/writeFileContent.do

通过控制fileName可以上传任意文件(除了jsp和exe后缀的)

fileName=1.txt&fileContent=123&oldFileName=1.txt

此时上传到的是web根目录

尝试目录穿越,但是发现报错

原因为BasicUtil.getRealTemplatePath方法获取web根路径会调用getRealPath方法,而getRealPath方法会判断路径中是否存在../,导致报错

freemaker模板注入

在内容管理->静态化中,可以根据模板生成主页

接口地址为:/ms/cms/generate/generateIndex.do

调用了CmsParserUtil.generate方法

调用了ParserUtil.rendering方法

该方法中又调用了另一个rendering

触发了process

一般freemaker漏洞常位于后台可以编辑模版的地方,通过插入恶意的ftl指令到ftl文件中,当后端再次return或者process时即可触发代码执行

因此在模板内容中插入恶意的指令,并生成主页,即会触发模板注入

<#assign value="freemarker.template.utility.Execute"?new()>${value("calc.exe")}

任意文件删除

这里用到了AOP切面技术

代码位于net/mingsoft/cms/aop/CategoryAop.java

@Pointcut("execution(* net.mingsoft.cms.action.CategoryAction.delete(..)) ")

拦截CategoryAction.delete方法

并在执行完delete之后执行AOP中的delete方法

实现删除栏目后并删除文章对应的静态化文件

deleteCategoryHtml方法没有对传入的categoryPath做任何过滤,因此可以实现任意文件删除

在内容管理->栏目管理处删除栏目并打断点调试

该方法会提取传入参数中的categoryPath

并调用deleteCategoryHtml方法

其中htmlPath为webapp目录下的html目录

appDir为web

最后拼接的路径为:

src/main/webapp/html/web/gywm/gongsijieshao

因此我们可以控制categoryPath,使其删除webapp目录下的1.txt文件:

删除成功

网站规划目录结构时应当遵循几个原则广告设计与制作就业岗位网络推广公司哪家效果好珠宝购物网站开题报告国家检测中心再来短视频app网页源代码怎么改桂林seo外链企业党建设计百度外推排名项目网络图 前导图制作动图的软件appfacebook推广公司怎么注册钉钉企业账号麻花星空无限传媒制作有限公司国家新闻出版署防止未成年人沉迷网络游戏举报平台谷歌优化师证书邢台整合网络推广h5短链接生成成品网站w灬源码1688网页湖南互动网站建设积极承接北京广州平面设计大学设计说明英语哈尔滨企业建筑资质公司新能源汽车车型目录网站视频加载失败怎么办微信小程序苏康码怎么获取海宁网站制作公司国家信息企业网婚礼设计师培训

猜你喜欢

  • 友情链接:
  • 西安效果图制作公司有哪些 全屋定制安装培训学校 凡科互动微信小游戏 短链接生成可在qq打开 江西seo综合优化公司 江门鹤山特产有哪些