關於 PHP, Linux, Open Source 及個人生活記載的網誌。
RSS icon
  • 檢查 CGI 安全漏洞

    Posted on April 9th, 2007 Sam Tang No comments

    CGI 全寫是 Common Gateway Interface,CGI script 可以用系統支援的程式語言編寫,例如 C/C++ 及 Perl 等。而 CGI 在系統上是有可執行,也就是說任何人也可以透過網站執行惡意指令,例如查看系統檔案及shell access 等。

    而大多數的漏洞也是因為沒有檢查用戶的輸入,而讓惡意攻擊者透過 web 執行指令,例如以下 URL:

    http://host/cgi-bin/query?%0a/bin/cat%20/etc/passwd

    以上的 (%0a) 是開新一行, (%20) 是空格,那便這句 URL 便會透過 /bin/cat 開啟 /etc/password 檔案。

    除了開啟系統檔案外,系統也可能被當成 Denial of service (DoS) 的工具:

    http://host/cgi-bin/ncommerce3/ExecMacro/macro.d2w/%0a%0a..(aprox 1000)..%0a

    所以在編寫 CGI 時要特別注意安全的問題,以下是一些建議:

    – 不要隨便讀取用戶的輸入,即使必要也需對特別的字串做過濾。
    – 不要用 eval 建立執行指令字串。
    – 使用 popen() 及 system() 時要謹慎。
    – 關閉 server side includes (SSI)。


    Leave a reply

    *
    To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
    Click to hear an audio file of the anti-spam word