CGI執行批處理文件的漏洞:
文件test.bat的內容如下:
@echo off
echo Content-type: text/plain
echo
echo Hello World!
如果客戶瀏覽器的URL為:/cgi-bin/test.bat?&dir,則執行調用命令解釋器完成DIR列表。這就讓訪問者有執行其他命令可能性。
(2)O′Reilly WebSite server for Windows NT/95
在WebSite1.1B以前的版本中使用批處理文件存在著與Netscape同樣的漏洞,但是,新版關閉了.bat在CGI中的作用。支持PERL,新版將VB和C作為CGI開發工具。
(3)Microsoft′s IIS Web Server
1996年3月5日前的IIS在NT下的BUG嚴重,可以任意使用command命令。但之后已修補了該漏洞,你可檢查你的可執行文件的建立日期。IIS3.0還存在一些安全BUG,主要是CGI-BIN下的覆給權利。另外,許多Web服務器本身都存在一些安全上的漏洞,都是在版本升級過程中被不斷更新了,在此就不一一列舉了。
三. 從CGI編程角度考慮安全
1.采用編譯語言比解釋語言會更安全些,并且CGI程序應放在獨立于HTML存放目錄之外的CGI-BIN下,這是為了防止一些非法訪問者從瀏覽器端取得解釋性語言的原代碼后從中尋找漏洞。
2.在用C來編寫CGI程序時應盡量少用popen()、system()、所有涉及/bin/sh的SHELL命令以及在PERL中的system()、exec()、open()、eval()等exec或eval之類命令。
在由用戶填寫的form還回CGI時,不要直接調用system()之類函數。
另外,對于數據的加密與傳輸,目前有SSL、SHTTP、SHEN等協議供大家研究。
四. 防火墻(Firewall)
1.防火墻的概念
防火墻(Firewall)是指一個由軟件或由軟件和硬件設備組合而成,處于企業或網絡群體計算機與外界通道(Internet)之間,限制外界用戶對內部網絡的訪問及管理內部用戶訪問外界網絡的權限。
2.防火墻的措施
(1)代理(Proxy)主機"內部網絡--代理網關(Proxy Gateway)--Internet"
這種方式是內部網絡與Internet不直接通訊。就是內部網絡計算機用戶與代理網關采用一種通訊方式,即提供內部網絡協議(Netbios、TCP/IP等),而網關與Internet之間采取的是標準TCP/IP網絡通訊協議。這樣使得網絡數據包不能直接在內外網絡之間進行。內部計算機必須通過代理網關訪問Internet,這樣容易在代理服務器上對內部網絡計算機訪問外界計算機進行限制。另外,由于代理服務器兩端采用不同協議標準也可以直接阻止外界非法入侵。還有,代理服務器的網關可對數據封包進行驗證和對密碼進行確認等安全管制。這樣,能較好地控制管理兩端的用戶,起到防火墻作用。
因為這種防火墻措施是采用透過代理服務器進行,在聯機用戶多時,效率必然受到影響,代理服務器負擔很重,所以許多訪問Internet的客戶軟件在內部網絡計算機中可能無法正常訪問Internet。
(2)路由器加過濾器完成
"內部網絡--過濾器(Filter)--路由器(Router)--Internet"
這種結構由路由器和過濾器共同完成從IP地址或域名上對外界計算機訪問內部網絡的限制,也可以指定或限制內部網絡訪問Internet。路由器僅對主機上特定的PORT上的數據通訊加以路由,而過濾器則執行篩選、過濾、驗證及其安全監控,這樣可以很大程度上隔斷內外網絡間的不正常的訪問登錄。