自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java代碼審計(jì)項(xiàng)目-某在線教育開(kāi)源系統(tǒng)

數(shù)據(jù)庫(kù) MySQL
mysql建議直接使用5.5.*版本的,高版本的會(huì)因?yàn)閙ysql的默認(rèn)配置需要額外配置而遇見(jiàn)各種問(wèn)題,雖然最后都能搭建成功,但是直接使用低版本的就無(wú)需額外配置。

環(huán)境部署

  1. 下載源代碼,使用IDEA進(jìn)行部署,項(xiàng)目pom.xml進(jìn)行maven依賴(lài)包添加、配置數(shù)據(jù)庫(kù)賬號(hào)密碼、配置開(kāi)啟端口后即可使用tomcat7插件運(yùn)行項(xiàng)目。
  2. 搭建過(guò)程遇見(jiàn)兩個(gè)坑點(diǎn):

mysql建議直接使用5.5.*版本的,高版本的會(huì)因?yàn)閙ysql的默認(rèn)配置需要額外配置而遇見(jiàn)各種問(wèn)題,雖然最后都能搭建成功,但是直接使用低版本的就無(wú)需額外配置。

項(xiàng)目路徑建議直接使用 http://IP:port 形式,后面不要配置額外的路徑,加入額外項(xiàng)目配置后雖然可以部署成功,但是會(huì)導(dǎo)致一些頁(yè)面或者圖片加載不成功。

  1. 進(jìn)行代碼審計(jì)時(shí),記得需要額外把\src\main\webapp\WEB-INF\lib\目錄下的jar包反編譯后再進(jìn)行代碼審計(jì),因?yàn)槭褂肐DEA進(jìn)行源碼關(guān)鍵字搜索時(shí)不會(huì)搜索jar包中的代碼,我審計(jì)之前就沒(méi)有注意到項(xiàng)目下的這個(gè)目錄,導(dǎo)致前面審計(jì)過(guò)程中某些功能找不到源代碼。

image

項(xiàng)目結(jié)構(gòu)分析

這是一個(gè)SSM(即Spring Framework、Spring MVC、MyBatis)架構(gòu)項(xiàng)目。

百科是這樣介紹的:

image

  • pom.xml:審計(jì)maven項(xiàng)目首先應(yīng)該查看pom.xm,通過(guò)查看此文件可以知道項(xiàng)目用了哪些組件及組件版本,這樣可以快速查看組件對(duì)應(yīng)的版本是否有漏洞。

觀察到項(xiàng)目使用了log4j 且版本為1.2.17,此版本存在反序列化漏洞CVE-2019-17571(經(jīng)過(guò)分析,不存在此漏洞,因?yàn)楸卷?xiàng)目未使用產(chǎn)生此漏洞的類(lèi)即SocketNode類(lèi))。

還使用了druid 1.0.1 組件,可以找一些未授權(quán)接口(經(jīng)過(guò)測(cè)試未發(fā)現(xiàn)此組件產(chǎn)生的未授權(quán))。

mybatis 3.2.7 組件存在反序列化漏洞CVE-2020-26945(經(jīng)過(guò)分析,不存在此漏洞,因?yàn)榇隧?xiàng)目未開(kāi)啟mybatis二級(jí)緩存功能)。

image

  • web.xml:程序啟動(dòng)時(shí)會(huì)先加載這個(gè)文件,此文件用來(lái)配置Filter、Listener、Servlet。此文件需要重點(diǎn)關(guān)注Filter過(guò)濾器的全局配置。此項(xiàng)目只配置了兩個(gè)全局的過(guò)濾器且這兩個(gè)過(guò)濾器都未對(duì)輸入輸出進(jìn)行轉(zhuǎn)義之類(lèi)的字符處理,所以未配置全局的XSS過(guò)濾。

image

  • applicationContext.xml: spring的默認(rèn)配置文件,當(dāng)容器啟動(dòng)時(shí)找不到其他指定配置文檔時(shí),將加載這個(gè)配置文件,此文件也包含引用其他的配置文件。

image

  • spring-mvc.xml:此文件主要的工作是:?jiǎn)?dòng)注解、掃描controller包注解;靜態(tài)資源映射;視圖解析(defaultViewResolver);文件上傳(multipartResolver);返回消息json配置。
  • image

  • web項(xiàng)目啟動(dòng)時(shí),讀取web.xml配置文件,首先解析的是applicationContext.xml文件,其次才是sping-mvc.xml文件。
  • Interceptor:攔截器,用于攔截用戶(hù)請(qǐng)求并進(jìn)行相應(yīng)的處理。比如通過(guò)它來(lái)進(jìn)行權(quán)限驗(yàn)證,或者是來(lái)判斷用戶(hù)是否登陸,或者是像12306 那樣子判斷當(dāng)前時(shí)間是否是購(gòu)票時(shí)間。此項(xiàng)目有3個(gè)攔截器,分別對(duì)前臺(tái)用戶(hù)、后臺(tái)用戶(hù)、網(wǎng)站配置管理處的用戶(hù)是否登錄與權(quán)限做相應(yīng)處理。

image

代碼審計(jì)

前臺(tái)找回密碼處驗(yàn)證碼重復(fù)利用

直接在代碼中搜索關(guān)鍵字驗(yàn)證碼,對(duì)相關(guān)代碼進(jìn)行分析。

此處是找回密碼功能,先后獲取客戶(hù)端與服務(wù)端驗(yàn)證碼進(jìn)行校驗(yàn),校驗(yàn)成功后進(jìn)入校驗(yàn)郵箱是否注冊(cè),若未注冊(cè)則直接返回結(jié)果,未刪除服務(wù)端中的舊驗(yàn)證碼,所以此處可對(duì)驗(yàn)證碼重復(fù)使用來(lái)爆破出已經(jīng)注冊(cè)的郵箱。

image

繼續(xù)分析可知,郵箱存在且重置密碼之后才清除服務(wù)端中的驗(yàn)證碼。因?yàn)榍芭_(tái)登錄處無(wú)驗(yàn)證碼,所以此處可配合登錄處繼續(xù)密碼爆破。

image

但是經(jīng)過(guò)分析,后臺(tái)管理員登錄處就不存在驗(yàn)證碼重復(fù)利用,因?yàn)轵?yàn)證碼校驗(yàn)正確后就會(huì)立馬進(jìn)行清除。

image

XSS

開(kāi)頭已經(jīng)分析未發(fā)現(xiàn)全局的XSS過(guò)濾器,所以直接注冊(cè)賬號(hào)進(jìn)行登錄,見(jiàn)框就插入XSS payload。

在問(wèn)答功能下的我要提問(wèn)功能處發(fā)現(xiàn)存儲(chǔ)型XSS。

image

image

此處只有標(biāo)題有XSS而內(nèi)容無(wú)XSS,找到對(duì)應(yīng)的入口進(jìn)行分析原因,questionsService.addQuestions()為添加問(wèn)答方法,追蹤此方法

QuestionsController-->QuestionsService-->QuestionsServiceImpl-->QuestionsDao-->QuestionsDaoImpl-->QuestionsMapper

根據(jù)追蹤過(guò)程分析未做字符過(guò)濾就直接保存到數(shù)據(jù)庫(kù)中。并且標(biāo)題和內(nèi)容都保存數(shù)據(jù)庫(kù)中。

image

image

由此可知,存儲(chǔ)過(guò)程標(biāo)題和內(nèi)容未做差異化處理,說(shuō)明在輸出的時(shí)候?qū)?nèi)容進(jìn)行了過(guò)濾,繼續(xù)分析輸出部分。由以上可知,存在XSS的url為http://127.0.0.1:8080/question/list。

直接在*.jsp文件中搜索question/list找到對(duì)應(yīng)的輸出點(diǎn)。很明顯標(biāo)題處是直接拼接數(shù)據(jù)庫(kù)中的值并未使用標(biāo)簽包裹,而內(nèi)容處則使用了<c:out>標(biāo)簽。在jsp文件中,使用<c:out>標(biāo)簽是直接對(duì)代碼進(jìn)行輸出而不當(dāng)成js代碼執(zhí)行。

image

自此,產(chǎn)生XSS的來(lái)龍去脈都已經(jīng)知道了,所以輸出變量時(shí),沒(méi)有使用<c:out>標(biāo)簽進(jìn)行防護(hù)的都會(huì)產(chǎn)生XSS,經(jīng)分析其他還有多處有XSS。

SQL注入

因?yàn)槭褂玫臅r(shí)mybatis框架,所以直接在*Mapper.xml文件中搜索${即可。

發(fā)現(xiàn)存在多處使用${}進(jìn)行拼接的地方,選擇一處進(jìn)行分析

image

找到對(duì)應(yīng)的controller層入口。此處為后臺(tái)管理員用戶(hù)刪除文章功能處。

image

抓取請(qǐng)求包直接使用sqlmap爆破即可。

image

其他還有幾處也存在sql注入。類(lèi)似分析即可。有幾處因?yàn)槭侵苯悠唇勇窂街械淖址鳛閰?shù)的,所以這種情況即使使用${}也不會(huì)造成sql注入。

前臺(tái)用戶(hù)橫向越權(quán)

在用戶(hù)修改個(gè)人資料時(shí),直接抓包修改 user.userId參數(shù)值即可越權(quán)登錄到其他存在的用戶(hù)。

image

分析代碼可知,未對(duì)用戶(hù)進(jìn)行判斷就直接把用戶(hù)信息更新到數(shù)據(jù)庫(kù)中,更新數(shù)據(jù)庫(kù)中后直接使用userid進(jìn)行自動(dòng)重新登錄從而可導(dǎo)致直接登錄其他用戶(hù)界面。

image

CSRF

后臺(tái)管理員創(chuàng)建用戶(hù)處存在CSRF漏洞,攻擊者可結(jié)合此系統(tǒng)的XSS漏洞構(gòu)造惡意代碼從而導(dǎo)致創(chuàng)建系統(tǒng)管理員用戶(hù)。

image

可用burpsuite自帶的CSRF工具生成payload進(jìn)行測(cè)試。

image

從代碼處可知,未對(duì)請(qǐng)求體校驗(yàn)Referer字段,也無(wú)token機(jī)制。因此可造成CSRF。

image

前臺(tái)文件上傳getshell

前置知識(shí)點(diǎn)

jspx:以xml語(yǔ)法來(lái)書(shū)寫(xiě)jsp的文件,自定義的映射類(lèi)型,jspx=jsp+xml;jspx文件本身符合x(chóng)ml的規(guī)范,但是它本質(zhì)又是一個(gè)jsp文件,所以在所有jsp里面能夠做到的事情在jspx里同樣可以做到。

tomcat的web.xml中org.apache.jasper.servlet.Jspservlet配置關(guān)于jsp服務(wù)的解析,默認(rèn)是都會(huì)解析jsp和jspx。

image

此處漏洞發(fā)生在前臺(tái)用戶(hù)上傳頭像處。

image

直接找到源代碼進(jìn)行分析,源碼在\src\main\webapp\WEB-INF\lib\inxedu-jar.jar包中。

此處的fileType即為前端傳入的文件類(lèi)型后綴,分析代碼可知,此處只過(guò)濾了jsp文件其他文件可隨意上傳,可以上傳html文件造成XSS漏洞,由于此項(xiàng)目使用tomcat,所以可以上傳jspx文件getshell。

image

使用哥斯拉工具生成jspx木馬上傳文件,上傳成功。

image

連接成功。

image

責(zé)任編輯:武曉燕 來(lái)源: FreeBuf.COM
相關(guān)推薦

2018-12-21 12:44:47

在線教育互聯(lián)網(wǎng)巨頭

2020-02-22 13:42:03

在線教育網(wǎng)課教育

2020-09-14 14:20:41

網(wǎng)絡(luò)風(fēng)險(xiǎn)漏洞網(wǎng)絡(luò)攻擊

2015-11-30 17:10:32

2015-07-10 13:20:44

百度開(kāi)放云

2016-04-26 09:56:02

在線教育/F5

2024-10-23 12:55:09

數(shù)據(jù)飛輪教育

2018-01-25 09:29:42

UCloud教育行業(yè)云服務(wù)

2019-01-22 08:36:54

在線教育

2018-01-25 10:09:45

達(dá)內(nèi)教育UCloud在線教育

2014-01-07 14:01:07

展視互動(dòng)在線教育

2020-02-26 09:12:17

在線教育流量洪峰

2024-09-24 13:42:06

2024-09-26 18:53:52

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)中臺(tái)數(shù)據(jù)飛輪

2024-09-26 19:51:15

數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)中臺(tái)數(shù)據(jù)飛輪

2016-09-10 22:44:58

在線教育IT在線教育51CTO學(xué)院

2018-12-12 17:05:53

2018-01-12 14:41:25

在線教育互聯(lián)網(wǎng)教育

2024-09-22 10:32:19

2024-09-22 10:35:12

數(shù)據(jù)飛輪數(shù)據(jù)中臺(tái)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)