首页 > 编程语言 >JAVA代码审计之xss

JAVA代码审计之xss

时间:2022-10-20 10:46:14浏览次数:34  
标签:审计 xss JAVA String request return public RequestMapping

java_sec_code

xss

补充和回忆一下一些开发基础

@RestController
@RequestMapping(value = "/xss")
public class Xsstest {
    @ResponseBody
    @GetMapping("/test")
    public String getxss( HttpServletRequest request, HttpServletResponse response,@RequestParam String xss){
        xss = request.getParameter("xss");
        request.setAttribute("xss",xss);
        System.out.println(xss);
        System.out.println(xss);
        request.getRequestDispatcher("src/main/java/web/1.jsp");
        return xss;
    }
}

这里用的是springboot去开发的用的是mvc没用用servlet那一套基础类,这样开发很方便记录一些点吧

  1. @RequestMapping(value = "/xss") 访问的地址可以在主类上加然后在后面的方法上面加形成多级目录
  2. @RequestParam String xss 注解参数代表的是在url中获取参数 xss
  3. @GetMapping("/test")是代表的是只允许get请求去访问还有@PostMapping
  4. request.setAttribute("xss",xss);把xss里面的值用xss这个变量名来存储

我这里原本是准备用request域中去存储这个值然后做一个跳转达到这个效果的但是不知道为啥没有配置好久采用了另一种的方式就是在本页面不过滤参数直接返回这就是一种简单的反射型xss。

还有一种效果就是放到共享域中后又另外的页面取出内容没有进行过滤也会造成xss漏洞。

补充一下域相关的知识

1.域对象:一个有作用范围的对象,可以在范围内共享数据。
2.request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据

还有一些审计是在前端的就不做审计了自己又在复习这些web漏洞多摸摸靶场

less-1

这里的xss其实并不完善,过于基础了,第一种是在url插入的一种反射性xss,这种xss存在的危害其实并不大,而且存在的也比较少

用简单易懂的语言来说一下

为什么会存在反射型xss呢
很简单的一个道理,一切可控的输入都是有害的,
@RequestMapping("/reflect")
    @ResponseBody
    public static String reflect(String xss) {
        return xss;
    }

看着代码简单我们需要简单去理解一下xss隐含在其中的原理

为什么会有这样的情况,这样的情况来自于我们输入的参数,再没有任何过滤的情况下就返回给了客户端这种情况怎么会存在呢,js代码没被过滤,这种情况怎么存在呢
1.很简单的例子,当我们访问一个站点,它对我们的参数会跟一个url进行拼接,returun www.example.com?title=#{url}
就这样我我们可以进行一个拼接,1<script>alter(1)</script)这样我们收到的返回的url如果它对这个url参数没有任何过滤的话就会返回一个带js代码的url,js代码还会被执行

第二种情况这种情况是存在与java中的

@RestController
@RequestMapping(value = "/xss")
public class Xsstest {
    @ResponseBody
    @GetMapping("/test")
    public String getxss( HttpServletRequest request, HttpServletResponse response,@RequestParam String xss){
        xss = request.getParameter("xss");
        request.setAttribute("xss",xss);
        System.out.println(xss);
        System.out.println(xss);
        request.getRequestDispatcher("src/main/java/web/1.jsp");
        return xss;
    }
}

叫做域内的xss,这域呢不是内网的域而是javaweb的一种机制吧,就是request域,它可以把从request获得的值存储到一个空间里面然后可以再其他地方用方法把它取出来,如果这个setAttribute对输入和输出的值都没有过滤的话也会在其他页面产生xss

1.域对象:一个有作用范围的对象,可以在范围内共享数据。
2.request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据

less-2

那存储型xss就很好理解了,就是在前段输入的值会被后端载入且,后端对输入的内容没有进行过滤,就会导致js脚本代码的执行,

 @RequestMapping("/stored/store")
    @ResponseBody
    public String store(String xss, HttpServletResponse response) {
        Cookie cookie = new Cookie("xss", xss);
        response.addCookie(cookie);
        return "Set param into cookie";
    }

    @RequestMapping("/stored/show")
    @ResponseBody
    public String show(@CookieValue("xss") String xss) {
        return xss;
    }

这里是利用cookie的可构造来做出来的,但是现实情况不会出现这种cookie直接构造的,这里只是为了方便,还有很多的利用场景,比如评论区,投诉信这些可能会存在在后台的都会出现这种构造类型

总结

总的来说java的xss就是这些基础的东西一个是在域中存储的问题,和域环境存取内容还有就是有些类也存在这样的问题(这里后面再分析)

标签:审计,xss,JAVA,String,request,return,public,RequestMapping
From: https://www.cnblogs.com/0x3e-time/p/16808892.html

相关文章

  • 资料保存---javascript事件
    onchangeHTML元素改变onclick用户点击HTML元素onmouseover鼠标指针移动到指定的元素上时发生onmouseout用户从一个HTML元素上移开鼠标时发生onkey......
  • 史上最简单的JAVA集合(List)转树(Tree)方法
    /***将数据转换为树型结构**@paramsourcessources*@return{@linkList<DemoData>}*/publicstaticList<DemoData>transToTree(List<D......
  • java连接ranger+ldap认证的hive
        使用java连接ranger+ldap认证的hive,通过jdbc加上用户名密码即可,代码示例如下:importjava.sql.*;publicclassJdbcHiveLdap{privatestaticString......
  • Javascript--变量内函数句柄
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body><p>创建和使用对象方法。</p><p>对象方法作为一个函数定义存储......
  • 多测师肖sir__java__开班流程01
    开班流程:一、基本操作1、wifi连接网络教室1:dcs1或者5g密码:duoceshi999教室2:dcs2或者5g密码:duoceshi888教室3:dcs3或者5g密码:duoceshi666登陆密码:duoceshi666教室5:dcs5......
  • java连接sqlserver的方法分享
    转自:http://www.java265.com/JavaJingYan/202206/16552126983712.htmlsqlserver:   SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Micros......
  • Java数组快速排序
    https://blog.csdn.net/weixin_44194075/article/details/1138504761.快速排序的思想​通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的......
  • 【转】【Java异常】idea 报错:无效的目标发行版:17 的解决办法
    原文地址:https://blog.csdn.net/weixin_44299027/article/details/120848738一、项目背景最近在看Spring源码书籍,从GitHub把Spring源码拉取下来之后,想写个Demo跟踪源码。......
  • java基础
    Before单行注释、多行注释 单行注释和多行注释内容不参与编译,编译以后生成的.class的字节码文件中不包含注释掉的信息。文档注释(java特有)文档注释内容可以被JDK提供的......
  • Java中HashMap的几种遍历方式
    publicstaticvoidmain(String[]args){Map<String,Object>map=newHashMap<>();map.put("姓名","张三");map.put("年龄",30);......