CGI漏洞大多分為以下幾種類型: (轉自INTERNET)

1.暴露不該暴露的信息如:

暴露密碼文件, 暴露自身源代碼, 暴露文件存放絕對路徑等(這種往往是WEB SERVER的毛病)

2.執行不該執行的命令如:

執行SHELL指令等(這種往往是CGI自身編寫的問題)

3.溢出:

如iishacker(這種往往是WEB SERVER的毛病)

第一種漏洞一般是因為SERVER編寫不當造成的,如我發現的在NT下用PHP查看硬盤任何文件的BUG,首先你要瞭解PHP的執行過程,在NT下PHP3文件被請求後,經過PHP.EXE解釋,然後將解釋後結果返回給瀏覽器,而PHP.EXE本身就可以讀任何文件(你可以在自己機器上試驗)所以PHP.EXE是無罪的,那就只有怪APACHE為什麼不好好判斷用戶的輸入了.像ASP文件為什麼加上xxx.asp%81就會暴露源代碼也是相同道理,Server認為asp%81不是一個asp文件,所以不加以解釋就返回給瀏覽器,當然這其中還有些判斷過程,Server肯定是先判斷對方的請求是否合法,但xx.asp%81翻譯過來為:xx.asp?這種請求是合法的,所以Server找到這文件並不經過解釋器而直接把它的內容讀出來給用戶.像我昨天夜裡發現的暴露JSP源代碼的方法也是一樣,開始我試驗的時候Server老認為我的請求不合法,所以我就騙它,:)騙到它認為我的請求是合法的它就就範了!(脫個精光)哈哈!

在談第二種漏洞的原理:

這種漏洞容易出問題的地方一般是UNIX下SHELL命令的直接執行和fopen()等對文件操作的函數的使用。往往是因為程序員不對用戶輸入做精確的判斷造成的,這類例子太多了,如著名的http://www.victim.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd就是一個最好的例子,unix認為第一條命令結束後將要執行第二條命令,然後Hacker的指令就順利的執行了.所以CGI的漏洞經常是因為「;」等特殊符號造成的,還值得我一提的是../欺騙,很多BUG都因為../造成的,道理其實和前邊的差不多,如NT4上的SHOWCODE.ASP,大家看它的源代碼都知道,其實它做了限制的,只允許看/msadc/Samples/目錄下的東東的,不過我們可以欺騙它,(搞的黑客技術和欺騙技術一樣)然後達到目的查看它諸如:winnt/repair/sam._這樣的核心文件(順便提一下,我以前用JAVA寫過一個showcode的利用程序,有興趣的朋友可以下載它).

在談談FOPEN()函數吧,其實它的作用就是打開文件,也就是讀文件內容,它這個特性就可以讓我們利用它做我們想做的事情,如:看弱智女子洗澡,但你千萬別像我一樣被誣告強姦哦:),使用這個函數和WEB程序員的水平有關,弱智力的一般就可以讓我們利用了,最好的例子就是看我當時是怎麼使用抓X龍爪手抓下來的那副圖http://go.163.com/~lovehacker/passwd.jgp想必你也就會明白其中的道理了!

第三種漏洞原理:最著名的就是EEYE發現的IIS的溢出,也就是當年的IISHACKER(呵呵,他的取名和我還很像哦,CGIHACKER,IISHACKER)靠,有興趣的朋友可以多看看關於溢出方面的文章和IISHACKER的源代碼.其實是因為沒有判斷用戶輸入邊界造成的,應用我們安盟大蝦的話就是:本來我做電梯上五樓,234樓是機密單位別人無權進入,誰知道電梯超載了,到了二樓電梯停了,我也就進了我不該進的地方,干了我不該幹的事情.(形象吧,經典吧,大家鼓掌)

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料