❶ 文件上傳漏洞有哪些挖掘思路
文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳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。
❷ JSP網站中的文件上傳功能,需要注意什麼安全性問題
不怕的,除去考慮本身虛擬機的漏洞,就是程序的漏洞
如果不上傳Jsp之類的虛擬機執行文件,只是上傳病毒,對你網站本身的腔蘆喊安全沒有影響,但是嘩和也不太好,伍野不能保證 多個漏洞聯合來使用
❸ jspwiki Edit.jsp路徑遍歷 安全漏洞如何修復
首先你可以確定一下是否真的存在遍歷漏洞就是雖然返回值是200 有沒有確實內的把更深層的目錄內容容顯示在網頁上,如果都是空的話那是沒有問題的,如果確實把深層目錄內容顯示出來了那麼有幾個方案 第一更新版本,一般來說這種能檢測出來的漏洞都會有相應的補丁和新版本更新,第二就是自己手動更改源碼這個一般是過濾不嚴或者代碼不嚴謹導致的價格過濾或者輸入檢測把..或者/過濾掉,對用戶傳過來的文件名參數進行硬編碼或統一編碼,對文件類型進行白名單控制,對包含惡意字元或者空字元的參數進行拒絕
第三自己設置讀寫許可權web應用程序可以使用chrooted環境包含被訪問的web目錄,或者使用絕對路徑+參數來訪問文件目錄,時使其即使越權也在訪問目錄之內。www目錄就是一個chroot應用。
chroot
chroot是在unix系統的一個操作,針對正在運作的軟體進程和它的子進程,改變它外顯的根目錄。一個運行在這個環境下,經由chroot設置根目錄的程序,它不能夠對這個指定根目錄之外的文件進行訪問動作,不能讀取,也不能更改它的內容。chroot這一特殊表達可能指chroot(2)系統調用或chroot(8)前端程序。
❹ 如何修復xheditor,jsp;jpg文件上傳成功漏洞
1.必須看目標站是用什麼語言編寫的,asp,asp.net,php,jsp,cgi等等
2.如果目標是asp,你直接傳【假如可以內直接傳】也沒容用的,伺服器不支持是沒辦法的
3.伺服器必須安裝了java,支持jsp才可以的
❺ 文件上傳漏洞攻擊方法有什麼
文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是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 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。
❻ Jsp實現上傳功能時出錯
我遇到過同樣的問題,我的解決辦法是後台不通過action實現上傳,用servlet。
❼ jsp有哪些漏洞
JSP漏洞大觀
Apache泄露重寫的任意文件漏洞是怎麼回事?
在Apache1.2以及以後的版本中存在一個mod_rewrite模塊,它用來指定特殊URLS在網路伺服器文件系統上所映射的絕對路徑。如果傳送一個包含正確表達參數的重寫規則,攻擊者就可以查看目標主機上的任意文件。
下面舉例說明重寫規則指令(其中第一行只有是包含漏洞的):
RewriteRule /test/(.*) /usr/local/data/test-stuff/$1
RewriteRule /more-icons/(.*) /icons/$1
RewriteRule /go/(.*) http://www.apacheweek.com/$1
受影響的系統:
1)Apache 1.3.12
2)Apache 1.3.11win32
3)Apache 1.2.x
不受影響系統:Apache 1.3.13
怎樣解決在HTTP請求中添加特殊字元導致暴露JSP源代碼文件?
Unify eWave ServletExec 是一個 Java/Java Servlet 引擎插件,主要用於 WEB 伺服器,例如:Microsoft IIS, Apache, Netscape Enterprise 伺服器等等。
當一個 HTTP 請求中添加下列字元之一,ServletExec 將返回 JSP 源代碼文件。
.
%2E
+
%2B
\
%5C
%20
%00
成功的利用該漏洞將導致泄露指定的JSP文件的源代碼,例如:使用下面的任意一個URL請求將輸出指定的JSP文件的源代碼:
1)http://target/directory/jsp/file.jsp.
2)http://target/directory/jsp/file.jsp%2E
3)http://target/directory/jsp/file.jsp+
4)http://target/directory/jsp/file.jsp%2B
5)http://target/directory/jsp/file.jsp\
6)http://target/directory/jsp/file.jsp%5C
7)http://target/directory/jsp/file.jsp%20
8)http://target/directory/jsp/file.jsp%00
受影響的系統:
1)Unify eWave ServletExec 3.0c
2)Sun Solaris 8.0
3)Microsoft Windows 98
4)Microsoft Windows NT 4.0
5)Microsoft Windows NT 2000
6)Linux kernel 2.3.x
7)IBM AIX 4.3.2
8)HP HP-UX 11.4
解決方案:
如果沒有使用任何靜態頁面或圖像,可以配置一個默認的 servlet,並將"/"映射到這個默認的 servlet。這樣當收到一個未映射到某個 servlet 的 URL 時,這個默認的servlet 就會被調用。在這種情況下,默認的 servlet 可以僅僅返回"未找到文件"。如果使用了靜態的頁面或圖像,仍然可以作這樣的配置,但是需要讓這個默認的servlet 處理對合法的靜態頁面和圖像的請求。
另一種可能就是將*.jsp+、*.jsp.和*.jsp\等映射到一個 servlet,而該servlet只是返回"未找到文件"。對於*.jsp%00和*.jsp%20這樣的情況,映射應以未經編碼的形式輸入。例如,對於*.jsp%20的映射應輸入"*.jsp "。注意%20被轉換成一個空格字元。
Tomcat有哪些漏洞?
Tomcat 3.1 存在暴露網站路徑問題
Tomcat 3.1 是在 Apache 軟體環境下開發的一個支持 JSP 1.1 和 Servlets 2.2 的軟體。它存在一個安全問題當發送一個不存在的 jsp 請求時會暴露網站上網頁的全路徑。
舉例:
http://narco.guerrilla.sucks.co:8080/anything.jsp
結果顯示:
Error: 404
Location: /anything.jsp
JSP file "/appsrv2/jakarta-tomcat/webapps/ROOT/anything.jsp" not found
解決方案:升級到新版本
Tomcat 暴露JSP文件內容
Java Server Pages (JSP)類型的文件是以'.jsp'擴展名在Tomcat 上注冊,Tomcat 是文件名大小寫敏感的,'.jsp'和'.JSP'是不同類型的文件擴展名。如果提交有'.JSP'的鏈接給Tomcat,而Tomcat找不到'.JSP'就會以默認的'.text'文件類型來響應請求。因為在NT系統中大小寫文件名是非敏感的,所以被請求的文件會以文本的形式送出。
如果在UNIX伺服器上會出現"file not found"的錯誤信息。
如何在windows下對Tomcat實施代碼保護
Tomcat的一些版本有泄露源代碼的漏洞,如果在瀏覽器中調用JSP頁面時將該文件的後綴改成大寫,這個JSP文件的源代碼將完全輸出到瀏覽器中(也許瀏覽器窗口中什麼都沒有,這時你只需查看HTML源文件就可以發現)。如此一來,網站的源代碼是不是都會暴露在互聯網上那?
不用擔心,解決方法很簡單,把各種後綴的組合全部寫到Tomcat_Home\conf \web.xml里就可以了,這樣Tomcat會將不同後綴名的JSP分開對待,就不會泄露代碼了。
jsp
*.jsp
jsP
*.jsP
?lt;servlet-name> jSp
*.jSp
jSP
*.jSP
Jsp
*.Jsp
JsP
*.JsP
JSp
*.JSp
JSP
*.JSP
Allair Jrun漏洞有哪些漏洞?
Allair JRUN 非法讀取 WEB-INF 漏洞
在Allaire 的 JRUN 伺服器 2.3版本中存在一個嚴重的安全漏洞。它允許一個攻擊者在 JRun 3.0 伺服器中查看 WEB-INF 目錄。
如果用戶在提交 URL 請求時在,通過附加一個"/"使該 URL 成為畸形的 URL,這時 WEB-INF 下的所有子目錄將會暴露出來。攻擊者巧妙的利用該漏洞將能夠遠程獲得目標主機系統中 WEB-INF 目錄下的所有文件的讀取許可權。
例如使用下面這個 URL 將會暴露 WEB-INF 下的所有文件:
http://site.running.jrun:8100//WEB-INF/
受影響的系統:Allaire JRun 3.0
解決方案:下載並安裝補丁:
Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar
Allaire JRUN 2.3 查看任意文件漏洞
Allaire 的 JRUN 伺服器 2.3上存在多重顯示代碼漏洞。該漏洞允許攻擊者在 WEB 伺服器上查看根目錄下的任意文件的源代碼。
JRun 2.3 使用 Java Servlets 解析各種各樣類型的頁面(例如:HTML, JSP等等)。基於rules.properties 和 servlets.properties 的文件設置,可能利用URL前綴"/servlet/"調用任何servlet。
它可能使用 Jrun 的 SSIFilter servlet 在目標系統上檢索任意的文件。下列 2 個例子顯示出能被用來檢索任意的文件的 URLs :
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../t est.jsp
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../../../../../../boot.ini
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../. ./../../../../winnt/repair/sam
http://jrun:8000/servlet/ssifilter/../../test.jsp
http://jrun:8000/servlet/ssifilter/../../../../../../../boot.ini
http://jrun:8000/servlet/ssifilter/../../../../../../../winnt/repair/sam._
注意:假設JRun在主機" jrun "上運行,埠8000。
受影響的系統:Allaire JRun 2.3.x
解決方案:下載並安裝補丁:
Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar Allaire JRUN 2.3遠程執行任意命令漏洞
Allaire 的 JRUN 伺服器 2.3上存在一個安全漏洞,允許遠程用戶把在 WEB 伺服器上的任意文件作為JSP代碼編譯/執行。 如果URL請求的目標文件使用了前綴"/servlet/",則JSP解釋執行功能被激活。這時在用戶請求的目標文件路徑中使用"../",就有可能訪問到 WEB 伺服器上根目錄以外的文件。在目標主機上利用該漏洞請求用戶輸入產生的一個文件,將嚴重威脅到目標主機系統的安全。
例如:
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.jsp.JSP/../../path/to /temp.txt
http://jrun:8000/servlet/jsp/../../path/to/temp.txt
受影響的系統:Allaire JRun 2.3.x
解決方案:下載並安裝補丁:
Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar
JRun 2.3.x 範例文件暴露站點安全信息
JRun 2.3.x 在 JRUN_HOME/servlets 目錄下有一些 servlet 範例文件,這個目錄是 JRun 2.3.x 用於載入和執行 servlets 文件。所有擴展名為 ".Java" 或 "class" 的文件必須被刪除,這是因為這些文件會暴露站點的安全信息。例如:
http://www.xxx.xxx/servlet/SessionServlet 會暴露當前伺服器保持的HTTP連接信息。JRUN_HOME/jsm-default/services/jws/htdocs 目錄下的內容也應被刪除掉。這個目錄保存有演示伺服器功能的 '.jsp' 文件,其中一些文件牽涉到訪問伺服器文件系統和暴露伺服器設置的問題。例如對文件 "viewsource.jsp" 的路徑檢查是默認關閉的,它可被用於訪問伺服器文件系統。
解決方案:
1)安裝 2.3.3 service pack
2)從伺服器上刪除所有的說明文檔、演示編碼、範例和教材,包括安裝 JRun 2.3.x 時存放於 JRUN_HOME/servlets 目錄和JRUN_HOME/jsm-default/services/jws/htdocs 目錄里的文檔。
相關站點:http://www.allaire.com/
IBM WebSphere Application Server有哪些漏洞?
1、IBM WebSphere Application Server 3.0.2 存在暴露源代碼漏洞
IBM WebSphere Application Server 允許攻擊者查看 Web server 根目錄以上的所有文件。IBM WebSphere 使用 Java Servlets 處理多種頁面類型的分析(如 HTML, JSP, JHTML, 等等)。In addition 不同的 servlets 對不同的頁面進行處理,如果一個請求的文件是未進行注冊管理的,WebSphere 會使用一個默認的 servlet 作調用。如果文件路徑以"/servlet/file/"作開頭這個默認的 servlet 會被調用這個請求的文件會未被分析或編譯就顯示出來。
受影響系統:IBM WebSphere 3.0.2 的所有版本
舉例:
如果一個請求文件的 URL 為 "login.jsp":: http://site.running.websphere/login.jsp那麼訪問 http://site.running.websphere/servlet/file/login.jsp將看到這個文件的源代碼。
解決方案:下載並安裝補丁
http://www-4.ibm.com/software/webservers/appserv/efix.html
相關站點:http://www-4.ibm.com/software/webservers/appserv/
IBM WebSphere Application Server 暴露JSP文件內容
Java Server Pages (JSP)類型的文件是以'.jsp'擴展名在WebSphere Application Serve 上注冊,WebSphere 是文件名大小寫敏感的,'.jsp'和'.JSP'是不同類型的文件擴展名。如果提交有'.JSP'的鏈接給WebSphere,而WebSphere找不到'.JSP'就會以默認的'.text'文件類型來響應請求。因為在NT系統中大小寫文件名是非敏感的,所以被請求的文件會以文本的形式送出。
如果在UNIX伺服器上會出現"file not found"的錯誤信息。
解決方案:點擊此處下載補丁
相關站點:http://www-4.ibm.com/software/webservers/appserv/efix.html
BEA WebLogic有哪些暴露源代碼漏洞?
受影響版本:
所有系統上的
BEA WebLogic Enterprise 5.1.x
BEA WebLogic Server and Express 5.1.x
BEA WebLogic Server and Express 4.5.x
BEA WebLogic Server and Express 4.0.x
BEA WebLogic Server and Express 3.1.8
這個漏洞使攻擊者能讀取 Web 目錄下所有文件的源代碼。
WebLogic 依賴四個主要 Java Servlets to 服務不同類型的文件。這些 servlets 是:
1)FileServlet - for 簡單 HTML 頁面
2)SSIServlet - for Server Side Includes 頁面
3)PageCompileServlet - for JHTML 頁面
4)JSPServlet - for Java Server 頁面
看著weblogic.properties 文件, 這兒是各個 servlets 的注冊值:
1)weblogic.httpd.register.file=weblogic.servlet.FileServlet
2)weblogic.httpd.register.*.shtml=weblogic.servlet.ServerSideIncludeServlet
3)weblogic.httpd.register.*.jhtml=weblogic.servlet.jhtmlc.PageCompileServlet
4)weblogic.httpd.register.*.jsp=weblogic.servlet.JSPServlet
更多的 weblogic.properties 文件, 如果一個請求文件是沒有注冊管理的,那麼就會調用一個默認的 servlet 。以下是展示默認的 servlet 是如何注冊的。
# Default servlet registration
# ------------------------------------------------
# Virtual name of the default servlet if no matching servlet
# is found weblogic.httpd.defaultServlet=file
因此如果 URL 中的文件路徑開頭為 "/file/" , 將會引致 WebLogic 調用默認的 servlet, 那將會使網頁未加分析和編譯而直接顯示。
論證:
只要在想看的文件原來的 URL 路徑之前加入 "/file/" 就會讓文件未經分析和編譯,直接暴露源代碼。如:http://site.running.weblogic/login.jsp ,那麼只要訪問 http://site.running.weblogic/file/login.jsp 就會在 WEB 瀏覽器里看到文件的內容。
以下是使用方法:
1. 通過強制使用 SSIServlet 查看未分析的頁面 :
伺服器站點通過 WebLogic 中的 SSIServlet 處理頁面,它在weblogic.properties 文件中注冊以下信息:weblogic.httpd.register.*.shtml= weblogic.servlet.ServerSideIncludeServlet
通過 URL 使用 SSIServlet 自動處理通配符 (*) 。因此 如果文件路徑開頭為 /*.shtml/,將強制文件由 SSIServlet 處理。如果使用其它文件類型如 .jsp 和 .jhtml, 就能查看未分析的 jsp 和 jhtml 代碼。舉例:http://www.xxx.com/*.shtml/login.jsp
2. 通過強制使用 FileServlet 查看未分析的頁面 :
WebLogic 使用 FileServlet 配置 ConsoleHelp servlet ,在weblogic.properties 文件的以下內容可得知:
# For Console help. Do not modify.
weblogic.httpd.register.ConsoleHelp= weblogic.servlet.FileServlet
weblogic.httpd.initArgs.ConsoleHelp=\defaultFilename=/weblogic/admin/help/NoContent.html
weblogic.allow.execute.weblogic.servlet.ConsoleHelp=everyone
因此如果文件路徑以 /ConsoleHelp/ 開頭將導致 WebLogic 使用 FileServlet,使未分析或編譯的文件作頁面顯示出來,舉例:http://www.xxx.com/ConsoleHelp/login.jsp
解決方案:
不要使用示例中的設置方法設置 FileServlet 。這可能會讓你的 JSP/JHTML 文件的源代碼暴露出來。請查看在線文檔:
http://www.weblogic.com/docs51/admindocs/http.html#file
示例的 registrations 如下:
weblogic.httpd.register.file=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.file=defaultFilename=index.html
weblogic.httpd.defaultServlet=file
有兩種方法可以避免這個問題:
(1)注冊那些文件 servlet 使用隨機用戶名,加大猜測難度。例如使用象這樣注冊文件 servlet 為 12foo34:
weblogic.httpd.register.12foo34=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.12foo34=defaultFilename=index.html
weblogic.httpd.defaultServlet=12foo34
(2)注冊文件 servlet 使用 wild cards 聲明你將使用所有這些文件擴展名作服務。舉例注冊文件 servlet 為 .html 文件服務:
weblogic.httpd.register.*.html=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.*.html=defaultFilename=index.html
weblogic.httpd.defaultServlet=*.html
使用上面的方法重復加入以下類型的文件 *.gif, *.jpg, *.pdf, *.txt, etc.
注意:這些信息是備有證明在 BEA WebLogic Server and Express 說明檔的:http://www.weblogic.com/docs51/admindocs/lockdown.html
另:請留意新版本並升級吧。
❽ 常見36種WEB滲透測試漏洞描述及解決方法-文件上傳
漏洞描述:文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴或webserver相關解析漏洞未修復而造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過 Web 訪問的目錄上傳任意文件,包括網站後門文件,進而遠程式控制制網站伺服器。
解決方法:
在前後端對上傳文件類型限制,如後端的擴展名檢測,重命名文件,MIME類型檢測以及限制上傳文件的大小,或將上傳文件放在安全路徑下;嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell攻擊;對上傳文件格式進行嚴格校驗及安全掃描,防止上傳惡意腳本文件;設置許可權限制,禁止上傳目錄的執行許可權;嚴格限制可上傳的文件類型;嚴格限制上傳的文件路徑;文件擴展名服務端白名單校驗;文件內容服務端校驗;上傳文件重命名,並隱藏上傳文件路徑。
❾ 如何解決jsp http響應分割漏洞
在HTTP響應頭拆分攻擊中具體牽涉到三個對象:
漏洞伺服器:即存在漏洞的伺服器。
攻擊工具:比如瀏覽器,類似IE6.0。
攻擊者:發動攻擊的人。
HTTP響應頭拆分攻擊本質是:攻擊者可以發送一個或幾個HTTP指令迫使漏洞伺服器產生一個攻擊者構想好的輸出。它可以讓伺服器誤把幾條HTTP請求看成一次完成的HTTP請求來解釋。第一條請求也許攻擊者部分控制著一部分,但這並不是危險的;危險的是,攻擊者完全控制著第二條HTTP請求,即從HTTP狀態行一直到HTTP請求的尾部。如果這樣可行,攻擊者就會發送多個請求指令到目標系統:第一條使得伺服器完全接受兩個HTTP響應,第二條響應通常是在伺服器上請求一些非法資源,而伺服器將會自動匹配到第二條響應,輸出攻擊者想要請求的資源,從而達到攻擊者的目的。
通過這個思路,我們可以構造出形形色色的攻擊,具體來說:
1 跨站腳本攻擊(XSS):這是一個非常普通和老式的漏洞,它可以讓用戶通過運行了一段javascript或者html代碼後,可以截取該用戶的cookie和session。但是到現在,通過一些重定向腳本發起一次XSS攻擊是很困難的,尤其是當用戶使用最新補丁的IE瀏覽器的時候,除非位置頭是完全控制的。但是當結合HTTP響應頭攻擊確是可以非常簡單實現,即使只是部分控制位置頭。
2 web緩存中毒(我們稱之為web損耗):這是一個新的攻擊技術,攻擊者強迫伺服器高速緩存中記錄了第二次HTTP請求,而伺服器中的高速緩存記錄的第二次請求是經過攻擊者精心構造的。這將成功的對目標站點進行損耗,當其他人訪問目標站點時,他們僅僅讀取了高速緩存里的數據,造成站點被「黑」的假象。當然,除了站點損耗之外,攻擊者也可以偷取用戶的session和cookie。
3 通過對用戶的攻擊:這是第二種方式的一個特殊情況。它對單個用戶的欺騙、對伺服器單個頁面的損耗,和暫時的磨損,也可以偷取到特定用戶的session和cookie。
4 劫持具體用戶的頁面敏感信息:攻擊者欺騙伺服器,並取得敏感用戶的許可權,並進入其用戶的狀態,訪問到一些秘密信息。
5 瀏覽器高速緩存中毒:這也是一項最新的攻擊方式,它這和跨站腳本攻擊方式有點類似,唯一的差別就是攻擊者強迫瀏覽器高速緩存中記錄一個長和持續的磨損的網頁,直到瀏覽器的高速緩存已經清潔。
對於這些我將在後面一一作介紹。
三:web高速緩存中毒的實現
由於這是一個新興的技術,所以這個段落我將對web高速緩存中毒的實現做進一步的分析。
1 毒害反向代理高速緩存:即電子塗寫。在這種方式中,攻擊者將直接面向網站。當然最厲害的手法是磨損該網站的首頁,這樣所有客戶端將都受到影響,這也是最漂亮的手段,但是這樣很容易被發現。
2 毒害一台中間高速緩存伺服器:迂迴。這種方式被發現是很困難的,中間緩存伺服器是有很多的,而且漏洞伺服器不可能佔有所有的中間緩存伺服器,這些伺服器很有可能不是在同一個地方,比如我們攻擊台灣的站點,我們很有可能會先攻擊一台位於美國的中間緩存伺服器,即使被調查到了也是要很久的,也許我們早就有時間把所有的信息給清除。
3 毒害瀏覽器高速緩存:一針見血。攻擊者很有可能會瞄準到一個特殊用戶,例如從一個很富有的用戶那裡偷取到證書,這樣的攻擊將會變得很獨特而且很難實施。因為,它不同於跨站腳本攻擊,而且被毒害的頁面要始終保持在高速緩存中以等待受害者(即你所瞄準的用戶)來裝載,有時候受害者從來都不會登陸到那個頁面,或者是受害者瀏覽器禁止了JAVA腳本的執行等等,都會造成無法成功。
四:HTTP響應頭漏洞攻擊基本技術。
HTTP響應頭攻擊把代碼嵌入到用戶信息中並放在HTTP頭部,也發生在把用戶信息和代碼嵌入到重定向到的URL中,或者把腳本嵌入到cookie值或者name里。在第一條響應中,重定向的URL是HTTP響應頭的一部分,第二條響應是確定cookie,cookie中的name/value是響應頭中set-cookie的一部分。
❿ 請教各位高人,如何解決jsp版ewebeditor的上傳漏洞
建議騰訊電腦管家修復
1)騰訊電腦管家會智能匹配電腦系統,針對性推送適合系統的高危漏洞補丁,而其他安全軟體可能推送非高危漏洞補丁;
2)騰訊電腦管家推送最近耐櫻發布的漏洞補丁包,而其他安全軟體可能提示已過期的漏洞補丁(可以橘好通過查看各安全軟體的補丁發布日昌伍叢期得知)。
3)騰訊電腦管家還可以定期自動刪除補丁包,清理電腦空間
打開騰訊電腦管家——主菜單——修復漏洞——定期刪除補丁包(默認勾選狀態)