XSS跨站脚本攻击

XSS:

    XSS(跨站脚本攻击),是指攻击者在网页中嵌入恶意的客户端脚本代码,通常是js代码,这样当用户浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

    XSS产生的原因是因为web程序对输入和输出没有做严格合理的校验,导致“精心构造”的恶意代码输出在前端,并被浏览器解析执行从而产生危害。

    XSS属于客户端攻击,最终受害者是用户,但是管理员也属于用户之一,因此攻击者可以通过管理员做跳板实现服务端攻击,并且管理员的权限一般比较大,因此这种服务端攻击方式危害较大。

XSS分类:

    1.反射性XSS(非持久性XSS):交互的数据不会被存储在数据库里,只是简单的把用户输入的数据反射给浏览器,一次性攻击,所见即所得。需要社工手段有道用户点击。

    2.储存型XSS (持久型 XSS):交互的数据会被存储在数据库里,永久性存储,具有很强的稳定性。

    3.DOM XSS:不与后台服务器产生数据交互,通过前端的dom节点形成的XSS攻击。

XSS挖掘方法:

    工具:可以通过APPscan、AWVS等web漏洞扫描工具扫描。

    手工:重点检查页面上哪里有输入,输入的数据在什么地方输出。

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

    2.在找到输入点之后输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理。

    3.构造执行js的执行条件(如通过构造闭合),然后提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

    另外代码审计层面:通过搜索关键字在脚本中寻找输出显示代码,并跟踪输出变量是否被过滤

XSS的典型攻击方法:

    劫持用户cookie,框架钓鱼,挂马等,对于流量比较小的站点,XSS攻击影响较小,对于流量比较大的站点,XSS攻击影响较大。

    XSS盲打:攻击者不知道后台是否存在xss漏洞的情况下,提交恶意JS代码在类似留言板等输入框后,当后台管理员在操作时就会触发插入的恶意代码,从而达到攻击者的目的

XSS的防御与绕过:

    XSS防御的总体思路是:对输入进行过滤。对输出进行转义。

输入时:将可能导致XSS攻击的字符过滤掉,可以根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。

输出时:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义。

    XSS的防御方法:

    1. 对前端的限制可以通过抓包重发或者修改前端的HTML绕过。

    2. 对于后端的过滤可以尝试,大小写混合输入,拼凑双写,注释干扰,编码等方式绕过。

知识点:

    当协议、主机(主域名,子域名)、端口任何一个不相同时称为跨域。

    同源策略:是浏览器的安全基石,为了安全考虑,所有浏览器都约定了“同源策略”,同源策略禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。但是本地js,图片,CSS以及其他静态资源不受同源策略影响。

通过设置Access-Control-Allow-Origin,设置为*,解除同源策略。

你可能感兴趣的:(XSS跨站脚本攻击)