駭客會透過哪些方式獲取 Web所用的技術呢?
由於駭客可以利用已知的風險漏洞進行攻擊,
因此知道Web所使用的技術與版本資訊對駭客來說十分重要。
那麼駭客可以透過哪些方式得知這樣的資訊呢?
這些議題就是這篇文章會討論的範圍。
Http Request
從基本的 Http Request 中就可以看出許多 Web所使用的技術。
瀏覽器按下 F12,Developer Tools 我們可以觀察到每一個發送的 Http Request
舉個例子來說,下列的 Http Request,其時透露一些訊息:
GET /books/search.asp?q=books HTTP/1.1 Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg, application/xshockwaveflash, application/vnd.msexcel, application/vnd.mspowerpoint, application/msword, */* Referer: http://wahh-app.com/books/default.asp Accept-Language: en-gb,en-us;q=0.5 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) Host: wahh-app.com Cookie: lang=en; JSESSIONID=0000tI8rk7joMx44S2Uu85nSWc_:vsnlc502 |
- 書本查詢參數傳遞是透過 Http Get。q=books
- Search.asp:附檔名為 ASP或是應該是使用為軟 .Net 架構
- Referer: 這個網頁的原始來源。
- User-Agent: 通常用來告訴網站伺服器根據使用者瀏覽器顯示不同的資訊。例如手機板、桌機板、或是不支援IE 8.0以下版本等資訊。
- Cookie: 中有定義 JSESSIONID。J2EE的網站架構會有這樣的 Cookie Name。(所以可以在驗證是否部分使用 J2EE or .NET)
- Host: wahh-app.com。主機的名稱。Host + Get 就會組合出完整的 URL。這個例子完整的 URL
- wahh-app.com/books/search.asp?q=books
Http Response
當然 Http Response中也會透露許多訊息,舉例如下。
HTTP/1.1 200 OK Date: Sat, 19 May 2007 13:49:37 GMT Server: IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix) Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc Pragma: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Content-Type: text/html;charset=ISO-8859-1 Content-Language: en-US Content-Length: 24246 <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> <html lang=”en”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”> … |
- Return Code 200: 這不就是網頁正常回覆,有什麼好驚訝? 筆者稍後說明這個值對駭客有什麼意義。
- Server: “IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix)”這個範例中具體的印出版本資訊,像這些資訊都是可以避免回傳的。
- Cookie: 因為登入成功後,有許多使用者或是授權 Token會以Cookie形式,因此駭客會利用病毒或是 XSS的方式竊取 Cookie
- Expires: 主要用來觀察是否有網頁 Cache。因為網頁 Cache 也是另外一個竊取資料的方式。
附檔名
另外可以從網址 URL 中區分出背後使用哪些技術
- asp—Microsoft Active Server Pages
- aspx—Microsoft ASP.NET
- jsp—Java Server Pages
- cfm—Cold Fusion
- php—the PHP language
- d2w—WebSphere
- pl—the Perl language
- py—the Python language
- dll—usually compiled native code (C or C++)
- nsf or ntf—Lotus Domino
Cookie Name (Session Tokens)
另外也可以從 CookieName 之中得知網站使用的技術
- JSESSIONID—The Java Platform
- ASPSESSIONID—Microsoft IIS server
- ASP.NET_SessionId—Microsoft ASP.NET
- CFID/CFTOKEN—Cold Fusion
- PHPSESSID—PHP
錯誤訊息
例如這個訊息,除了透露程式碼內部的邏輯之外,最下方也透露ASP .NET版本資訊。
通常駭客會刻意輸入非法或是無效的 URL或是參數來讓Web 產生錯誤訊息。
Return Code 對駭客的意義
Return Code | 原本的意義 | 駭客的意義 |
302 |
|
|
400 | Bad Request |
|
401or 403 | 401 Unauthorized403 Forbidden |
|
500 | Internal Server Error | 通常表示參數輸入(Http Get 或是 Http Post)有少。 |
希望透過這篇文章讓我們對於 HTTP 有另外一個角度的看法。不禁佩服駭客的創意與思維.