安全動(dòng)態(tài)

Upload-Lab第一關(guān):輕松繞過(guò)前端驗(yàn)證的技巧!

來(lái)源:聚銘網(wǎng)絡(luò)    發(fā)布時(shí)間:2024-08-16    瀏覽次數(shù):
 
通過(guò)下述步驟,我們成功繞過(guò)了 upload-lab 第一關(guān)的前端驗(yàn)證,上傳了一個(gè)包含惡意代碼的文件。

upload-lab 的第一關(guān)設(shè)計(jì)了一個(gè)簡(jiǎn)單的文件上傳表單,前端通過(guò)JavaScript 進(jìn)行文件擴(kuò)展名驗(yàn)證。只有特定類型的文件(如 .jpg, .png 等)可以通過(guò)驗(yàn)證并上傳。我們的目標(biāo)是繞過(guò)前端驗(yàn)證,上傳一個(gè)包含惡意代碼的文件。 下圖是第一關(guān)的源碼:

前端驗(yàn)證上傳文件類型

了解前端驗(yàn)證

首先,打開(kāi)第一關(guān)的頁(yè)面,查看文件上傳表單的 HTML 代碼和 JavaScript 代碼。通??梢酝ㄟ^(guò)瀏覽器的開(kāi)發(fā)者工具F12來(lái)查看頁(yè)面源代碼和調(diào)試 JavaScript。

查看源碼

可以看到,checkFile 函數(shù)在表單提交時(shí)會(huì)檢查文件的擴(kuò)展名。如果擴(kuò)展名不在允許的范圍內(nèi),文件上傳會(huì)被阻止。

繞過(guò)前端驗(yàn)證

要繞過(guò)前端驗(yàn)證,可以通過(guò)以下幾種方法:

  • 禁用 JavaScript:在瀏覽器中禁用 JavaScript,然后重新加載頁(yè)面并上傳文件。這種方法簡(jiǎn)單直接,但在實(shí)際場(chǎng)景中并不總是可行。
  • 修改 HTML 代碼:使用瀏覽器的開(kāi)發(fā)者工具修改頁(yè)面代碼,去掉或修改驗(yàn)證函數(shù)。例如,將notallow="return checkFile()"改為 notallow="return true"。
  • 直接發(fā)送請(qǐng)求:使用工具如 BurpSuite 或 Postman 直接向服務(wù)器發(fā)送文件上傳請(qǐng)求,繞過(guò)前端驗(yàn)證。

實(shí)踐繞過(guò)驗(yàn)證

我們選擇使用開(kāi)發(fā)者工具修改HTML代碼。具體步驟如下:

(1) 打開(kāi)瀏覽器的開(kāi)發(fā)者工具F12

(2) 找到并選中 <form> 標(biāo)簽,修改 onsubmit 屬性為 return true,或者,直接把這個(gè)onsubmit 函數(shù)調(diào)用刪除。下圖是把onsubmit修改為return true。

刪除前端文件校驗(yàn)

(3) 選擇要上傳的文件,例如,一個(gè)名為 shell.php 的惡意文件,內(nèi)容如下:

復(fù)制
<?phpphpinfo();?>
  • 1.

(4) 提交表單,上傳成功如下圖所示:

webshell上傳成功

上傳成功后,通過(guò)瀏覽器的返回結(jié)果得到webshell的存儲(chǔ)位置,訪問(wèn)webshell,如下圖:

展示PHPinfo信息

詳細(xì)的展示了當(dāng)前PHP的所有信息。這樣就把webshell上傳成功了。

總結(jié)

通過(guò)上述步驟,我們成功繞過(guò)了 upload-lab 第一關(guān)的前端驗(yàn)證,上傳了一個(gè)包含惡意代碼的文件。這展示了前端驗(yàn)證的不可靠性,強(qiáng)調(diào)了在實(shí)際開(kāi)發(fā)中必須在服務(wù)器端實(shí)施嚴(yán)格的文件類型和內(nèi)容檢查。

 
 

上一篇:【一周安全資訊0817】《聯(lián)合國(guó)打擊網(wǎng)絡(luò)犯罪公約》將提交聯(lián)大表決;AMD曝出“超級(jí)權(quán)限漏洞”,數(shù)億設(shè)備面臨威脅

下一篇:Upload-Lab第二關(guān):如何巧妙繞過(guò)MIME類型過(guò)濾?