常见漏洞-XSS以及相关知识点

乾坤未定,你我皆是黑马

1、XSS漏洞概述

跨站脚本(Cross Site Scripting)攻击,是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料,利用用户身份进行某种动作或者访问者进行病毒侵害的一种攻击方式。
没有对web前端的输入边界进行严格的过滤是XSS漏洞的主要原因。
XSS漏洞发生在web前端,主要对网站用户造成危害,并不会直接危害服务器后台数据。

2、XSS分类

①. 反射型XSS

指是简单地对用户输入的数据直接或未经过完善的安全过滤就在浏览器直接输出,导致输出的数据中存在可被浏览器执行的代码。
一般是页面弹窗

嵌入iframe(点击劫持、钓鱼等)
<iframe src="http://www.xxx.com"></iframe>
当一个页面出现类似这种语句时候<?php echo "

hello, $_GET['user']

"
;?>,在访问时候设置/?user=</p><script>alert("hack")</script><p>,则会触发预设的JavaScript代码。

②. 存储型XSS

是指web应用程序对用户输入的数据不严格,导致web应用程序将黑客输入的恶意跨站攻击数据信息保存到服务端的数据库或者其他文件中,当页面进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在页面中进行输出展示,进而导致跨站脚本代码的执行。
存储型XSS脚本攻击最为常见的场景就是在留言板,博客或者新闻发布系统,恶意代码直接写入文章,评论 ,留言中,浏览时即会执行相应的脚本代码。

③. DOM型XSS

基于DOM型的XSS跨站脚本攻击是通过修改页面DOM节点数据信息而形成的XSS跨站脚本攻击,不同于反射型XSS和存储型XSS,基于DOM的XSS跨站脚本攻击往往需要针对具体的JavaScriptDOM代码进行分析,并根据实际情况进行XSS跨站脚本攻击的利用。

简单写一段代码:
function xsstest()
{
	var str=document.getElementById("input").vlaue:
	document.getElementById("outout").innerHTML="";
}

此时输入 #‘οnerrοr='javascript:alert(/DOM Base XSS Test/) 既可触发

④. Blind XSS

储存型XSS的一种,它保存在某些存储中,当一个“受害者”访问这个页面时执行,并且在文档对象模型(DOM)中呈现payload。 它被归类为盲目的原因是因为它通常发生在通常不暴露给用户的功能上

3、XSS漏洞测试过程

①. 在目标站点上找到输入点,比如查询接口,留言板等
②. 输入一个“唯一”字符,点击提交后,查看当前状态下的源码文件
③. 通过搜索定位到唯一字符,集合唯一字符前后语法构造script语句,并合理的对HTML标签进行闭合
④. 提交构造的script语句,看是否成功执行,如何成功执行则说明存在XSS漏洞

一些小技巧:

①. 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS
②. 由于后台可能存在过滤措施,构造的script语句可能会被过滤掉,而无法生效,或者浏览器限制了执行。这里我们可以使用开源的一些XSS平台。
③. 通过构造不同的script语句,尝试绕过后台过滤机制
④. 最快的发现XSS漏洞的方法还是通过web漏洞扫描工具,如Nessus,AWVS,Appscan等

4、XSS漏洞防范措施

①. 对前端输入进行过滤和编码
—比如只允许输入指定类型的字符,比如电话号码格式,用户名限制等,输入检查需要在服务器完成,在前端完成的限制是容易被绕过的

②. 对输出进行过滤和编码
—在变量值输出到前端的HTML时进行编码或者转义

③. 给关键的cookie使用http-only

你可能感兴趣的:(渗透测试,安全类,面试)