2014
Jan
03

網頁好讀版


Google 是一個很強的搜尋引擎,你可以在 Google 找到很多知識與學問,但是你有被 Google 給駭客過嗎? 沒錯

Google Search 不但好用,而且也很變態的一直在 Hack 別人的系統。

很久的曾經,我接過一個客戶的案子,內容是這樣的,我的客戶正在做一個強力的後台管理系統,其中有會員、最新消息、留言版、商品等等子系統,而客戶希望我使用他們的系統,去製作一個網站,而且還要有文章管理的功能。

這個案子我一聽到,就覺得是客戶是想藉由這個案子,要我幫他們多完成一個文章管理系統,這樣客戶未來就有更多可以直接拿來套版的功能,不管怎麼,我還是接了這個案子。

一個小小網站加上文章管理系統,當然不會難到我,幾天的功夫就做完了,並且我提供了一個測試網站,讓客戶的客戶可以先在測試系統中上傳他的產品內容。

管理介面,大約像下面這個樣子的表格。

標題圖片內容編輯刪除
第一篇 xxxx文章內容??EditDelete
第二篇 xxxx文章內容??EditDelete
第三篇 xxxx文章內容??EditDelete

奇怪的是,就在客戶上完一部分資料後的二週左右,有一天所有的文章突然不見了,當天客戶也打電話問我為什麼他上傳的資料都不見了,在那個剛睡醒的早晨,我也沒辦法說明原因,還被客戶問說是不是網站被人 hack 了...

接著我開始追查 Access Log ,發現的確有刪除文章的記錄,而且是一筆一筆刪除,Log 中還有 Browser User Agent 的資料,上面寫著 「Google Bot」,內容如下。

Access Log
  1. 10.53.xx.x [01/Jan/2008] "GET /admin/delete.php?id=1 HTTP/1.1" 200 > 39 "Google Bot xxxx"
  2. 10.53.xx.x [01/Jan/2008] "GET /admin/delete.php?id=2 HTTP/1.1" 200 > 39 "Google Bot xxxx"
  3. 10.53.xx.x [01/Jan/2008] "GET /admin/delete.php?id=3 HTTP/1.1" 200 > 39 "Google Bot xxxx"
一開始我想說是不是駭客故意偽裝成 Google Spider,企圖讓我忽略這幾條 Access Log,實際測試刪除的功能之後,才發現客戶系統中的檢查「管理員登入」是有問題的,駭客可以跳過登入檢查,直接刪除文章。

當時寫的 PHP 檔案,大約像下面這段 Code.

delete.php 內容
  1. if (!login()) {
  2. header("location: index.php");
  3. }
  4.  
  5. deleteArticle($id);

這段程式有一個很大的問題,就在於 php 在執行 header 這個 function 時,只會印出如下的重導 header ,但在程式並不會中止,而是繼續往下執行 deleteArticle。

HTTP Response
  1. HTTP/1.1 302
  2. location index.php

也就是因為這個原因, Google Spider 每掃一個刪除的連結,就會刪掉一篇文章 @@ ,最後一篇不留的刪光光。

網頁好讀版