XSS注入


XSS简介

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

XSS注入

<script>alert(1)</script>

通过这段js代码,弹个框来证明存在xss漏洞。
弹框只是为了证明存在此漏洞。而此漏洞的利用方式由很多种。
比如,可以使用xss平台:
平台地址
平台使用教程

当某人进入带有脚本的页面时,js脚本会获取他的cookie并发往xss平台。

你只需要登录xss平台等待即可,拿到cookie后,可以不需要密码登录他的账号。

对于存储型xss漏洞的表现形式,比较经典的是留言板。但是我们都是遵纪守法的好学生,不能对外面的网站进行测试,所以我拿了我自己的web项目做了一波操作。
发现存在xss注入,虽然Java的预处理查询有着防御sql注入的功能,但是针对于xss注入,还需要做很多防范措施。

选择平台生成的一些脚本注入之后,接收到了cookie,ip等相关信息

同理任何访问被xss注入后的用户都会被收集信息。
其实在注入成功之后,你会发现留言内容和留言者的部分都为空,因为插入的js代码已经被浏览器解析执行了!

这时我们按F12,打开浏览器的开发者工具,就能发现嵌入的js脚本。

XSS攻防

作为一个开发,我们要保证项目的抗压能力。

如何防范xss?

	在input标签里面加上maxlength属性
	
	<input type="text" name="nickname" placeholder="留言者昵称" maxlength="10"> 
	至于原理,就是因为js脚本的形式为<script></script>长度为17,所以只要我们在前端对长度进行限制,就可以阻止黑客进行xss攻击了
	
	可是!开发可没这么好做!
	
	作为攻击者,我们同样可以修改前端代码,具体的操作是使用浏览器的F12(开发者工具)我们可以直接进行长度的修改。
	
	另外,还可以用抓包的方法,在包里面直接写,也是不受长度限制的。
	所以这种方式只能针对"脚本小子",并不切合实际
      2.
	对关键字script进行过滤

	很容易发现,要想进行xss攻击,必须插入一段js脚本,而js脚本的特征是很明显的,脚本中包含script关键字,那么我们只需要进行script过滤即可。
	
	但是js脚本是一种弱类型语言,不区分大小写,所以只需要对某一字母大小写切换,就可以实现绕过屏蔽。
	
	例:
	<sCrIPt>alert(1)</ScripT> 
	这时候你可能会说,那把大小写一起屏蔽了不久行了?
	其实不然,因为语言特性,可以使用双写script的方式再次进行绕过  
	例:
	<Sscriptcript>alert(1)</Sscriptcript> 
	原因,前面的S和后面的cript组合在一起,构成了新的Script关键字。
      3.
	使用正则表达式过滤

	攻击者如何再一次绕过?
	
	答案是:用img标签的oneerror属性
	
	<img src=x onerror=alert(1)> 
      4.
	过滤alert关键字
	
	那么,攻击者该怎么办呢?

	答案是:编码绕过
	
	<a href=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>a</a> 
	这种编码方式为字符编码

	字符编码:十进制、十六进制ASCII码或unicode 字符编码,样式为“&#数值;”, 例如“j”可以编码为“&#106;”或“&#x6a;”
	
	上述代码解码之后如下:
	
	<a href=javascript:alert(1)>a</a> 
	你能明显感觉到限制:由于使用到了a标签,所以只有点击时,才会弹框。
	
	能不能让所有进入这个页面的人都弹框?

	当然可以了:用iframe标签编码
	<iframe src=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;> 
	这种写法,同样既没有script关键字,又没有alert关键字。
	由于使用了iframe标签,留言板的样式会发生变形。实战中尽量不要用。```

    ### 小结
其实关于xss的注入方法数不胜数,学习的道路坎坎坷坷,只能一步一个坑的慢慢填。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM