首页 > 其他分享 >xss漏洞总结

xss漏洞总结

时间:2023-07-11 10:46:26浏览次数:37  
标签:总结 xss XSS DOM 用户 JS 漏洞 过滤

Xss漏洞(跨站脚本攻击)

原理

通过网页插入恶意脚本,如前端的HTML和JavaScript。当用户浏览网页时,浏览器执行用户输入的JS代码,实现控制用户浏览器

危害

获取用户的cookie,利用cookie盗取用户对该网站的操作权限;

获取用户联系人列表,利用被攻击者的身份向特定的目标群发送垃圾信息

XSS的分类

XSS一般被分为三类:反射性XSS,存储型XSS,DOM型XSS

这三种类型的危害程度一般认为:存储型XSS>反射型XSS>DOM型XSS

反射型XSS 反射型XSS我们可以理解为一次性的XSS,一般是通过url请求中插入JS代码,然后随着浏览器通过响应的方式传给用户,也可能是通过站内信息,比如聊天框中没有对输入过滤,输出转义,然后攻击者将恶意的JS代码发送给受害者,从而达到窃取用户信息比如cookie的目的。 反射型(非持久型):搜索框 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容)
存储型XSS 存储型XSS我们可以理解为持续性的XSS,比如用户输入的信息会在服务器的后台存储,服务器并没有严格对输入过滤,输出转义的配置的话,那么一段恶意的JS将永久存储在服务器中,举个例子,我们都玩过论坛,贴吧之类的社区网站,此时有个攻击者将恶意的JS代码插入留言板内,那么只要是有人浏览至带有恶意JS代码的评论区内时,恶意的JS代码就会被浏览器信息解析,那么用户的信息就可能被攻击者窃取。如果此时管理员浏览至此,是不是cookie就会被窃取,攻击者就可以通过窃取的管理员cookie登录后台。所以XSS中存储型的危害最为致命,某歌曾经就有过存储型XSS漏洞。 存储型(持久型):发表文章的地方,留言板 代码是 存储在服务器中的,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie
DOM型XSS DOM型XSS是个特殊型的XSS,它是基于文档对象型Document Object Model的一种漏洞,DOM是一个与平台编程语言无关的接口,对于浏览里而言DOM文档就是一份XML文档,由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行,因而仅从服务器端是无法防御的。
DOM型: 从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞

测试方法:

1.在数据输入界面,输入:<script>alert(/123/)</script>,保存成功后如果弹出对话框,表明此处存在一个XSS 漏洞。

2.把url请求中参数改为<script>alert(/123/)</script>,如果页面弹出对话框,表明此处存在一个XSS 漏洞。

3.使用xss平台/工具可以实现多种功能进行漏洞利用

防御:#安全修复方案

开启httponly,输入过滤,输出过滤等

1、服务端过滤用户输入的危险字符(<|>|%|#|\x|&|’|\)

2、对输出内容进行HTML实体编码(编码后类似a)

(回答输入过滤,输出编码也可以)

第一阶段:使用ESAPI

这是一个Apache开发的安全组件,主要用于解决SQL注入和恶意脚本注入。

使用ESAPI防止XSS攻击时,首先应当配置过滤器(注意在过滤器中chain.doFilter(..)方法中的Request对象进行包装,在包装类中对请求参数进行筛选操作);其次将过滤器注册到web.xml文件中;最后配置Request的包装类,在其中对请求信息进行过滤。

注意:开启ESAPI的防护功能时(value = ESAPI.encoder().canonicalize(value);),需要提前对要筛选的值进行URL解码(value = URLDecoder.decode(value);),否则会出现中文乱码。

第二阶段(可选):使用CSF(Content Security Policy)安全策略

CSF是一种白名单防御策略,所有不在名单内的资源都不被信任,有效的防止了通过外部的标签、脚本、JS文件等资源的入侵形式,详情请看http://www.ruanyifeng.com/blog/2016/09/csp.html,我也是在这位大佬的网站上学习的CSF.

使用方式:

1.通过<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">标签将CSP嵌入到页面中。但是这种做法会对所有页面添加一个过滤项,加长了页面的访问时间,降低了用户体验;我加到项目中的时候还出现了某些样式文件加载不全的现象,没有必要不建议这么做。

2.通过使用Nginx配置HTTP 头信息的Content-Security-Policy的字段,但是一般的公司都不允许更改Nginx,一旦Nginx做了某种配置,整个项目都受影响,这种方式基本没戏。

漏洞利用

XSS获取Cookie

XSS钓鱼获取用户密码

XSS获取键盘记录

XSS平台搭建xssplatform

Kali beef-xss

XSS小游戏解题思路/靶场

工具

Beef

kali自带

小旋风

xss漏洞利用平台

Xsstrike

XSStrike主要特点反射和 DOM Xss 扫描

多线程爬虫

Context分析

可配置的核心

检测和规避 WAF

老旧的 JS 库扫描

智能payload生成器

手工制作的HTML & JavaScript解析器

强大的fuzzing引擎

盲打 xss 支持

高效的工作流

完整的 HTTP 支持

Bruteforce payloads

Payload编码

漏洞容易出现的地方

留言板 评论区 订单 反馈

在有shell的情况下,如何使用xss实现对目标站的长久控制

后台登陆处加一段记录登陆账号密码的js,并判断是否登陆成功,就把账号和密码记录到一个生僻的路径文件中或者直接发到自己的网站中

标签:总结,xss,XSS,DOM,用户,JS,漏洞,过滤
From: https://www.cnblogs.com/xlvbys/p/17543352.html

相关文章

  • 永磁同步电机矢量控制C代码,全部从项目中总结得到,采用的S- 永磁同步电机矢量控制C代码,
    永磁同步电机矢量控制C代码,全部从项目中总结得到,采用的S-永磁同步电机矢量控制C代码,全部从项目中总结得到,采用的S-function模式仿真,与实际项目运行基本一致,可以直接复制代码移植到工程实践项目中去。ID:22390662457992412......
  • web前端 第四天总结
    案例1:盒子模型<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</ti......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • web前端 第三天总结
    案例1:伪类选择器<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>伪类选择器</titl......
  • 《代码中的软件工程》学习总结及心得体会
    本学期我选修了孟宁老师开设的《高级软件工程》课程,作为一名软件工程专业的学生,本课程的内容以及《代码中的软件工程》一书让我受益匪浅。在课程以及书本内容中,我了解到软件工程的概念和重要性。软件工程是一门研究如何以系统化、规范化和可量化的方式开发和维护软件的学科。通过......
  • 福州大学MEM 备考总结
    自己的基本情况2022年8月2日,当天觉得休息的差不多了,思来想去,觉得考研是个不错的选择,和女朋友聊了一下,得到她的支持,于是乎定下目标。接着就是开始在网络上查找相关的材料,先把要报考高校和专业的信息以及备考要的资料搞定。也了解到各个考研机构也是贵的很,要上万块,我可是几百块都不......
  • 20230710巴蜀暑期集训测试总结
    T1打个不太暴的暴力但是爆了。只对了subtask1,不清楚发生了什么。先建出Kruscal重构树,对每个询问二分答案,判断就用暴力启发式合并T2打了一个\(20pts\)dp。第一步没有想到,每怎么见过这种题。将问题转化为满足\(\foralli,x_i\leA_i,x_i\leB_i\)的序列\(x\)个数。枚......
  • 每日总结2023年7月10日
    今日学习:SQL注入:是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入的数据中注入非法的SQL语句段或命令,恶意攻击数据库。例子如下:计算机网络:七层模型:物理层(功能:传输二进制,设备:中继器、集线器)、数据链路层(功能:传输以帧为单位的信息,设备:网桥、交换机、网卡,协议:PPTP、L......
  • 组合数学总结
    本篇文章是为了总结一下最近做的组合数学的题目以及涉及到的知识点,以后可能会不定期补充。同时也参考了大佬lyt的博客。同时如果想要更深入地了解组合数学中的推式子技巧,可以看下pjw的博客。地址1地址2基本知识排列数\(A_n^m\)表示从\(n\)个不同的物品中选出\(m\)个......
  • java类和对象学习总结
    当一个引用赋值为null的时候,就代表这个引用不指向任何的对象引用不能指向引用,只能说引用指向了另一个引用的对象.一个引用不能指向多个对象this引用的学习:代表的是当前对象的引用,每一个成员方法的第一个参数默认是thisthis.year this.month   加上this代表给当前的对象......