?這個重點是講關(guān)于java的代碼審計,看這些漏洞是怎么在java代碼里面產(chǎn)生的。
#Javaweb 代碼分析-目錄遍歷安全問題?
這個漏洞原因前面文章有,這次我們看看這個漏洞如何在代碼中產(chǎn)生的,打開靶場
?解題思路就是通過文件上傳,上傳文件把它應該正常上傳的路徑進行修改,更改他的上傳路徑。
查看頁面源碼
?我們正常上傳一個文件,看一下他的儲存路徑
?就是箭頭指向的對方。
這關(guān)的過關(guān)思路就是把這個文件上傳到其他目錄下面去。
而我們發(fā)現(xiàn)fullname是test,上傳后文件的命中也叫test,我們改一下fullname為xiaodi,上傳文件的名字也變成小迪了。
這時候我們試著把名字改成../xy,../是意思就是上一級,那我們這樣子上傳,會不會上傳到他的上一級目錄下面../
?上傳一下
?成功了,成功過關(guān)。
這個有什么意義,我們還沒有講過目錄權(quán)限解析這個東西,如果對方設(shè)置了目錄解析權(quán)限,這個目錄下面的文件的監(jiān)聽,比如一個圖片的儲存目錄,他就可以設(shè)置不給予腳本執(zhí)行權(quán)限,如果能操作儲存到目錄,就可以上傳到別的目錄,因為別的目錄就可能沒有設(shè)置權(quán)限。
我們看一下這關(guān)代碼是怎么回事?
我們看代碼重點要看,模塊引用(框架,自帶的等等),路由地址,靜態(tài)文件(html,js等等)簡易代碼理解。
?這個就是java一個比較知名的框架,
?這個就類似php里面的get什么的,就是接收數(shù)據(jù),后門是變量值,
?在這個數(shù)據(jù)包里面就有代碼中的變量。
?接受fullname值給value,在數(shù)據(jù)包里面也有顯示,還有fullname的值
?
?這個mltioatfile和上面引用的名字一樣,就是引用的上面的功能。
這就是mltioatfile聲明的情況
?
這個代碼的大概含義就是,把輸入的文件賦值到輸出的地方來。
#打開第三關(guān)
?還是同樣的繞過,不過../被修復了,
先上傳一個文件看看保存路徑,代碼,差不多,多了一個過濾
?這個因為他只過濾一次,所以就可以直接用循環(huán)繞過,寫為....//,這樣子繞過
就成功了。
#Javaweb 代碼分析-前端驗證安全問題?
因為他的驗證產(chǎn)生在前端,不在后端驗證,
打開靶場
就是嘗試登陸, 隨便輸入個賬戶密碼抓一下數(shù)據(jù)包
查看一下源碼
?
?tosring改編為字符串格式,equals對比括號內(nèi)的內(nèi)容是否相同,
我們該如何在黑盒情況下,獲取到賬戶密密碼,在java里面組成目錄結(jié)構(gòu)的相關(guān)問題,我們直接在html網(wǎng)站的源碼頁面就可以查看
?因為是前端驗證,去看那個加載代碼
?我們解碼的時候要把/x去掉,才能解碼出來
這個就是賬號和密碼。
我們還可以不寫賬號密碼,直接點擊登錄嗎,就觸發(fā)前端的jscript代碼,抓住數(shù)據(jù)包就可以看到賬戶密碼
?這一關(guān)是告訴我們看代碼,要去看那些代碼,
Javaweb 代碼分析-邏輯越權(quán)安全問題
先登錄進去,
?就會顯示一些信息
?查看一下這一關(guān)的過關(guān)要求
?這個靶場登錄之后,會展示一些用戶的信息,比如賬戶,而這些是由網(wǎng)站決定的展示什么,比如密碼就不會展示。
你有很多信息,但是網(wǎng)站會選擇部分顯示。而這一關(guān)是教我們可以通過數(shù)據(jù)包的發(fā)送,把本來不顯示的信息,顯示出來。
這一關(guān)就是讓你獲取不顯示出來的的兩個信息,該怎么操作。我舉個栗子,假如他有sql語句去數(shù)據(jù)庫查詢,如果我在數(shù)據(jù)包里面讓他去顯示密碼這種信息,相當于他傳遞過去回去查詢,會查出來,就會顯示出來,這個要看對方代碼1會不會顯示查詢的其他信息,
?這里傳過去兩個參數(shù),而這一關(guān)就會顯示這兩個參數(shù)的信息,就過關(guān)了,這一關(guān)的目的就是讓我們知道可以通過數(shù)據(jù)包之類的查看到不顯示的信息出來,
代碼審計
?
提交poost數(shù)據(jù)就請求括號里面的內(nèi)容來。
接受attributes的數(shù)據(jù)
而我們輸入好參數(shù)點的那個按鈕接受attribues,代碼里面接受他的變量值。
?逗號分割,如何判斷是否小于2,小于2就判斷失敗。
?這個就是去判斷他的第一個數(shù)組,是否等于不顯示的參數(shù)值,等于就過關(guān)了。
下一關(guān)
代碼審計
?接受變量url。
?以斜杠分隔開,然后比對值,所有值都相等的就過關(guān)了,前三個值都有顯示,但是第四個值就沒有固定值,?
第四個值從括號里面的id獲取來的
第四個、
?userfile是我們常說的對象,但是在這個頁面的代碼里沒有就在上面的引用文件里面,
?
?就找到了,之后再把之前的值拼接到一起
?這個值就是答案。
這一關(guān)的想要告訴我們,就是類似于接口問題。找一個網(wǎng)站看一下
?每一個用戶都有自己對應的編號,而我們換一下上面的編號就會換一個用戶,就可以獲取更多信息,知道用戶訪問地址,就可以不斷更改對應值,用戶的變更。
#Javaweb 代碼分析-XSS 跨站安全問題
?直接看代碼
?
?接受answerxss1的值,
數(shù)據(jù)包里面也有這個
?這個就對比是不是yes,直接在框框里面輸入yes點擊按鈕就過關(guān)了。
打開第七關(guān)
?抓一下數(shù)據(jù)包找一下對應源代碼在哪個文件里面
?
?我們再看一下靶場顯示哪些數(shù)據(jù)出來
?顯示箭頭指的值。
代碼是有先后執(zhí)行順序的, 而根據(jù)代碼來看,只要進入else里面,觸發(fā)else的代碼,就可以了,就不會在有field1的過濾了,所以fielad2里面不存在那些過濾的東西,把跨站語句寫在field1里面,在數(shù)據(jù)包修改
而我們還可以不用他過濾里面的那些關(guān)鍵字來實現(xiàn)繞過,之前xss繞過文章里面有。
而將這些就是有一些漏洞java和php是一樣的,沒有啥變化;
#拓展-安卓 APP 反編譯 JAVA 代碼(審計不香嗎?)
網(wǎng)上隨便下一個apk文件,如何拿去反編譯為jar文件,就是它的代碼
添加到ic里面查看源代碼,就可以進行源碼分析了,如果apk里面涉及到web網(wǎng)站,協(xié)議就可以找關(guān)于web的漏洞,?文章來源:http://www.zghlxwxcb.cn/news/detail-618711.html
s文章來源地址http://www.zghlxwxcb.cn/news/detail-618711.html
到了這里,關(guān)于web漏洞-java安全(41)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!