Java 审计之xss审计要点
Java 审计之xss审计要点0x00 前言上篇文章讲了xss的一个简单审计,这篇文章可以来复盘一下上篇文章内容在上篇文章基础上做一个详细说明,以及其他的一些审计姿势。 首发:Java审计之XSS篇 0x01 审计流程根据上篇文章来总结一下,我们首先是全局搜索了 0x02 ModelAndVIew详解当视图解释器解析是ModelAndVIew,其中model本生就是一个Map的实现类的子类。视图解析器将model中的每个元素都通过request.setAttribute(name,value);添加request请求域中。这样就可以在JSP页面中通过EL表达式来获取对应的值。其实就是进行了一个简单的封装,方便于我们使用。 方法1: 定义格式:
实例:
将一个对象共享到域中 方法2:
0x03 CMS 审计使用ModelAndView需要new一个对象,那么我们可以直接来全局搜索 点击一个存在该关键字的类,进行跳转到该类。 这里实例化了一个对象叫model,跟踪看一下model都调用了哪些方法,如果调用 定位一下typeList变量是怎么来的 这里就可以看到调用了 再来定位到 typeName的地方是String类型的,可以去插入xss的Payload。 返回Controller查看调用的方法typeList值得获取调用得方法。 ctrl+左键点击WebSiteImagesTypeSerivce跳转到该接口。 选中接口,CTRL+H 查看该接口实现类。 点击实现类,进行跟踪 这里就查看到了 service层得 看到并没有使用注解来配置,那么就肯定是使用了xml的文件来进行配置了。 全局搜索一下dao的名称,并且指定类型为xml的文件,在开发中一般xml的映射文件会和dao接口的名字前面一样,然后加个mapper。 点击跳转进去 到这里后,就已经看到内容会从数据库的 下一步需要做的就是查看数据会从哪里去写入。 返回到Controller,看到下面还有个更新的方法,是可以对数据进行插入的。 调用了 这里并没有调用到过滤的方法,而是直接调用webSiteImagesTypeDao.updateType直接传入值了,其实从Controller的更新方法追溯上去一点多此一举了,因为我们在跟踪查询方法的service接口的时候,其实就已经看到增删改查的方法了,这里只是为了逻辑更清晰一些。 跟踪到updatetype方法后, 查询映射文件,其实文件还是刚刚在定位查询方法时候的那个文件里面 这里得知该语句会从WebSiteImagesType取typeName和typeId的值,进行更新语句的填入。如果我们在对应的位置插入xss后,payload 会存储在 下面来把环境启动,然后进行测试一下。 查看漏洞地址
点击修改名称进行修改。 xss执行了,但是闭合的时候没成功闭合,插崩了。后面的几个按钮都给覆盖了。 去数据库将数据删除一下。 重新打开一下。 构造xss Payload,具体怎么构造这里就不做赘述了。
0x04 结尾在审计代码的时候会发现一些比较有意思的事情,比如刚刚查看的service接口中的增删改查方法,如果接口中一任意个方法没做过滤,其他的方法也不会去做一个过滤。刚刚审计的只是一个update的方法插入xss,但是如果是增加的方法呢?,当然也是可以的。但是这里的代码添加的方法不是直接去做一个设置,而是添加条新的并且是空的数据,后面需要修改成想要的数据。这样的话漏洞的位置还是在修改方法上面,而不是添加的方法。 (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |