您現(xiàn)在的位置:首頁 >關(guān)于我們 >行業(yè)新聞 >對(duì)于ftp服務(wù)程序一些不安全因素的研究

對(duì)于ftp服務(wù)程序一些不安全因素的研究

時(shí)間:2007年5月2日

FTP(File Tranfer Protocol)是一種很古老的協(xié)議來的了,自u(píng)nix始就一直有使用的了,FTP因?yàn)楸旧聿坏梢蕴峁┒嘤脩敉瑫r(shí)下載的功能外,還可以讓用戶上載文件,在不斷的發(fā)展中,還可以使用ftp遠(yuǎn)程執(zhí)行命令,由于FTP一般需要帳戶和密碼的,而且對(duì)于不同的帳戶可提供不同的權(quán)限,由于這么多的功能,所以一直至今還是相當(dāng)流行的。不過,以下我會(huì)說說FTP服務(wù)程序很可能出現(xiàn)的安全方面的問題。

FTP的連接一般是有兩個(gè)連接的,一個(gè)是客戶程和服務(wù)器傳輸命令的,另一個(gè)是數(shù)據(jù)傳送的連接。FTP服務(wù)程序一般會(huì)支持兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連接方式的分別。
先假設(shè)客戶端為C,服務(wù)端為S.
Port模式:
當(dāng)客戶端C向服務(wù)端S連接后,使用的是Port模式,那么客戶端C會(huì)發(fā)送一條命令告訴服務(wù)端S(客戶端C在本地打開了一個(gè)端口N在等著你進(jìn)去數(shù)據(jù)連接),當(dāng)服務(wù)端S收到這個(gè)Port命令后
,就會(huì)向客戶端打開的那個(gè)端口N進(jìn)行連接,這種數(shù)據(jù)連接就生成了。

Pasv模式:
當(dāng)客戶端C向服務(wù)端S連接后,服務(wù)端S會(huì)發(fā)信息給客戶端C,這個(gè)信息是(服務(wù)端S在本地打開了一個(gè)端口M,你現(xiàn)在去連接我吧),當(dāng)客戶端C收到這個(gè)信息后,就可以向服務(wù)端S的M端口進(jìn)行連接,連接成功后,數(shù)據(jù)連接也建立了。

從上面的解釋中,大家應(yīng)該可以看到兩種模式主要的不同是數(shù)據(jù)連接建立的不同,對(duì)于Port模式,是客戶端C在本地打開一個(gè)端口等服務(wù)端S去連接建立數(shù)據(jù)連接;而Pasv模式就是
服務(wù)端S打開一個(gè)端口等待客戶端C去建立一個(gè)數(shù)據(jù)連接。

兩種模式看起來其實(shí)都是沒什么問題,但其實(shí)都是隱藏著安全方面的問題的。
對(duì)于Port模式,這種模式多是用于因?yàn)榉⻊?wù)端有防火墻,無法使用Pasv在服務(wù)端打開端口讓客戶端去連接而被逼使用的,但由于連接本身是由服務(wù)端本身向外連接的,這本身就存在了一個(gè)安全的問題了,因?yàn)槿绻@個(gè)連接一旦被hijack,由于連接是由服務(wù)器本身向外連的,防火墻將不會(huì)有任何動(dòng)作去處理這個(gè)連接。
對(duì)于Pasv模式,看起來是比Port模式安全很多不過認(rèn)真想一想的話,還是會(huì)發(fā)現(xiàn)它本身的問題的。由于服務(wù)端會(huì)打開一個(gè)端口等客戶端去連接,但如果這個(gè)打開的端口并沒有檢測(cè)連接的IP是否那個(gè)是那個(gè)客戶端的IP,那么安全問題的出現(xiàn)了。因?yàn)橛泻芏郌TP服務(wù)器打開的數(shù)據(jù)端口等客戶端連接是隨機(jī)的,但都會(huì)在一定范圍內(nèi)的,例如是20000-21000這些端口間。如果FTP服務(wù)器并沒有在接收數(shù)據(jù)端口的連接時(shí)檢測(cè)連接過來的IP是不是已經(jīng)是合法登陸的用戶的話,那么其他并沒有登陸的用戶就很有機(jī)會(huì)寫程序hijack這個(gè)連接了。以下給一個(gè)例子說明一下:
服務(wù)端S接收到客戶端C(IP=12.12.12.12)的命令連接使用的是Pasv模式,服務(wù)端S打開了端口20000等待數(shù)據(jù)連接,在這時(shí),一位黑客(IP=11.11.11.11)掃描了服務(wù)端S的20000到20100的端口,發(fā)現(xiàn)了20000端口打開了,馬上就連接上去服務(wù)端S的20000這個(gè)端口了。在這情況中,如果服務(wù)端S并沒有檢測(cè)11.11.11.11這個(gè)IP是不是合法登陸的用戶的IP的話,那么真正的客戶端C的數(shù)據(jù)連接就被人hijack了,如果客戶端C發(fā)送給服務(wù)端S的命令是下載某個(gè)文件的話,那么那個(gè)文件只會(huì)發(fā)送到那個(gè)黑客中去了。這種情況下,黑客可以是隨機(jī)掃描并hijack到不同的連接,或者可以同時(shí)對(duì)那些端口不停的連接,那么合法用戶的連接就會(huì)很多被hijack了,hijack后黑客會(huì)做什么,那就視乎那位黑客的能力和想做什么了。

解決:
對(duì)于Port模式,由于那是FTP本身的問題,所以沒有什么解決的好方法;蛘呖梢缘脑,只是允許Pasv模式而不允許Port模式。
對(duì)于Pasv模式,只要在接收到數(shù)據(jù)連接時(shí)檢測(cè)IP是不是合法用戶的請(qǐng)求,就可以避免連接被hijack的問題。

以上hijack連接的都屬于比較高級(jí)的'黑客'才有機(jī)會(huì)實(shí)現(xiàn)的,因?yàn)閷?duì)于不同的FTP服務(wù)程序是有所不同的,而且一般是需要自己先研究過那個(gè)FTP服務(wù)程序然后再寫程序才有可能實(shí)現(xiàn)的。以下說說一般用戶都可以因?yàn)閷慒TP服務(wù)程序?qū)τ诎踩牟蛔⒅囟M(jìn)行通過FTP而入侵到系統(tǒng)的問題。

這個(gè)問題其實(shí)平時(shí)都是很常見的了,一般都是對(duì)于用戶登入FTP后可以跳轉(zhuǎn)到的目錄的權(quán)限限制問題。
很多用過的FTP程序(最基本的FTP服務(wù),只提供上傳,下載,連用戶名和密碼都不需要那種),如anonymouse ftp(aftp)那類,根本不會(huì)限制登陸用戶可以跳轉(zhuǎn)到的目錄,就是說登入的用戶可以隨意查看系統(tǒng)不同目錄的文件,下載不同目錄的文件或者上傳文件到任何目錄中去的,可以下載任何文件或上傳任何文件到任何目錄,這問題有多嚴(yán)重,我也不需要說了吧。
有的FTP程序,雖然提供了用戶名和密碼,但一樣沒有對(duì)于用戶可訪問目錄進(jìn)行任何限制,xfocus的出品,xftpd就是一個(gè)很好的例子,用戶登入后,一樣是可以上面所說的,用戶可
以下載系統(tǒng)任何文件或上傳任何文件到任何目錄中去的。
有的FTP,就是對(duì)于要限制可訪問的目錄的檢測(cè)不夠全面,導(dǎo)致登入用戶可以使用一些特殊的字符而可以訪問到限制訪問的目錄中去。好的一個(gè)例子就是舊版的slimftpd了。這種情況一般稱為'Directory Traveling Vulnerability',很多舊版的共享的FTP服務(wù)程序都曾存在過這些問題的。

如果你要建立一個(gè)FTP服務(wù)器,我可以給的建議就是選擇一個(gè)比較穩(wěn)定和安全的FTP程序(當(dāng)然可以考慮自己寫的),然后在真正投入使用前對(duì)于上面所提及到的安全問題都自己檢測(cè)一
下,如果是自己寫的話可以發(fā)布些免費(fèi)版本(不是全功能的)給用戶去測(cè)試一下,測(cè)試沒問題后再投入正式使用。

上面所寫都是在和朋友開發(fā)FTP服務(wù)程序時(shí)研究FTP協(xié)議時(shí)看到或在測(cè)試時(shí)的一些小心得,錯(cuò)漏的地方也是難免的,如果看到有什么錯(cuò)誤的地方可以跟貼指出。

世紀(jì)創(chuàng)聯(lián)

Copyright© 2004-2020 河南海騰電子技術(shù)有限公司 版權(quán)所有   經(jīng)營性ICP/ISP證 備案號(hào):B1-20180452   豫公網(wǎng)安備 41019702002018號(hào)    電子營業(yè)執(zhí)照