zoukankan      html  css  js  c++  java
  • 2019-2020-1学期 20192415 《网络空间安全专业导论》第十一周学习总结

    2019-2020-1学期 20192415

    《网络空间安全专业导论》第十一周学习总结

    第五章 应用安全

    5.1 概述

    三层客户/服务器结构:

    一种分隔式的应用程序,由三个层次共同组成应用系统。

    页面请求→用HTTP协议向用户返回要浏览的页面
    
    数据库查询操作请求→由中间件向数据库系统提出操作请求,得到结果返回给Web应用服务器,Web应用服务器把数据库操作的结果形成HTML页面,返回给浏览器。
    

    5.2 常见的Web应用安全漏洞

    (一) SQL注入漏洞

    1. 原因:用户输入的数据被SQL解释器执行
    2. 防护手段

    ●参数类型检测

     面向纯字符型参数查询,通过函数限制用户的输入型为数字型:
    
     int intval(mixed $var[,int $base=10]):通过使用指定的进制base转换(默认是十进制),返回变量var的integer数值。
    
     bool is_numeric (mixed $var):检测变量是否为数字或数字字符串,但此函数允许输入为负数和小数。
    
     ctype_digit:检测字符串中的字符是否都是数字,负数和小数检测不通过。
    

    ●参数长度检测

     成功执行的SQL注入语句的字符数量通常非常多,远大于正常业务中有效参数的长度。
    
     严格控制提交点的字符长度。
    

    ●危险参数过滤

     常见的危险参数:关键字、内置函数、敏感字符
    
        过滤方法:
    
         (1)黑名单过滤
    

    ※什么是正则表达式?

    正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

     给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
    
     1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)
    
     2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
    
     深入了解:https://baike.baidu.com/item/正则表达式/1700215?fr=aladdin
    
         (2)白名单过滤
    
         (3)GPC过滤
    

    ※addslashes():对输入字符串中的某些预定义字符前添加反斜杠,这样处理是为了数据库查询语句等的需要。

    这些预定义字符是:单引号 (') ,双引号 (") ,反斜杠 () ,NULL。
    
    参考:https://blog.csdn.net/zxjiayou1314/article/details/52083115?utm_source=blogxgwz8
    
    拓展:

    为什么黑名单过滤是一种不安全的方式呢 ?

    比如一个 Web服务器为 IIS6.0,Web 语言为 asp 的网站,假定开发者使用了黑名单过滤,过滤了asp、asa、cer等文件格式,那么可以尝试以下几种方式来绕过:

    1. 大小写,比如 AsP、cER等.

    2. 被忽略的扩展名,IIS6.0 会把 cdx 格式的文件当成 asp 来解析.

    3. 配合解析漏洞,上传 asp;jpg 格式文件 .

    4. 如果 Web服务器开启了其他语言的支持,比如可以解析 php 文件 , 那么可以上传 php 格式的木马 .

    5. 利用 Windows 系统自动去除.和空格的特性 , 如上传扩展名 asp. 格式的文件来绕过.

    通过以上几个例子可以看出 , 黑名单过滤的可靠性并不高,白名单过滤相对来说较为可靠.

    白名单与黑名单的机智恰恰相反,黑名单是定义不允许上传的扩展名,白名单则是定义允许上传的扩展名,虽然采用白名单可以防御未知风险,但是不能完全依赖白名单,因为白名单不能完全防御上传漏洞,例如各种解析漏洞等,白名单仅仅是防御上传漏洞的第一步.通常会结 合其他验证方式来使用,虽然不能完全防御文件上传漏洞,但也基本上规避了绝大部分风险.

    ●参数化查询

    参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。
    
    在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行。
    
    因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行。 
    
    有部份的开发人员可能会认为使用参数化查询,会让程序更不好维护,或者在实现部份功能上会非常不便;然而,使用参数化查询造成的额外开发成本,通常都远低于因为SQL注入攻击漏洞被发现而遭受攻击,所造成的重大损失。
    
    参考:https://www.cnblogs.com/kdp0213/p/8554032.html
    

    (二) 文件上传漏洞

    本质是将恶意文件或者脚本上传到服务器。

    1. 原理:一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过Web访问的目录上传任意PHP文件;并能将文件传递给PHP解释器,从而可以在远程服务器上执行任意脚本。

    2. 原因:

      ◆文件上传时检查不严

      ※截断符

      在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。

      0x00,%00,/00 之类的截断,本质都是一样的,只是不同表现方式而已。

      ◎文件上传后修改文件名时处理不当

      ◎使用第三方插件时引入

      ※什么是第三方插件?
      为了扩展一个软件的其它功能开发的软件或代码,由软件调用,比如浏览器的FALSH播放插件,翻译插件等等。

    3. 防护手段

      ●开发阶段:客户端、服务器端对用户上传的文件名和文件路径等项目分别进行严格的检查。

      ●运行阶段

      ●安全设备的防御:对漏洞的上传利用行为和恶意文件的上传过程进行检测。

    (三) XSS

    1. 定义:跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤的不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取数据。

      XSS属于客户端攻击,受害者是用户。

      ※URL

      统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。

    2. 原理:注入一段能够被浏览器解释执行的代码,并通过各类手段使得这段代码“镶嵌”在正常网页中,由用户在正常网页中触发。

    3. 类型:

      (1)反射型XSS:输出端中存在可被浏览器执行的代码数据

      (2)存储型XSS:

      Web应用程序会将用户输入的数据信息保存在服务器端的数据库或其他文件形式中。

      网页进行数据查询时从数据库获取数据内容,并将数据内容在网页中进行输出展示。

       常见场景就是在博客或新闻发布系统中,黑客将包含恶意代码的数据信息直接写入文件或文章评论中,所有浏览或评论的用户都会在他们客户端浏览器环境中执行插入恶意代码。
      

      (3)基于DOM的XSS:修改页面DOM节点数据信息形成的XSS,修改页面DOM节点数据信息形成的XSS。

    4. 防护手段

      ●过滤特殊字符

      ●使用实体化编码:让浏览器能区分这些字符是被用作文字显示而不是代码执行

    (四) CSRF

    跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

    攻击者利用cookie盗用了用户的身份,以用户的名义进行了某些非法操作。

    跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
    
    1. 原理

      参考:https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html

      完成一次CSRF攻击,受害者必须依次完成两个步骤:

      (1)登录受信任网站A,并在本地生成Cookie。

      ※Cookie

      Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

      (2)在不登出A的情况下,访问危险网站B。(CSRF攻击篡夺用户的会话Cookie

      “如果不满足以上两个条件中的一个,就不会受到CSRF的攻击”。但可能发生以下情况:

      (1)用户登录了一个网站后,打开一个tab页面并访问另外的网站。

      (2)用户关闭浏览器了后,本地的Cookie没有立刻过期,上次的会话没有结束。

      ※关闭浏览器不能结束一个会话

        Session:在计算机中,尤其是在网络应用中,称为“会话控制”。
      
        Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
      
        当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。
      
       其实让Session结束生命周期,有以下两种办法:
       一个是Session.invalidate()方法,不过这个方法在实际的开发中,并不推荐,可能在强制注销用户的时候会使用;
       一个是当前用户和服务器的交互时间超过默认时间后,Session会失效。
      
       我们知道Session是存在于服务器端的,当把浏览器关闭时,浏览器并没有向服务器发送任何请求来关闭Session,自然Session也不会被销毁。
      

      关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。

      (3)上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站

    2. 危害方式

      ◎论坛等可交互的地方

      ◎Web攻击者

      ◎网络攻击者

    3. 防护手段

      ●添加验证码:攻击者不能接收服务器给用户返回的申请

      ●验证referer:验证请求来源方式

      ●利用token:

      token(内容是一个伪随机数)是当前用户第一次访问某项功能页面时生成,且应该是一次性的,生成后由服务器端发送给客户端。

      当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。

    (五) 远程代码执行漏洞

    1. 原理

      由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。

    2. 防护

      ●禁用高危系统函数

      ●严格过滤关键字

      ●严格限制允许的参数类型

    5.3 恶意代码

    (一) 概念

    (二) 典例

    WebShell

    1. 介绍

      WebShell文件通常是可执行的脚本文件,一般用于远程控制Web服务器。

    2. 危害

      攻击者可以用Web页面的方式,通过脚本木马后门控制web服务器;可以上传下载文件、查看数据库、执行任意程序命令等。

    3. 防范方法

    ※“数据库允许匿名访问”,为什么建议创建个别具有高权限的用户来执行数据库的操作?

    ※“设置虚拟目录”有什么用处?

    5.4 中间件【★★不是很理解★★】

    中间件是一种独立的系统软件或服务程序,分布式应用程序借助这种软件在不同的技术之间共享资源。

    中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通信。

    中间件不仅实现互联,还能实现应用之间的互操作。

      优势:
          屏蔽底层操作的复杂性
          简便开发,缩短开发周期;减少系统维护的工作量;减少计算机总体费用投入
          将不同时期、在不同操作系统上开发应用软件集成起来
    
    1. 应用服务类中间件

      为应用系统提供一个综合的计算环境和支撑平台,包括对象请求代理(ORB)中间件、事务监控交易中间价、Java应用服务器中间件等。

    2. 应用集成类中间件

      提供各种不同网络应用系统之间的消息通信、服务集成和数据集成的功能,包括常见的消息中间件、企业集成EAI、企业服务总线以及相配套的适配器等。

      消息中间件:利用高效可靠的信息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

    3. 业务架构类中间件

      ●业务流程:处理业务模型的重要方法。

      ●业务管理:对业务对象的建模和业务规则的定义、运行、监控的中间件平台。

      ●业务交互:提供交互工具,实现个性化的用户体验。

    5.5 数据库安全

    • 数据库是“按照数据结构来组织、存储和管理数据的仓库”,是长期存放在计算机内、有组织、可共享的大量数据的集合。

      数据库是以按照一定数据模型进行组织、描述和存储,具有尽可能小的冗余度、较高的独立性和易扩展性,并为各种用户共享。

    • SQL:结构化查询语言

      数据库查询:用户查询数据时,通过SQL语言发出请求,数据库系统根据请求进行处理并检索所需求的数据,再返回给用户。

    第八章 舆情分析

    8.1 舆情

    8.2网络舆情的分析方法

    (一) 检索方法

    数据检索是网络舆情分析的准备阶段。

    1. 机器检索

      机器检索是借助信息检索工具(如搜索引擎)在网络上抓取与给定关键词相关的信息,借助累加器、网址指向判断等简单的程序给出信息的来源和信息的浏览量,并可以按照用户要求进行排序和筛选(例如,按时间顺序排列和按来源筛选)。

      机器检索的典型应用是网络搜索引擎。

       搜索引擎的核心是索引,即目录。在搜索引擎中,目录是动态增加的。
       在电子计算机或相关设备中,一个“目录”或“文件夹”就是一个装有数字文件系统的虚拟“容器”。在它里面保存着一组文件和其它一些目录(文件夹)。
       一个典型的文件系统可能会包含成千上万个目录(文件夹)。多个文件通过存储在一个目录(文件夹)中,可以达到有组织的存储文件的目的。在一个目录(文件夹)中的另一个目录(文件夹)被称作它的子目录(子文件夹)。这样,这些目录(文件夹)就构成了层次(hierarchy),或树形结构。
       大家习惯上把“目录”叫做“文件夹”。
      
    2. 人工检索

      人工检索是借助开放性工具(如商业搜索引擎)完成网络舆情分析工作。这里的“人工”主要是相对于单一机器检索而言,指以人工操作模拟搜索引擎的工作原理与方式。

    3. 检索方法的特点

      ⑴实际操作中自主研发的检索工具使用频率不高,普通商业搜索引擎的使用率较高。

      ⑵机器检索需要事先设定一个目录。

      ⑶机器检索负责数据的粗检索,人工检索负责数据的精细检索。

      ⑷检索的起点是关键词或者排行榜,检索的内容是信息的属性,包括转发量、点击量、评论量、传播关键点。

    (二) 研判方法

    研判是分析的核心技术环节。

    网络舆情的研判主要关注舆情发生的动因、核心诉求、传播路径和传播影响力,并判断舆情的传播走势和影响。

    要完成这两项任务,一是需要分析思路,二是需要理论支持。

    (三) 典型的舆情分析方法

    1. 双层分析法

      (1)传播层分析

      传播内容的变异:增or减

      信息互动:

       ①微博讨论→网络新闻门户→传统媒体
       ②传统媒体→网络新闻门户→微博讨论
      

      研究传播渠道的变异,能够掌握渠道间衔接的关键节点,了解不同传播渠道的传播效果。

      (2)动因层分析

    2. 语义统计分析方法

      可执行的网络舆情分析语言,是为实现网络舆情精准分析而设计的通用编程语言。

      网络舆情精准分析系统

    3. 情感倾向分析方法

      自动分析出文本内容所表达的情感和态度,将情感分类转化为文本分类。

      倾向性分类:基于语义词典的方法、基于机器学习的方法

    4. 基于Web的文本挖掘技术的分析方法

      α.关联规则挖掘

       挖掘出隐藏在数据之间的相互关系,获取关联规则,预测用户行为。
      

      β.序列模式挖掘

       分析数据间的前后序列关系
      
       序列模式分析特征,发现隐含的顺序关系,预测热点事件的发展趋势。
      

      γ.聚类分析

       以某种相似性度量为标准,将未标注类别的文本分成不同的类别。
      
       层次聚类法
      

      δ.自动分类技术

       预先设定分类准则,将对象划分到事先定义好的类中。
      

    8.3 舆情分析应用

    问题

    1. 在“文件上传漏洞”中,P91,如何利用断点上传工具绕过客户端的检查?

    文件上传检测的多种绕过方法:

    https://www.cnblogs.com/someone9/p/9180218.html

    https://www.jianshu.com/p/74ca4e884645

    https://blog.csdn.net/c465869935/article/details/51800354

    2. HTTP协议

    http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

    3. cookie与session

    (1)Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

    参考:https://www.jianshu.com/p/6fc9cea6daa2

    (2)了解session与打开/关闭浏览器的关系:https://blog.csdn.net/u012757419/article/details/94040638

    (3)Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定(session
    机制可能需要借助于cookie机制来达到保存标识的目的):

    *https://www.cnblogs.com/yaowen/p/4819018.html *
    https://www.cnblogs.com/suguangti/p/11043039.html

  • 相关阅读:
    Drop goldengate用户时报ORA-00604 ORA-20782 ORA-06512问题解决
    如何查看机器品牌型号
    ORA-28040:没有匹配的验证协议
    oracle 12C CDB下开启wallet
    mysql备份和恢复
    手工模拟vip切换
    半同步复制的安装部署
    linux下安装mysql5.7.11(二进制方式)
    postgrep创建存储过程例子
    Nginx 是前端工程师的好帮手
  • 原文地址:https://www.cnblogs.com/lanvin/p/12055540.html
Copyright © 2011-2022 走看看