網路找一下就可以知道這是什麼攻擊方式

我這邊針對系統端上,研究一下防禦方式 (兩個,如果有人有其它方式也請提供)

1。設定 open_basedir,系統預設是不會設定的,一般情況 web 路徑會是 /var/www/html,再設個 /tmp 是因為程式會用到暫存,這會限制 PHP 可以開啟的目錄

open_basedir="/var/www/html:/tmp"

2。使用 mod_security,只要 URL 裡帶有 ../ 就會被阻擋掉,可以找 OWASP 現成的 Rules

測試一下 get.php

<?php
 $url = file_get_contents($_GET['url']);
 echo nl2br($url);
?>

瀏覽 http://xx.xx.xx.xx/get.php?url=../../../../../../etc/passwd

看阻擋前及阻擋後的成效如何

不要看到下面的內容就可以了

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

對了,另一方式是,程式不要用 file_get_contents 這個 function,因為有安全性問題,及效率好像很差

如果要限制不能使用 file_get_contents 的話就

allow_url_fopen = Off

(但是 allow_url_fopen 關閉是不能阻擋 Directory Traversal attack 喔)

 

最後一點,也很重要,寫程式時要留意安全性問題

最後修改日期: 2014 年 01 月 13 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。