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 每扫一个删除的连结,就会删掉一篇文章 @@ ,最后一篇不留的删光光。

网页好读版