元氏縣城有做網(wǎng)站廣告的嗎五合一網(wǎng)站建設(shè)
什么是文件上傳漏洞:
文件上傳漏洞是指由于程序員在對(duì)用戶文件上傳部分的控制不足或者處理缺陷,而導(dǎo)致的用戶可以越過其本身權(quán)限向服務(wù)器上上傳可執(zhí)行的動(dòng)態(tài)腳本文件。這里上傳的文件可以是木馬,病毒,惡意腳本或者WebShell等?!拔募蟼鳌北旧頉]有問題,有問題的是文件上傳后,服務(wù)器怎么處理、解釋文件。如果服務(wù)器的處理邏輯做的不夠安全,則會(huì)導(dǎo)致嚴(yán)重的后果。
第一關(guān):
關(guān)閉js
創(chuàng)建一句話木馬,
首先創(chuàng)建一個(gè).php文件,寫入一句話木馬,進(jìn)行上傳;發(fā)現(xiàn)頁面彈出:
通過查看網(wǎng)頁源碼發(fā)現(xiàn)有一個(gè)checkFile 函數(shù)獲取了文件名稱,并判斷了文件類型(白名單)。
該文件并沒有在白名單里面,所以被禁止上傳。白名單我還不知道怎么繞過。
解決方案:
js是前端頁面獨(dú)有的,可以嘗試關(guān)閉瀏覽器的js功能
關(guān)閉js功能后發(fā)現(xiàn)除上傳按鈕外其他按鈕都不能點(diǎn)(js),再次上傳一句話木馬文件(我的文件名是web.php)發(fā)現(xiàn)成功上傳。
不能使用eval---可以使用assert:
?0=assert&1=phpinfo();
第二關(guān):
修改文件類型
再次嘗試使用web.php,?提示文件類型不正確;查看源碼,沒找到checkFile,可能在后端驗(yàn)證;
解決方案:
提示文件類型不正確,嘗試一下改文件類型
使用抓包軟件,更改web.php的文件類型為image/jpeg
放包后發(fā)現(xiàn)上傳成功
第三關(guān):
上傳web.php,顯示不允許上傳.....;說明是黑名單限制
?
解決方案:
上傳web.php,發(fā)現(xiàn)這一關(guān)限制后綴,查看源碼發(fā)現(xiàn)這一關(guān)是黑名單限制,限制.asp、.aspx、.php、.jsp。
嘗試修改后綴為:php3,php4,php5,phtml。成功上傳
第四關(guān):
查看提示,可以看到這一關(guān)使用了更多的黑名單限制,上一關(guān)的php3,php4等都被加入了黑名單,所以本關(guān)不使用修改后綴繞過。
解決方案:
嘗試使用.htaccess繞過。
介紹一下什么是.htaccess:主要的作用:URL重寫、自定義錯(cuò)誤頁面、MIME類型配置以及訪問權(quán)限控制等。主要體現(xiàn)在偽靜態(tài)的應(yīng)用、圖片防盜鏈、自定義404錯(cuò)誤頁面、阻止/允許特定IP/IP段、目錄瀏覽與主頁、禁止訪問指定文件類型、文件密碼保護(hù)等。
? ?.htaccess的用途范圍主要針對(duì)當(dāng)前目錄。可以把php后綴隱藏起來
創(chuàng)建一個(gè).htaccess文件,寫入SetHandler application/x-httpd-php(將該目錄和子目錄的所有文件映射為php文件)
先上傳.htaccess文件,因?yàn)樗梢园讶魏挝募冀馕鰹?php文件,所以我們將web.php修改為web.jpg,再上傳web.jpg文件,上傳成功,最后訪問web.jpg時(shí)會(huì)自動(dòng)解析為php文件。
第五關(guān):
查看源碼,發(fā)現(xiàn)限制了htaccess文件,但是沒有大小寫限制,因?yàn)閜hp沒有大小寫限制,所以修改大寫PHP,成功上傳。
第六關(guān):
查看提示,是黑名單限制,
查看源碼,發(fā)現(xiàn)沒有空格過濾,在Windows中,空格在存儲(chǔ)時(shí)會(huì)自動(dòng)刪除
?解決方案:
不能在修改文件名后面加空格,也會(huì)被刪除,所以使用抓包軟件進(jìn)行抓包,然后 在文件名”web.php“后加個(gè)空格,成功上傳。
第七關(guān):?
與第六關(guān)相似,查看源碼發(fā)現(xiàn)這一關(guān)沒有刪除?.?的代碼,在Windows中文件存儲(chǔ)時(shí)會(huì)自動(dòng)刪除后綴后面的“.”,同樣抓包修改后綴,上傳成功
第八關(guān):
與前兩關(guān)類似,這關(guān)少了::$DATA的刪除。
當(dāng)php在windows環(huán)境的時(shí)候,如果文件名+ “::$DATA" 會(huì) 把 "::$DATA" 之后的數(shù)據(jù)當(dāng)成文件流處理,不會(huì)檢測(cè)后綴名.且保持"::$DATA"之前的文件名
所以跟前兩關(guān)一樣的步驟
第九關(guān):
查看提示,這一關(guān)使用了白名單限制,
查看源碼,它先是將文件后的“.”依次刪除后再進(jìn)行下一步,但是deldot函數(shù)在遇到空格時(shí)會(huì)停住
所以我們將web.php文件后綴添加“.? ? .”的形式繞過同樣抓包修改
上傳成功