Laravel框架是目前許多網(wǎng)站,APP運(yùn)營(yíng)者都在使用的一款開發(fā)框架,正因?yàn)槭褂玫木W(wǎng)站較多,許多攻擊者都在不停的對(duì)該網(wǎng)站進(jìn)行漏洞測(cè)試,我們SINE安全在對(duì)該套系統(tǒng)進(jìn)行漏洞測(cè)試的時(shí)候,發(fā)現(xiàn)存在REC漏洞.主要是XSRF漏洞,下面我們來詳細(xì)的分析漏洞,以及如何利用,漏洞修復(fù)等三個(gè)方面進(jìn)行全面的記錄。
該Laravel REC漏洞的利用是需要條件的,必須滿足APP_KEY泄露的情況下才能成功的利用與觸發(fā),我們SINE安全技術(shù)在整體的漏洞測(cè)試與復(fù)現(xiàn)過程里,共發(fā)現(xiàn)2個(gè)地方可以導(dǎo)致網(wǎng)站漏洞的發(fā)生,第一個(gè)是Post數(shù)據(jù)包里的cookies字段,再一個(gè)是HTTP header字段可以插入惡意的共計(jì)代碼到網(wǎng)站后端中去。
我們來搭建一下網(wǎng)站漏洞測(cè)試的環(huán)境,使用linux centos系統(tǒng),PHP5.5版本,數(shù)據(jù)庫(kù)是mysql,使用apache環(huán)境來搭建,使用的Laravel版本為5.6.28.首先我們?nèi)ス俜较螺d該版本,并解壓到apache設(shè)置的網(wǎng)站目錄路徑.首先我們post數(shù)據(jù)過去可以看到我們代碼里,會(huì)調(diào)用十幾個(gè)類,并將類里的對(duì)象進(jìn)行調(diào)用,參數(shù)賦值,而在cookies和verifycsrftoken值里發(fā)現(xiàn)可以使用app_key進(jìn)行漏洞利用,首先我們使用cookies來復(fù)現(xiàn)看下:
代碼如下:
POST / HTTP/1.2
Host: 127.0.0.2:80
Cookie: safe_SESSION=PHPSTORM; 5LqG5L+d6K+B5omA6L6T5Ye655qE57yW56CB5L2N5Y+v6K+75a2X56ym77yMQmFzZTY05Yi25a6a5LqG5LiA5Liq57yW56CB6KGo77yM5Lul5L6/6L+b6KGM57uf5LiA6L2s5o2i44CC57yW56CB6KGo55qE5aSn5bCP5Li6Ml42PTY077yM6L+Z5Lmf5pivQmFzZTY05ZCN56ew55qE55Sx5p2l44CCDQoNCkJhc2U2NOe8lueggeihqA==;
Content-Type: application/x-www-form-
Connection: open
Content-Length: 1
上面的代碼中在cookies欄里.加密的值就是我們要偽造的攻擊代碼,將該P(yáng)OST請(qǐng)求提交到網(wǎng)站中去,首先會(huì)對(duì)APP_key進(jìn)行解密并賦值過去,如果解密成功的話, 哪么就會(huì)效驗(yàn)cookies里的值,并對(duì)其進(jìn)行反序列的操作,進(jìn)而導(dǎo)致漏洞的發(fā)生,就會(huì)觸發(fā)RCE漏洞了。
http header方式的漏洞利用,我們漏洞測(cè)試一下,首先也是構(gòu)造跟cookies差不多的代碼,如下:
POST / HTTP/1.2
Host: 127.0.0.2:80
X-XSRF-TOKEN: +B5omA6L6T5Ye655qE57yW56CB5L2N5Y+v6K+75a2X56ym77yMQmFzZTY05Yi25a6a5LqG5LiA5Liq57yW56CB6KGo77yM5Lul5L6/6L+b6KGM57uf5LiA6L2s5o2i44CC57yW56CB6KGo55qE5aSn5bCP5Li6Ml42PTY077yM6L+Z5Lmf5pivQmFzZTY05ZCN56ew55qE55Sx5p2l44CCDQoNCkJhc2U2NOe8lueggeihqA==;
Content-Type: application/x-www-form-
Connection: open
Content-Length: 1
這里看這個(gè)X-XSRF-TOKEN:值,Laravel 框架在提交過程中會(huì)去判斷并效驗(yàn)這個(gè)值,如果解密成功就會(huì)進(jìn)行反序列化的操作,這里就不再一一的介紹與解釋了。
那如何對(duì)Laravel的漏洞進(jìn)行修復(fù)?
我們SINE安全技術(shù)對(duì)Laravel的版本進(jìn)行升級(jí)發(fā)現(xiàn),最新的5.6.30版本已經(jīng)對(duì)該rce漏洞進(jìn)行了修復(fù),在我們對(duì)代碼的比對(duì)中看出,對(duì)cookies的解密并解析操作進(jìn)行了判斷,多寫了static::serialized() 值,同樣的在X-XSRF-TOKEN里也加入了這個(gè)值.如果您對(duì)代碼不是太懂的話,也可以找專業(yè)的網(wǎng)站安全公司來進(jìn)行修復(fù),國(guó)內(nèi)SINESAFE,綠盟,啟明星辰,都是比較不錯(cuò)的,針對(duì)于Laravel的網(wǎng)站漏洞檢測(cè)與測(cè)試就到此,也希望通過這次的分享,讓更多的人了解網(wǎng)站漏洞,漏洞的產(chǎn)生原因,以及該如何修復(fù)漏洞,網(wǎng)站安全了,我們才能放開手腳去開拓市 場(chǎng),做好營(yíng)銷.
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對(duì)接開發(fā)等。十余年開發(fā)經(jīng)驗(yàn),每一個(gè)項(xiàng)目承諾做到滿意為止,多一次對(duì)比,一定讓您多一份收獲!