當前位置:首頁 » 文件管理 » 上傳漏洞原理

上傳漏洞原理

發布時間: 2022-12-10 09:28:20

A. 盤點信息安全常見的Web漏洞

一、SQL注入漏洞

SQL 注入攻擊( SQL Injection ),簡稱注入攻擊、SQL注入,被廣泛用於非法獲取網站控制權,是發生在應用程序的資料庫層上的安全漏洞。在設計程序,忽略了對輸入字元串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運行,從而使資料庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入後門程序等危害。

通常情況下, SQL 注入的位置包括:

(1)表單提交,主要是POST 請求,也包括GET 請求;
(2)URL 參數提交,主要為GET 請求參數;
(3)Cookie 參數提交;
(4)HTTP 請求頭部的一些可修改的值,比如Referer 、User_Agent 等;
(5)一些邊緣的輸入點,比如.mp3 文件的一些文件信息等。

SQL注入的危害不僅體現在資料庫層面上, 還有可能危及承載資料庫的操作系統;如果SQL 注入被用來掛馬,還可能用來傳播惡意軟體等,這些危害包括但不局限於:
(1)資料庫信息泄漏:資料庫中存放的用戶的隱私信息的泄露。作為數據的存儲中心,資料庫里往往保存著各類的隱私信息, SQL 注入攻擊能導致這些隱私信息透明於攻擊者。
(2)網頁篡改:通過操作資料庫對特定網頁進行篡改。
(3)網站被掛馬,傳播惡意軟體:修改資料庫一些欄位的值,嵌入網馬鏈接,進行掛馬攻擊。
(4)資料庫被惡意操作:資料庫伺服器被攻擊,資料庫的系統管理員帳戶被篡改。
(5)伺服器被遠程式控制制,被安裝後門。經由資料庫伺服器提供的操作系統支持,讓黑客得以修改或控制操作系統。
(6)破壞硬碟數據,癱瘓全系統。

二、跨站腳本漏洞

跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。

XSS攻擊使用到的技術主要為HTML和javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB伺服器雖無直接危害,但是它藉助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。

XSS類型包括:

(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。 (2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如資料庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript代碼。 (3)DOM跨站(DOM XSS):是一種發生在客戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。

三、弱口令漏洞

弱口令(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介面來訪問,因此很容易被攻擊者利用。

五、Struts2遠程命令執行漏洞

ApacheStruts是一款建立Java web應用程序的開放源代碼架構。Apache Struts存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java代碼。 網站存在遠程代碼執行漏洞的大部分原因是由於網站採用了Apache Struts Xwork作為網站應用框架,由於該軟體存在遠程代碼執高危漏洞,導致網站面臨安全風險。

六、文件上傳漏洞

文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過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 配置不安全, 登陸請求把諸如用戶名和密碼等敏感欄位未加密進行傳輸,攻擊者可以竊聽網路以劫獲這些敏感信息。

九、敏感信息泄露漏洞

SQL 注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。

Web應用漏洞原理

Web應用攻擊是攻擊者通過瀏覽器或攻擊工具,在URL或者其它輸入區域(如表單等),向Web伺服器發送特殊請求,從中發現Web應用程序存在的漏洞,從而進一步操縱和控制網站,查看、修改未授權的信息。

B. 解釋解釋入侵網站的原理

一、獲取口令

這種方式有三種方法:一是預設的登錄界面(ShellScripts)攻擊法。在被攻擊主機上啟動一個可執行程序,該程序顯示一個偽造的登錄界面。當用戶在這個偽裝的界面上鍵入登錄信息(用戶名、密碼等)後,程序將用戶輸入的信息傳送到攻擊者主機,然後關閉界面給出提示信息「系統故障」,要求用戶重新登錄。此後,才會出現真正的登錄界面。二是通過網路監聽非法得到用戶口令,這類方法有一定的局限性,但危害性極大,監聽者往往能夠獲得其所在網段的所有用戶賬號和口令,對區域網安全威脅巨大;三是在知道用戶的賬號後(如電子郵件「@」前面的部分)利用一些專門軟體強行破解用戶口令,這種方法不受網段限制,但黑客要有足夠的耐心和時間;尤其對那些口令安全系數極低的用戶,只要短短的一兩分鍾,甚至幾十秒內就可以將其破解。

二、電子郵件攻擊

這種方式一般是採用電子郵件炸彈(E-mailBomb),是黑客常用的一種攻擊手段。指的是用偽造的IP地址和電子郵件地址向同一信箱發送數以千計、萬計甚至無窮多次的內容相同的惡意郵件,也可稱之為大容量的垃圾郵件。由於每個人的郵件信箱是有限的,當龐大的郵件垃圾到達信箱的時候,就會擠滿信箱,把正常的郵件給沖掉。同時,因為它佔用了大量的網路資源,常常導致網路塞車,使用戶不能正常地工作,嚴重者可能會給電子郵件伺服器操作系統帶來危險,甚至癱瘓。

三、特洛伊木馬攻擊

「特洛伊木馬程序」技術是黑客常用的攻擊手段。它通過在你的電腦系統隱藏一個會在Windows啟動時運行的程序,採用伺服器/客戶機的運行方式,從而達到在上網時控制你電腦的目的。黑客利用它竊取你的口令、瀏覽你的驅動器、修改你的文件、登錄注冊表等等,如流傳極廣的冰河木馬,現在流行的很多病毒也都帶有黑客性質,如影響面極廣的「Nimda」、「求職信」和「紅色代碼」及「紅色代碼II」等。攻擊者可以佯稱自己為系統管理員(郵件地址和系統管理員完全相同),將這些東西通過電子郵件的方式發送給你。如某些單位的網路管理員會定期給用戶免費發送防火牆升級程序,這些程序多為可執行程序,這就為黑客提供了可乘之機,很多用戶稍不注意就可能在不知不覺中遺失重要信息。

四、誘入法

黑客編寫一些看起來「合法」的程序,上傳到一些ftp站點或是提供給某些個人主頁,誘導用戶下載。當一個用戶下載軟體時,黑客的軟體一起下載到用戶的機器上。該軟體會跟蹤用戶的電腦操作,它靜靜地記錄著用戶輸入的每個口令,然後把它們發送給黑客指定的Internet信箱。例如,有人發送給用戶電子郵件,聲稱為「確定我們的用戶需要」而進行調查。作為對填寫表格的回報,允許用戶免費使用多少小時。但是,該程序實際上卻是搜集用戶的口令,並把它們發送給某個遠方的「黑客」。

五、尋找系統漏洞

許多系統都有這樣那樣的安全漏洞(Bugs),其中某些是操作系統或應用軟體本身具有的,如Sendmail漏洞,Windows98中的共享目錄密碼驗證漏洞和IE5漏洞等,這些漏洞在補丁未被開發出來之前一般很難防禦黑客的破壞,除非你不上網。還有就是有些程序員設計一些功能復雜的程序時,一般採用模塊化的程序設計思想,將整個項目分割為多個功能模塊,分別進行設計、調試,這時的後門就是一個模塊的秘密入口。在程序開發階段,後門便於測試、更改和增強模塊功能。正常情況下,完成設計之後需要去掉各個模塊的後門,不過有時由於疏忽或者其他原因(如將其留在程序中,便於日後訪問、測試或維護)後門沒有去掉,一些別有用心的人會利用專門的掃描工具發現並利用這些後門,然後進入系統並發動攻擊。

現在,你該知道黑客慣用的一些攻擊手段了吧?當我們對黑客們的這些行為有所了解後,就能做到「知己知彼,百戰不殆」,從而更有效地防患於未然,拒黑客於「機」外。網路的開放性決定了它的復雜性和多樣性,隨著技術的不斷進步,各種各樣高明的黑客還會不斷誕生,同時,他們使用的手段也會越來越先進。我們惟有不斷提高個人的安全意識,再加上必要的防護手段,斬斷黑客的黑手。相信通過大家的努力,黑客們的舞台將會越來越小,個人用戶可以高枕無憂地上網沖浪,還我們一片寧靜的天空。
一,ping

它是用來檢查網路是否通暢或者網路連接速度的命令。作為一個生活在網路上的管理員或者黑客來說,ping命令是第一個必須掌握的DOS命令,它所利用的原理是這樣的:網路上的機器都有唯一確定的IP地址,我們給目標IP地址發送一個數據包,對方就要返回一個同樣大小的數據包,根據返回的數據包我們可以確定目標主機的存在,可以初步判斷目標主機的操作系統等。下面就來看看它的一些常用的操作。先看看幫助吧,在DOS窗口中鍵入:ping /? 回車,。所示的幫助畫面。在此,我們只掌握一些基本的很有用的參數就可以了(下同)。

-t 表示將不間斷向目標IP發送數據包,直到我們強迫其停止。試想,如果你使用100M的寬頻接入,而目標IP是56K的小貓,那麼要不了多久,目標IP就因為承受不了這么多的數據而掉線,呵呵,一次攻擊就這么簡單的實現了。

-l 定義發送數據包的大小,默認為32位元組,我們利用它可以最大定義到65500位元組。結合上面介紹的-t參數一起使用,會有更好的效果哦。

-n 定義向目標IP發送數據包的次數,默認為3次。如果網路速度比較慢,3次對我們來說也浪費了不少時間,因為現在我們的目的僅僅是判斷目標IP是否存在,那麼就定義為一次吧。

說明一下,如果-t 參數和 -n參數一起使用,ping命令就以放在後面的參數為標准,比如「ping IP -t -n 3」,雖然使用了-t參數,但並不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主機域名,這樣就可以得到主機的IP。

下面我們舉個例子來說明一下具體用法。

這里time=2表示從發出數據包到接受到返回數據包所用的時間是2秒,從這里可以判斷網路連接速度的大小 。從TTL的返回值可以初步判斷被ping主機的操作系統,之所以說「初步判斷」是因為這個值是可以修改的。這里TTL=32表示操作系統可能是win98。

(小知識:如果TTL=128,則表示目標主機可能是Win2000;如果TTL=250,則目標主機可能是Unix)

至於利用ping命令可以快速查找區域網故障,可以快速搜索最快的QQ伺服器,可以對別人進行ping攻擊……這些就靠大家自己發揮了。

二,nbtstat

該命令使用TCP/IP上的NetBIOS顯示協議統計和當前TCP/IP連接,使用這個命令你可以得到遠程主機的NETBIOS信息,比如用戶名、所屬的工作組、網卡的MAC地址等。在此我們就有必要了解幾個基本的參數。

-a 使用這個參數,只要你知道了遠程主機的機器名稱,就可以得到它的NETBIOS信息(下同)。

-A 這個參數也可以得到遠程主機的NETBIOS信息,但需要你知道它的IP。

-n 列出本地機器的NETBIOS信息。

當得到了對方的IP或者機器名的時候,就可以使用nbtstat命令來進一步得到對方的信息了,這又增加了我們入侵的保險系數。

三,netstat

這是一個用來查看網路狀態的命令,操作簡便功能強大。

-a 查看本地機器的所有開放埠,可以有效發現和預防木馬,可以知道機器所開的服務等信息,如圖4。

這里可以看出本地機器開放有FTP服務、Telnet服務、郵件服務、WEB服務等。用法:netstat -a IP。

-r 列出當前的路由信息,告訴我們本地機器的網關、子網掩碼等信息。用法:netstat -r IP。
四,tracert

跟蹤路由信息,使用此命令可以查出數據從本地機器傳輸到目標主機所經過的所有途徑,這對我們了解網路布局和結構很有幫助。如圖5。

這里說明數據從本地機器傳輸到192.168.0.1的機器上,中間沒有經過任何中轉,說明這兩台機器是在同一段區域網內。用法:tracert IP。

五,net

這個命令是網路命令中最重要的一個,必須透徹掌握它的每一個子命令的用法,因為它的功能實在是太強大了,這簡直就是微軟為我們提供的最好的入侵工具。首先讓我們來看一看它都有那些子命令,鍵入net /?回車如圖6。

在這里,我們重點掌握幾個入侵常用的子命令。

net view

使用此命令查看遠程主機的所以共享資源。命令格式為net view \\IP。

net use

把遠程主機的某個共享資源影射為本地盤符,圖形界面方便使用,呵呵。命令格式為net use x: \\IP\sharename。上面一個表示把192.168.0.5IP的共享名為magic的目錄影射為本地的Z盤。下面表示和192.168.0.7建立IPC$連接(net use \\IP\IPC$ "password" /user:"name"),

建立了IPC$連接後,呵呵,就可以上傳文件了: nc.exe \\192.168.0.7\admin$,表示把本地目錄下的nc.exe傳到遠程主機,結合後面要介紹到的其他DOS命令就可以實現入侵了。

net start

使用它來啟動遠程主機上的服務。當你和遠程主機建立連接後,如果發現它的什麼服務沒有啟動,而你又想利用此服務怎麼辦?就使用這個命令來啟動吧。用法:net start servername,如圖9,成功啟動了telnet服務。

net stop

入侵後發現遠程主機的某個服務礙手礙腳,怎麼辦?利用這個命令停掉就ok了,用法和net start同。

net user

查看和帳戶有關的情況,包括新建帳戶、刪除帳戶、查看特定帳戶、激活帳戶、帳戶禁用等。這對我們入侵是很有利的,最重要的,它為我們克隆帳戶提供了前提。鍵入不帶參數的net user,可以查看所有用戶,包括已經禁用的。下面分別講解。

1,net user abcd 1234 /add,新建一個用戶名為abcd,密碼為1234的帳戶,默認為user組成員。

2,net user abcd /del,將用戶名為abcd的用戶刪除。

3,net user abcd /active:no,將用戶名為abcd的用戶禁用。

4,net user abcd /active:yes,激活用戶名為abcd的用戶。

5,net user abcd,查看用戶名為abcd的用戶的情況

net localgroup

查看所有和用戶組有關的信息和進行相關操作。鍵入不帶參數的net localgroup即列出當前所有的用戶組。在入侵過程中,我們一般利用它來把某個帳戶提升為administrator組帳戶,這樣我們利用這個帳戶就可以控制整個遠程主機了。用法:net localgroup groupname username /add。

現在我們把剛才新建的用戶abcd加到administrator組里去了,這時候abcd用戶已經是超級管理員了,呵呵,你可以再使用net user abcd來查看他的狀態,和圖10進行比較就可以看出來。但這樣太明顯了,網管一看用戶情況就能漏出破綻,所以這種方法只能對付菜鳥網管,但我們還得知道。現在的手段都是利用其他工具和手段克隆一個讓網管看不出來的超級管理員,這是後話。有興趣的朋友可以參照《黑客防線》第30期上的《由淺入深解析隆帳戶》一文。

net time

這個命令可以查看遠程主機當前的時間。如果你的目標只是進入到遠程主機裡面,那麼也許就用不到這個命令了。但簡單的入侵成功了,難道只是看看嗎?我們需要進一步滲透。這就連遠程主機當前的時間都需要知道,因為利用時間和其他手段(後面會講到)可以實現某個命令和程序的定時啟動,為我們進一步入侵打好基礎。用法:net time \\IP。

六,at

這個命令的作用是安排在特定日期或時間執行某個特定的命令和程序(知道net time的重要了吧?)。當我們知道了遠程主機的當前時間,就可以利用此命令讓其在以後的某個時間(比如2分鍾後)執行某個程序和命令。用法:at time command \\computer。

表示在6點55分時,讓名稱為a-01的計算機開啟telnet服務(這里net start telnet即為開啟telnet服務的命令)。
七,ftp

大家對這個命令應該比較熟悉了吧?網路上開放的ftp的主機很多,其中很大一部分是匿名的,也就是說任何人都可以登陸上去。現在如果你掃到了一台開放ftp服務的主機(一般都是開了21埠的機器),如果你還不會使用ftp的命令怎麼辦?下面就給出基本的ftp命令使用方法。

首先在命令行鍵入ftp回車,出現ftp的提示符,這時候可以鍵入「help」來查看幫助(任何DOS命令都可以使用此方法查看其幫助)。

大家可能看到了,這么多命令該怎麼用?其實也用不到那麼多,掌握幾個基本的就夠了。

首先是登陸過程,這就要用到open了,直接在ftp的提示符下輸入「open 主機IP ftp埠」回車即可,一般埠默認都是21,可以不寫。接著就是輸入合法的用戶名和密碼進行登陸了,這里以匿名ftp為例介紹。

用戶名和密碼都是ftp,密碼是不顯示的。當提示**** logged in時,就說明登陸成功。這里因為是匿名登陸,所以用戶顯示為Anonymous。

接下來就要介紹具體命令的使用方法了。

dir 跟DOS命令一樣,用於查看伺服器的文件,直接敲上dir回車,就可以看到此ftp伺服器上的文件。

cd 進入某個文件夾

get 下載文件到本地機器。

put 上傳文件到遠程伺服器。這就要看遠程ftp伺服器是否給了你可寫的許可權了,如果可以,呵呵,該怎麼 利用就不多說了,大家就自由發揮去吧。

delete 刪除遠程ftp伺服器上的文件。這也必須保證你有可寫的許可權。

bye 退出當前連接。

quit 同上。

八,telnet

功能強大的遠程登陸命令,幾乎所有的入侵者都喜歡用它,屢試不爽。為什麼?它操作簡單,如同使用自己的機器一樣,只要你熟悉DOS命令,在成功以administrator身份連接了遠程機器後,就可以用它來干你想乾的一切了。下面介紹一下使用方法,首先鍵入telnet回車,再鍵入help查看其幫助信息。

然後在提示符下鍵入open IP回車,這時就出現了登陸窗口,讓你輸入合法的用戶名和密碼,這里輸入任何密碼都是不顯示的。

當輸入用戶名和密碼都正確後就成功建立了telnet連接,這時候你就在遠程主機上具有了和此用戶一樣的許可權,利用DOS命令就可以實現你想乾的事情了。這里我使用的超級管理員許可權登陸的。

到這里為止,網路DOS命令的介紹就告一段落了,這里介紹的目的只是給菜鳥網管一個印象,讓其知道熟悉和掌握網路DOS命令的重要性。其實和網路有關的DOS命令還遠不止這些,這里只是拋磚引玉,希望能對廣大菜鳥網管有所幫助。學好DOS對當好網管有很大的幫助,特別的熟練掌握了一些網路的DOS命令。

另外大家應該清楚,任何人要想進入系統,必須得有一個合法的用戶名和密碼(輸入法漏洞差不多絕跡了吧),哪怕你拿到帳戶的只有一個很小的許可權,你也可以利用它來達到最後的目的。所以堅決消滅空口令,給自己的帳戶加上一個強壯的密碼,是最好的防禦弱口令入侵的方法。

最後,由衷的說一句,培養良好的安全意識才是最重要的。

C. 文件上傳漏洞攻擊方法有什麼

文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是web安全中經常利用到的一種漏洞形式。這種類型的攻擊從大的類型上來說,是攻擊 數據與代碼分離原則 的一種攻擊。
一些web應用程序中允許上傳圖片,文本或者其他資源到指定的位置,文件上傳漏洞就是利用這些可以上傳的地方將惡意代碼植入到伺服器中,再通過url去訪問以執行代碼
造成文件上傳漏洞的原因是
對於上傳文件的後綴名(擴展名)沒有做較為嚴格的限制
對於上傳文件的MIMETYPE 沒有做檢查
許可權上沒有對於上傳的文件的文件許可權,(尤其是對於shebang類型的文件)
對於web server對於上傳文件或者指定目錄的行為沒有做限制
下面就閑話一些文件上傳漏洞的防禦方式和攻擊者的繞過方式
1.前端限制
function check(){
var filename=document.getElementById("file");
var str=filename.value.split(".");
var ext=str[str.length-1];
if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){
return true;
}else{
alert("這不是圖片!")
return false;
}
return false;
}
在表單中使用onsumbit=check()調用js函數來檢查上傳文件的擴展名。這種限制實際上沒有任何用處,任何攻擊者都可以輕而易舉的破解。只能用於對於用戶完全信任的情況下,很難稱之為一種安全措施只能稱之是一種防止用戶誤操作上傳的措施,
反制:
隨便的編輯一下頁面/用burpsuite/寫個小腳本就可以突破之,無須多言
2.檢查擴展名
顧名思義,就是在文件被上傳到服務端的時候,對於文件名的擴展名進行檢查,如果不合法,則拒絕這次上傳
在這里,還有一點是值得一提的,在檢查擴展名是否合法的時候,有兩種策略
黑名單策略,文件擴展名在黑名單中的為不合法,示例代碼
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){
echo "invalid file type";
return;
}
白名單策略,文件擴展名不在白名單中的均為不合法
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){
//save the file and do something next
} else {
echo "invalid file type";
return;
}
白名單策略是更加安全的,通過限制上傳類型為只有我們接受的類型,可以較好的保證安全,因為黑名單我們可以使用各種方法來進行注入和突破
反制
在一些 webserver 中,存在解析漏洞
1.老版本的IIS中的目錄解析漏洞,如果網站目錄中有一個 /.asp/目錄,那麼此目錄下面的一切內容都會被當作asp腳本來解析
2.老闆本的IIS中的分號漏洞:IIS在解析文件名的時候可能將分號後面的內容丟棄,那麼我們可以在上傳的時候給後面加入分號內容來避免黑名單過濾,如 a.asp;jpg
3.舊版Windows Server中存在空格和dot漏洞類似於 a.php. 和 a.php[空格] 這樣的文件名存儲後會被windows去掉點和空格,從而使得加上這兩個東西可以突破過濾,成功上傳,並且被當作php代碼來執行
4.nginx空位元組漏洞 xxx.jpg%00.php 這樣的文件名會被解析為php代碼運行
5.apache的解析漏洞,上傳如a.php.rar a.php.gif 類型的文件名,可以避免對於php文件的過濾機制,但是由於apache在解析文件名的時候是從右向左讀,如果遇到不能識別的擴展名則跳過,rar等擴展名是apache不能識別的,因此就會直接將類型識別為php,從而達到了注入php代碼的目的
3.檢查HTTP Header中的Content-Type
HTTP協議規定了上傳資源的時候在Header中加上一項文件的MIMETYPE,來識別文件類型,這個動作是由瀏覽器完成的,服務端可以檢查此類型不過這仍然是不安全的,因為HTTP header可以被發出者或者中間人任意的修改,不過加上一層防護也是可以有一定效果的
反制
使用各種各樣的工具(如burpsuite)強行篡改Header就可以,太容易將header中的
Content-Type: application/php
或者其他類型
改為
Content-Type: image/jpg
Content-Type: image/png
Content-Type: text/plain
等這些web程序允許的淚洗改附上常用的MIMETYPE表
text/plain(純文本)
text/html(HTML文檔)
text/javascript(js代碼)
application/xhtml+xml(XHTML文檔)
image/gif(GIF圖像)
image/jpeg(JPEG圖像)
image/png(PNG圖像)
video/mpeg(MPEG動畫)
application/octet-stream(二進制數據)
application/pdf(PDF文檔)
application/(編程語言) 該種語言的代碼
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML郵件的HTML形式和純文本形式,相同內容使用不同形式表示)
application/x-www-form-urlencoded(POST方法提交的表單)
multipart/form-data(POST提交時伴隨文件上傳的表單)
4.分析文件頭內容來檢查文件類型
與方法2不同,還有一種檢查類型的方式是使用對於文件內容的驗證機制,這種方法利用的是每一個特定類型的文件都會有不太一樣的開頭或者標志位。可以通過比如php的exif_imagetype()函數,一個通過這種方法來過濾的示例代碼如下:
if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {
echo "File is not an image";
return;
}
也可以自己編寫函數來進行識別,圖片文件通常有稱作幻數的頭位元組,我們來看一下幾種圖片文件的幻數:
(注意!下面是二進制而不是文本格式的數據)
JPG
FF D8 FF E0 00 10 4A 46 49 46
GIF
47 49 46 38 39 61
(相當於文本的GIF89a)
PNG
89 50 4E 47
通過檢查頭幾位位元組,可以分辨是否是圖片文件
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
反制
給上傳腳本加上相應的幻數頭位元組就可以,php引擎會將
(一般不限制圖片文件格式的時候使用GIF的頭比較方便,因為全都是文本可列印字元。)
GIF89a
do_something();
?>
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
格式
文件頭
TIFF (tif)
49492A00
Windows Bitmap (bmp)
424D
CAD (dwg)
41433130
Adobe Photoshop (psd)
38425053
Rich Text Format (rtf)
7B5C727466
MS Word/Excel (xls.or.doc)
D0CF11E0
MS Access (mdb)
5374616E64617264204A
ZIP Archive (zip),
504B0304
RAR Archive (rar),
7221
Wave (wav),
57415645
AVI (avi),
41564920
Real Media (rm),
2E524D46
MPEG (mpg),
000001BA
MPEG (mpg),
000001B3
Quicktime (mov),
6D6F6F76
Adobe Acrobat (pdf),
255044462D312E
Windows Media (asf),
3026B2758E66CF11
MIDI (mid),
4D546864
5.限制Web Server對於特定類型文件的行為
導致文件上傳漏洞的根本原因在於服務把用戶上傳的本應是數據的內容當作了代碼,一般來說,用戶上傳的內容都會被存儲到特定的一個文件夾下,比如我們很多人習慣於放在 ./upload/ 下面要防止數據被當作代碼執行,我們可以限制web server對於特定文件夾的行為。
大多數服務端軟體都可以支持用戶對於特定類型文件的行為的自定義,以Apache為例:
在默認情況下,對與 .php文件Apache會當作代碼來執行,對於 html,css,js文件,則會直接由HTTP Response交給客戶端程序對於一些資源文件,比如txt,doc,rar等等,則也會以文件下載的方式傳送的客戶端。我們希望用戶上傳的東西僅僅當作資源和數據而不能當作代碼
因此可以使用伺服器程序的介面來進行限制
以Apache為例,我們可以利用 .htaccess 文件機制來對web server行為進行限制
在這里插一句,如果不是專門的文件下載目錄,請務必關掉文件夾瀏覽的許可權,以防止嗅探和可能的越權,也是使用.htaccess文件,在其中加上一句
Options All -Indexes
即可。
禁止腳本執行有多種方式可以實現,而且分別有不同的效果,我們分別來看一下
1.指定特定擴展名的文件的處理方式,原理是指定Response的Content-Type可以加上如下幾行
AddType text/plain .pl .py .php
這種情況下,以上幾種腳本文件會被當作純文本來顯示出來,你也可以換成其他的Content-Type
2.如果要完全禁止特定擴展名的文件被訪問,用下面的幾行
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi識別
在這種情況下,以上幾種類型的文件被訪問的時候,會返回403 Forbidden的錯誤
3.也可以強制web伺服器對於特定文件類型的處理,與第一條不同的是, 下面的方法直接強行讓apache將文件識別為你指定的類型,而第一種是讓瀏覽器
ForceType text/plain
看代碼就可以很明白的知道,符合上面正則的全部被認為是純文本,也可以繼續往裡面加入其他類型。
4.只允許訪問特定類型的文件
order deny,allow
deny from all
在一個上傳圖片的文件夾下面,就可以加上這段代碼,使得該文件夾裡面只有圖片擴展名的文件才可以被訪問,其他類型都是拒絕訪問。
這又是一個白名單的處理方案
永遠記得,白名單是最有保障的安全措施

可以通過 move_uploaded_file 函數把自己寫的.htaccess 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。

D. 為什麼一個網站存在上傳漏洞,然後傳一個asp馬之後就可以得到webshell了

網站有漏洞,就是說網站程序安全出現了問題!網站有可能會被黑客入侵,建議找專業做網站安全的公司來給你解決,國內有名的安全公司也就綠盟和sinesafe!

建站一段時間後總能聽得到什麼什麼網站被掛馬,什麼網站被黑,被攻擊。好像入侵掛馬似乎是件很簡單的事情。其實,入侵不簡單,簡單的是你的網站的必要安全措施並未做好。
有條件建議找專業做網站安全的sine安全來做安全維護。

一:掛馬預防措施:

1、建議用戶通過ftp來上傳、維護網頁,盡量不安裝asp的上傳程序。

2、定期對網站進行安全的檢測,具體可以利用網上一些工具,如sinesafe網站掛馬檢測工具!

序,只要可以上傳文件的asp都要進行身份認證!

3、asp程序管理員的用戶名和密碼要有一定復雜性,不能過於簡單,還要注意定期更換。

4、到正規網站下載asp程序,下載後要對其資料庫名稱和存放路徑進行修改,資料庫文件名稱也要有一定復雜性。

5、要盡量保持程序是最新版本。

6、不要在網頁上加註後台管理程序登陸頁面的鏈接。

7、為防止程序有未知漏洞,可以在維護後刪除後台管理程序的登陸頁面,下次維護時再通過ftp上傳即可。

8、要時常備份資料庫等重要文件。

9、日常要多維護,並注意空間中是否有來歷不明的asp文件。記住:一分汗水,換一分安全!

10、一旦發現被入侵,除非自己能識別出所有木馬文件,否則要刪除所有文件。

11、對asp上傳程序的調用一定要進行身份認證,並只允許信任的人使用上傳程序。這其中包括各種新聞發布、商城及論壇程

二:掛馬恢復措施:

1.修改帳號密碼

不管是商業或不是,初始密碼多半都是admin。因此你接到網站程序第一件事情就是「修改帳號密碼」。帳號

密碼就不要在使用以前你習慣的,換點特別的。盡量將字母數字及符號一起。此外密碼最好超過15位。尚若你使用

SQL的話應該使用特別點的帳號密碼,不要在使用什麼什麼admin之類,否則很容易被入侵。

2.創建一個robots.txt

Robots能夠有效的防範利用搜索引擎竊取信息的駭客。

3.修改後台文件

第一步:修改後台里的驗證文件的名稱。

第二步:修改conn.asp,防止非法下載,也可對資料庫加密後在修改conn.asp。

第三步:修改ACESS資料庫名稱,越復雜越好,可以的話將數據所在目錄的換一下。

4.限制登陸後台IP

此方法是最有效的,每位虛擬主機用戶應該都有個功能。你的IP不固定的話就麻煩點每次改一下咯,安全第一嘛。

5.自定義404頁面及自定義傳送ASP錯誤信息

404能夠讓駭客批量查找你的後台一些重要文件及檢查網頁是否存在注入漏洞。

ASP錯誤嘛,可能會向不明來意者傳送對方想要的信息。

6.慎重選擇網站程序

注意一下網站程序是否本身存在漏洞,好壞你我心裡該有把秤。

7.謹慎上傳漏洞

據悉,上傳漏洞往往是最簡單也是最嚴重的,能夠讓黑客或駭客們輕松控制你的網站。

可以禁止上傳或著限制上傳的文件類型。不懂的話可以找專業做網站安全的sinesafe公司。

8. cookie 保護

登陸時盡量不要去訪問其他站點,以防止 cookie 泄密。切記退出時要點退出在關閉所有瀏覽器。

9.目錄許可權

請管理員設置好一些重要的目錄許可權,防止非正常的訪問。如不要給上傳目錄執行腳本許可權及不要給非上傳目錄給於寫入權。

10.自我測試

如今在網上黑客工具一籮筐,不防找一些來測試下你的網站是否OK。

11.例行維護

a.定期備份數據。最好每日備份一次,下載了備份文件後應該及時刪除主機上的備份文件。

b.定期更改資料庫的名字及管理員帳密。

c.借WEB或FTP管理,查看所有目錄體積,最後修改時間以及文件數,檢查是文件是否有異常,以及查看是否有異常的賬號。

網站被掛馬一般都是網站程序存在漏洞或者伺服器安全性能不達標被不法黑客入侵攻擊而掛馬的。

網站被掛馬是普遍存在現象然而也是每一個網站運營者的心腹之患。

您是否因為網站和伺服器天天被入侵掛馬等問題也曾有過想放棄的想法呢,您否也因為不太了解網站技術的問題而耽誤了網站的運營,您是否也因為精心運營的網站反反復復被一些無聊的黑客入侵掛馬感到徬彷且很無耐。有條件建議找專業做網站安全的sine安全來做安全維護。

E. 文件上傳漏洞成因是什麼

原因是:
在 WEB 中進行文件上傳的原理是通過將表單設為 multipart/form-data,同時加入文件域,而後通過 HTTP 協議將文件內容發送到伺服器,伺服器端讀取這個分段 (multipart) 的數據信息,並將其中的文件內容提取出來並保存的。通常,在進行文件保存的時候,伺服器端會讀取文件的原始文件名,並從這個原始文件名中得出文件的擴展名,而後隨機為文件起一個文件名 ( 為了防止重復 ),並且加上原始文件的擴展名來保存到伺服器上。
文件解析漏洞,是指中間件(Apache、nginx、iis等)在解析文件時出現了漏洞,從而,黑客可以利用該漏洞實現非法文件的解析。

需要注意的是解析漏洞與上傳漏洞是兩碼事,文件解析漏洞是基於文件上傳之後而言的。
比如,Apache中間件,是c、c++混合寫成的,當Apache中間件出現了解析漏洞,即:c、c++編程出現了漏洞,無論我們php代碼層面如何的安全,都沒辦法抵擋黑客的攻擊,因為現在的漏洞已經與php代碼層無關了,已經是底層的安全問題了,文件解析漏洞就是因為Apache中間件c、c++編程出現了漏洞,導致黑客可以利用該漏洞解析非法文件。
所以,底層安全比任何安全都要重要,至少我們從現在起,要開始重視底層安全了。

F. 什麼是文件上傳漏洞

文件上傳漏洞是指:由於程序員未對上傳的文件進行嚴格的驗證和過濾,而導致的用戶可以越過其本身許可權向伺服器上傳可執行的動態腳本文件。如常見的頭像上傳,圖片上傳,oa辦公文件上傳,媒體上傳,允許用戶上傳文件的地方如果過濾不嚴格,惡意用戶利用文件上傳漏洞,上傳有害的可以執行腳本文件到伺服器中,可以獲取伺服器的許可權,或進一步危害伺服器。

非法用戶可以上傳的惡意文件控制整個網站,甚至是控制伺服器,這個惡意腳本文件,又被稱為webshell,上傳webshell後門之後可查看伺服器信息、目錄、執行系統命令等。

文件上傳的類型:

1、前端js繞過

在文件上傳時,用戶選擇文件時,或者提交時,有些網站會對前端文件名進行驗證,一般檢測後綴名,是否為上傳的格式。如果上傳的格式不對,則彈出提示文字。此時數據包並沒有提交到伺服器,只是在客戶端通過js文件進行校驗,驗證不通過則不會提交到伺服器進行處理。

2、修改content-type繞過

有些上傳模塊,會對http類型頭進行檢測,如果是圖片類型,允許上傳文件到伺服器,否則返回上傳失敗,因為服務端是通過content-type判斷類型,content-type在客戶端可被修改。

3、繞黑名單

上傳模塊,有時候會寫成黑名單限制,在上傳文件的時獲取後綴名,再把後綴名與程序中黑名單進行檢測,如果後綴名在黑名單的列表內,文件將禁止文件上傳。

4、htaccess重寫解析繞過

上傳模塊,黑名單過濾了所有的能執行的後綴名,如果允許上傳.htaccess。htaccess文件的作用是:可以幫我們實現包括:文件夾密碼保護、用戶自動重定向、自定義錯誤頁面、改變你的文件擴展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件等一些功能。

在htaccess里寫入SetHandlerapplication/x-httpd-php則可以文件重寫成php文件。要htaccess的規則生效,則需要在apache開啟rewrite重寫模塊,因為apache是多數都開啟這個模塊,所以規則一般都生效。

5、大小寫繞過

有的上傳模塊 後綴名採用黑名單判斷,但是沒有對後綴名的大小寫進行嚴格判斷,導致可以更改後綴大小寫可以被繞過,如PHP、Php、phP、pHp。

G. 為什麼一個網站存在上傳漏洞,然後傳一個asp馬之後就可以得到webshell了

現在很多的腳本程序上傳模塊不是只允許上傳合法文件類型,而大多數的系統是允許添加上傳類型,bbsxp後台可以添加asa|asP類型,ewebeditor的後台也可添加asa類型,通過修改後我們可以直接上傳asa後綴的webshell了,還有一種情況是過濾了.asp,可以添加.aspasp的文件類型來上傳獲得webshell。php系統的後台,我們可以添加.php.g1f的上傳類型,這是php的一個特性,最後的哪個只要不是已知的文件類型即可,php會將php.g1f作為.php來正常運行,從而也可成功拿到shell。LeadBbs3.14後台獲得webshell方法是:在上傳類型中增加asp ,注意,asp後面是有個空格的,然後在前台上傳ASP馬,當然也要在後面加個空格! 1、webshell是什麼?

顧名思義,"web" - 顯然需要伺服器開放web服務,"shell" - 取得對伺服器某種程度上操作許可權。

webshell常常被稱為匿名用戶(入侵者)通過WEB服務埠對WEB伺服器有某種程度上操作的許可權,由於其大多是以網頁腳本的形式出現,也有人稱之為網站後門工具。

2、webshell有什麼作用?

一方面,webshell被站長常常用於網站管理、伺服器管理等等,根據FSO許可權的不同,作用有在線編輯網頁腳本、上傳下載文件、查看資料庫、執行任意程序命令等。

另一方面,被入侵者利用,從而達到控制網站伺服器的目的。這些網頁腳本常稱為WEB

腳本木馬,目前比較流行的asp或php木馬,也有基於.NET的腳本木馬。

對於後者我本人是反對的,畢竟人要厚道。

熱點內容
linuxipmac 發布:2025-07-30 13:18:48 瀏覽:317
微信小程序開發源碼 發布:2025-07-30 13:08:39 瀏覽:63
求累加和c語言 發布:2025-07-30 12:56:03 瀏覽:49
asp在線加密 發布:2025-07-30 12:51:06 瀏覽:937
java完全手冊 發布:2025-07-30 12:22:05 瀏覽:613
支付寶介面java 發布:2025-07-30 12:21:58 瀏覽:76
做腳本需要把主機零件拆了嗎 發布:2025-07-30 12:02:55 瀏覽:493
郵政解壓視頻完整版 發布:2025-07-30 12:00:54 瀏覽:491
301重定向php 發布:2025-07-30 11:52:34 瀏覽:22
如何給樂視配置遙控器 發布:2025-07-30 11:42:10 瀏覽:509