freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

XSS-小总结
2021-08-19 09:41:33

什么是XSS/XSS原理:

攻击者嵌入恶意脚本代码到用户会访问到的页面中,用户访问该页面的时候,就引起恶意脚本代码的执行,从而达到恶意攻击用户的目的。攻击者可以使用户在浏览器中执行其预定义的恶意脚本,变量接受数据的时候,数据可以写成js脚本代码,进行回显操作。

本质

属于前端漏洞,产生在浏览器和js代码中的漏洞

XSS类型

反射型XSS(非持续型XSS),储存型XSS(持续型XSS),DOM XSS

具体区别

反射型:

数据提交过去时,会在代码执行之后直接反馈回来

发包x=zzx=>x.php=>回包

存储型:

数据提交过去时,会在代码执行之后储存到数据库的某个表里,然后反馈回来

发包x=zzx=>x.php=>写到数据库某个表=>x.php=>回显

DOM型:

发包x=zzx=>本地浏览器静态前端代码=>x.php

反射型和储存型属于后端语言进行数据处理,而DOM型是用js代码进行处理

三者原理

反射型XSS:应用或API没有对用户输入数据进行验证或没进行转义然后作为HTML的输出的一部分,能够使得攻击者在受害者的浏览器上执行任意HTML和JavaScript。

存储型XSS:应用或API存储未格式化的用户输入,且该输入之后会被其他用户或管理员浏览到。

DOM XSS:动态包含攻击者可控制数据到页面中的JavaScript框架, 单页应用,API易受DOM XSS。

涉及函数类:常见的输出类函数

如何检测

方法一: 查看代码,查找关键的变量,   客户端将数据传送给Web 服务端一般通过三种方式 Querystring, Form表单,以及cookie.  例如在ASP的程序中,通过Request对象获取客户端的变量。 假如变量没有经过htmlEncode处理, 那么这个变量就存在一个XSS漏洞

方法二:xss跨站漏洞测试语句, 在网页中的Textbox或者其他能输入数据的地方,输入测试语句, 看能不能弹出对话框,能弹出的话说明存在XSS漏洞, 在URL中查看有那些变量通过URL把值传给Web服务器, 把这些变量的值退换成测试语句。  然后看是否能执行

方法三:  自动化测试XSS漏洞

可能存在XSS漏洞点

用户能够输入提交数据的地方,文本框,url,请求头等等

危害

如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。

XSS实质上就是JS脚本,任何JS脚本能实现的功能,XSS也能实现能做到的Cookie劫持、构造GET和POST请求、XSS钓鱼、识别用户浏览器、识别用户安装的软件等

防范修复

前端采用大型框架Angular,Vue,React等等。

用session代替cookie。

对于用户输入的数据要严格过滤

写入数据库的数据,一定要保证合理过滤。

对于所有输出的地方,一定要做好过滤工作,比如采用模版渲染等等。

使用Token

使用HttpOnly

什么是HttpOnly

如果在cookie中设置了HTTPonly属性,那么通过js脚本将无法读取到cookie信息,这样能有效防止XSS攻击。

绕过httponly

浏览器未保存账号密码:需要XSS产生登录地址,利用表单劫持

浏览器保存了账号密码:产生后台的XSS,储存型XSS,如留言等,利用浏览器读取账号密码

如何绕过防护

修改编码格式

加密解密算法

结合其他漏洞绕过

大小写

onerror函数

配合平台,例如xssfuzzer.com生成语句

工具:Xwaf,XSStrike

# web安全 # 总结 # 笔记
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录