XSS跨站脚本攻击

2025-02-18 8 0

一、XSS漏洞原理

 XSS属于客户端攻击,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一。这就意味着XSS可以进行“服务端”攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一般也是靠管理员身份作为“跳板”进行实施攻击。

XSS的重点不在于跨站点,而在于脚本的执行。那么XSS的原理是:

 恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。那么XSS攻击最主要有如下分类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。

1.XSS漏洞出现的原因

XSS跨站脚本攻击插图

程序对输入和输出的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。

2.XSS的分类

1、反射型XSS或不持久型XSS(中危)

2、储存型XSS 或持久型 XSS(高危)

3、DOM XSS

3.测试方法

1、工具扫描:APPscan、AWVS

2、手工测试:Burpsuite、firefox(hackbar)、XSSER XSSF

使用手工检测Web应用程序是否存在XSS漏洞时,最重要的是考虑那里有输入,输入的数据在什么地方输出。在进行手工检测XSS时,人毕竟不像软件那样不知疲惫,所以一定要选择有特殊意义的字符,这样可以快速测试是否存在XSS。

(1)在目标站点上找到输入点,比如查询接口,留言板等;

(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;

(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

二、反射型XSS

反射型xss攻击( Reflected XSS)又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接( 即每次攻击需要用户的点击)。

JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言。

JavaScript 是可插入 HTML 页面的编程代码。

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

Javascript语法格式:

<script>

[Javascript代码]

</script>

<!DOCTYPE html>
		<html>
			<head>
				<meta charset="utf-8">
				<title></title>
			</head>
			<body>
				<script type="text/javascript">
				alert('第一个javascript程序');
				</script>
			</body>
		</html>

在XSS中常用的是以下这些标签

alert                        alert()方法用于显示带有一条指定消息和一个确认按钮的警告框

window.location      window.location对象用于获得当前页面的地址(URL) ,并把浏览器重定向  到新的页面

location.href            返回当前显示的文档的完整URL

onload                     一张页面或一幅图像完成加载

onerror                    在加载文档或图像时发生错误

onchange                HTML 元素改变

onclick                     用户点击 HTML 元素

onmouseover          鼠标指针移动到指定的元素上时发生

onmouseout            用户从一个 HTML 元素上移开鼠标时发生

onkeydown              用户按下键盘按键

三、DOM型XSS

通过JavaScript,可以重构整个HTML文档,就是说可以添加,移除等等,对页面的某个东西进行操作时,JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口就是DOM,所以在DOM型的xss漏洞利用中,DOM可以看成是一个访问HTML的标准程序接口。

特征:整个过程都是在前端完成的,没有后端的参与(纯前端的操作!)

四、存储型XSS

存储型XSS是指应用程序直接将攻击者提交的恶意代码存储到服务端保存,然后永久显示在其他用户的页面上。

比较常见的就是,黑客写下一篇包含恶意JavaScript代码的博客文章,文章发表后,所有访问该博客的用户,都会在它们的浏览器中执行这段恶意的JavaScript代码.黑客把恶意的脚本保存到服务端,所以这种XSS攻击就叫做"存储型XSS"。

XSS跨站脚本攻击插图1

存储型XSS可能出现的位置:

(1)用户注册

(2)留言板

(3)上传文件的文件名处

(4)管理员可见的报错信息

(5)在线聊天框

(6)客服

(7)问题反馈区

(8)邮件信箱

理论上,见框就插。

满足存储型XSS的条件: 能够插入数据,插入的JS代码能够正常执行

存储型XSS的作用:获取Cookie,内网IP等等

JS恶意代码可以获取浏览器的Cookie,访问植入了XSS的网站,如果使用Burp抓包检查,会发现第一次访问正常页面,第二次会GET传参访问XSS平台。如果访问正常页面的时候修改Cookie,XSS是获取不到正确Cookie的。

获取Cookie之后,可以Burp抓包直接修改Cookie,登录他人账户,也可以在浏览器修改,当然,Cookie是有时效性的。

存储型XSS在SRC属于中危漏洞,在项目上属于高危漏洞,杀伤力较大。

三、XSS绕过

1.双引号,单引号

第二关

XSS跨站脚本攻击插图2

发现没有

查看源码发现有实体函数

XSS跨站脚本攻击插图3

XSS跨站脚本攻击插图4

再闭合一下

XSS跨站脚本攻击插图5

2.事件

XSS跨站脚本攻击插图6

第三关

单引号闭合发现被转义

XSS跨站脚本攻击插图7

onclick

XSS跨站脚本攻击插图8

多了个单引号

XSS跨站脚本攻击插图9

试试onmouseover

XSS跨站脚本攻击插图10

第四关

XSS跨站脚本攻击插图11

可以看出过滤了<>

还是用事件" onmouseover="alert(1)

XSS跨站脚本攻击插图12

3.JavaScript伪协议

第五关

XSS跨站脚本攻击插图13

发现过滤是在script中加“_”,同样的方法用事件试试

XSS跨站脚本攻击插图14

发现还是过滤

使用JavaScript伪协议

"><a href=javascript:alert(1)>你好</a>

XSS跨站脚本攻击插图15

第六关

XSS跨站脚本攻击插图16

同样发现script被过滤,用上一关的方法

XSS跨站脚本攻击插图17

发现href也被过滤,这时候优先考虑简单的大小写过滤

"><a Href=javascript:alert(1)>你好</a>

XSS跨站脚本攻击插图18

双写

第七关

XSS跨站脚本攻击插图19

发现script被删除那么我们用双写

XSS跨站脚本攻击插图20

发现已经绕过,那再闭合一下就好了

"><scrscriptipt>alert(1)</scrscriptipt>

XSS跨站脚本攻击插图21

16进制实体

第八关

XSS跨站脚本攻击插图22

其中有两个注入点

XSS跨站脚本攻击插图23

发现script和伪协议都被过滤

用16进制实体将t转为J但要告诉电脑用的是16进制所以将t改为t

XSS跨站脚本攻击插图24

XSS跨站脚本攻击插图25

输入javascript:alert(1)

XSS跨站脚本攻击插图26

换行

第九关

XSS跨站脚本攻击插图27

XSS跨站脚本攻击插图28

首先发现',"无法发生闭合,说明已经被过滤且第二注入点没有输出位,查看源代码发现第二注入点必须为http://

XSS跨站脚本攻击插图29

XSS跨站脚本攻击插图30

发现还绕过了javascript那么用16进制实体进行绕过

avascript:%0dhttp://%0dalert(1)

XSS跨站脚本攻击插图31

隐藏

第十关

打开网页发现没有注入点,打开源代码发现是keyword和t_sort

XSS跨站脚本攻击插图32

在url栏上进行这两个参数的注入

XSS跨站脚本攻击插图33

发现只有t_sort有用,经测试16进制失败所以试试实体

XSS跨站脚本攻击插图34

发现还是没有弹窗但是注入进去了,是因为type="hidden"给隐藏了

输入type="text"给后面顶掉

XSS跨站脚本攻击插图35

第十一关

XSS跨站脚本攻击插图36

使用burp将Referer改为同第十关

XSS跨站脚本攻击插图37

第十二关

为user-agent头

第十三关

为cookie

操作同十一关

第十五关

本关主要考点是ng-include

XSS跨站脚本攻击插图38

注意:1、地址外面得加单引号括起来

     2、不执行script里面的代码

2、所以我们可以包含一下第一关的文件

http://127.0.0.1/xss-labs/level15.php?src='https://www.freebuf.com/vuls/level1.php'

XSS跨站脚本攻击插图39

3、由于不执行script里面的代码,所以我们可以用其他方法来触发level1.php中的xss漏洞:

http://127.0.0.1/xss-labs/level15.php?src='https://www.freebuf.com/vuls/level1.php?name=<img src="x" οnerrοr=alert(1)>'

XSS跨站脚本攻击插图40

第十六关

<script>被过滤,用imag标签

XSS跨站脚本攻击插图41

发现又把空格过滤了

XSS跨站脚本攻击插图42

用url编码代替一下%0d

XSS跨站脚本攻击插图43

十七—二十关已经不支持了


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

Twitter最新接口浅析(非爬虫)
DeepSeek本地化部署有风险!快来看看你中招了吗?
java代码审计 | spring mvc路由详解
ATT&CK实战系列-红队实战(一)
ChatGPT Operator 遭提示注入攻击,泄露用户隐私数据
CVE-2016-4437(Shiro-550)漏洞简述

发布评论