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就是这些基础的东西一个是在域中存储的问题,和域环境存取内容还有就是有些类也存在这样的问题(这里后面再分析)

JAVA代码审计之xss的更多相关文章

  1. java代码审计文章集合

    0x00 前言 java代码审计相关文章整理,持续更新. 0x01 java环境基础 搭建Java Web开发环境   配置IDEA编辑器开发java web,从0创建项目   IDEA动态调试   ...

  2. [代码审计]某租车系统JAVA代码审计[前台sql注入]

    0x00 前言 艰难徘徊这么久,终于迈出第一步,畏畏缩缩是阻碍大多数人前进的绊脚石,共勉. 系统是租车系统,这个系统是Adog师傅之前发在freebuf(http://www.freebuf.com/ ...

  3. Java代码审计-铁人下载系统

    初学 java 代码审计,跟着表哥们脚步,走一遍审计流程,就选了个没有使用 Java 框架的 java 系统,作为入门. 目的是为了熟悉代码审计流程,寻找漏洞的思路,入门记录. 准备工作 为了验证审计 ...

  4. 【代码审计】JAVA代码审计

    分享一些Java安全相关文章,其中大部分都涉及到代码的分析与审计. 大家总是在找Java的代码审计的文章,但好像很多人选择性失明. 其实Java没有和PHP一样的简单,所以你觉得你看到的文章不是入门级 ...

  5. java代码审计的点

    java代码审计的点 组件的审计 首先看pom.xml查看第三方组件和第三方组件的版本 常用的第三方组件: 第三方组件 漏洞类型 组件漏洞版本 log4j2 远程代码执行 Apache log4j2 ...

  6. Java代码审计之不安全的Java代码

    Java代码审计之不安全的Java代码 ​ 在打靶场的同时,需要想一下如果你是开发人员你会怎样去防御这种漏洞,而作为攻击方你又怎么去绕过开发人员的防御. 环境搭建 https://github.com ...

  7. java代码审计中的一些常见漏洞及其特征函数

    文章来源:https://xz.aliyun.com/t/1633 最近在先知上看到之前有篇关于java代码审计的文章总结的蛮好,记录以下特征函数,方便查阅,同时自己也会将在平时代码审计过程中积累的函 ...

  8. Java代码审计入门篇

    作者:i春秋核心白帽yanzmi 原文来自:https://bbs.ichunqiu.com/thread-42149-1-1.html 本期斗哥带来Java代码审计的一些环境和工具准备. Java这 ...

  9. Java代码审计连载之—SQL注入

    前言近日闲来无事,快两年都没怎么写代码了,打算写几行代码,做代码审计一年了,每天看代码都好几万行,突然发现自己都不会写代码了,真是很DT.想当初入门代码审计的时候真是非常难,网上几乎找不到什么java ...

随机推荐

  1. CSP-S 2020 T4 贪吃蛇 (双队列模拟)

    题面 题解 先看数据,T<=10,用平衡树或优先队列是可以拿70分的,大体思路和正解思路是一样的,每次直接修改,然后模拟. 我们模拟的时候,主要是在过程中算出最终被吃的有选择权的蛇的最后选择时刻 ...

  2. 食之无味?App Startup 可能比你想象中要简单

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  3. CDH6.2.0安装并使用基于HBase的Geomesa

    1. 查看CDH 安装的hadoop 和 hbase 对应的版本 具体可以参考以下博客: https://www.cxyzjd.com/article/spark_Streaming/10876290 ...

  4. Python中的super函数,你熟吗?

    摘要:经常有朋友问,学 Python 面向对象时,翻阅别人代码,会发现一个 super() 函数,那这个函数的作用到底是什么? 本文分享自华为云社区<Python中的super函数怎么学,怎么解 ...

  5. Exchange 2019中的Unified Messaging(UM)

    前天,刚刚安装了测试用的Exchange 2019.安装过程和之前的2016一样,非常顺利.但是在用ECP管理服务器的时候遇到了一个报错.The term 'Get-UMService' is not ...

  6. 无线WIFI连接

    家里的无线网络覆盖一直不全, 最近想改善一下.买了一个mercury的小路由器MW156RM 其实,我还是不理解WDS, repeater, bridge模式有什么区别. 目标就是实现最少的改动,保持 ...

  7. 编写 bzt 脚本的正确姿势

    这是今年1月24日的旧文,发现没在这里发过,就搬运过来了. 声明 本文讨论的使用场景主要为使用已有的 jmx 脚本,并配合 json 对 jmx 脚本进行部分参数的动态修改. 只补充一些官方文档上没有 ...

  8. centos7安装sonarqube-9.2.4

    官方文档地址:https://docs.sonarqube.org/latest/requirements/requirements/ 使用 sonarqube 对 java 项目代码进行扫描的时候, ...

  9. MySQL用户也可以是个角色

    前言 角色(Role),可以认为是一些权限的集合,一直是存在各个数据库中,比如Oracle.SQL Server.OceanBase等,MySQL 自从 8.0 release 才引入角色这个概念. ...

  10. 动态代理(JDK、CGLIB)

    JDK-Proxy(动态代理): 特点:要求被代理的对象必须接口 缺点:如果一个对象没有任何接口实现,则不能使用JDK动态代理 1.创建一个Animal 提供一个方法 2.创建一个cat类.实现Ain ...