整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          文件上傳漏洞詳解

          文件上傳漏洞詳解

          .文件上傳漏洞

          1.1.文件上傳漏洞定義

          ??文件上傳漏洞是web系統(tǒng)中常見的一種功能,通過文件上傳能實(shí)現(xiàn)上傳圖片、視頻,以及其他類型的文件,但是隨著web中包含的功能越來越多,潛在的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)也就越大。

          ??如果惡意用戶上傳了可執(zhí)行的文件或者腳本,就會(huì)導(dǎo)致網(wǎng)站被其控制甚至?xí)蛊浞?wù)器淪陷,以至于引發(fā)惡意的網(wǎng)絡(luò)安全事件。

          1.2.文件上傳漏洞原理

          ??文件上傳漏洞是指用戶通過界面上的上傳功能上傳了一個(gè)可執(zhí)行的腳本文件,而WEB端的系統(tǒng)并未對(duì)其進(jìn)行檢測(cè)或者檢測(cè)的邏輯做的不夠好。

          ??通過來說文件上傳功能是沒有問題的,主要是服務(wù)器如何對(duì)上傳的文件如何進(jìn)行處理。

          ??若WEB未對(duì)用戶上傳的文件進(jìn)行有效的審查,若存在惡意用戶對(duì)其上傳一句話木馬,從而實(shí)現(xiàn)控制WEB網(wǎng)站的目的。

          1.3.文件上傳思路

          1.3.1.常規(guī)類

          ??掃描獲取上傳,會(huì)員中心頭像上傳,后臺(tái)系統(tǒng)上傳,其他途徑上傳。

          1.3.2.cms類

          ??已知道的cms源碼。

          1.3.3.編輯類

          ??ckeditor,fckeditor,kindeditor,xxxxeditor。

          1.3.4.其他類/CVE

          ??代碼審計(jì),平臺(tái)或第三方應(yīng)用。

          1.4.web界面存在的風(fēng)險(xiǎn)點(diǎn)

          ??上傳頭像、上傳身份認(rèn)證、上傳文件以及有存在文件上傳的地方就可能存在相關(guān)的漏洞,但不是有文件上傳就一定有漏洞,但有文件上傳就能進(jìn)行測(cè)試。

          1.5.文件上傳實(shí)戰(zhàn)思路

          ??上傳文件和文件執(zhí)行是兩個(gè)東西

          ??漏洞分類:解析漏洞、cms漏洞、其他漏洞(編輯器漏洞、cve漏洞、安全修復(fù))

          ??思路:

          ??如果有一個(gè)網(wǎng)站,要從文件上傳的方向開始

          ??第一步:先看中間件,看是否存在解析漏洞/CMS/編輯器漏洞/CVE/

          ??如果有,如何找:

          ????字典掃描:掃描會(huì)員中心,文件上傳的位置

          ??找到后,如何利用:

          ????驗(yàn)證/繞過

          2.文件上傳繞過分類

          2.1.JS類防護(hù)

          2.1.1.前端驗(yàn)證

          ??2.1.1.1.基本概念

          ??JS防護(hù)就是將上傳的文件進(jìn)行一個(gè)格式的驗(yàn)證,但是JS類的防護(hù)是用戶可以控制的,所以前端的所有驗(yàn)證都是不安全的。

          ??2.1.1.2.upload-labs第一關(guān)

          ??通過禁用界面JS處理,然后上傳1.php文件,可繞過前端檢測(cè)。關(guān)于如何禁用界面JS,可以通過安裝插件進(jìn)行一鍵禁用。在火狐的插件市場(chǎng)搜索javascript switcher。

          2.2.黑名單

          ??黑名單就是服務(wù)端明確不讓上傳的格式后綴,例如:rar、php、zip等。

          2.2.1.特殊解析后綴

          ??2.2.1.1.基本概念

          ??特殊解析后綴繞過是由于黑名單過濾規(guī)則不嚴(yán)謹(jǐn),在某些特定的情況下的后綴也能夠被當(dāng)作php文件進(jìn)行解析,例如PHP2、php3、php4、phtml、pht等情況。

          ??可以使用phtml、php3、php4、php5,當(dāng)然前提是apache服務(wù)器,同時(shí)在配置文件夾中需要有將AddType application/x-httpd-php .php .phtml .phps .php1 .php4 .pht 這樣的一段話前面的注釋刪除,重啟phpstudy讓其生效。

          ??2.2.1.2.upload-labs第三關(guān)

          ??通過源碼得知,禁止.asp、.aspx、.php、.jsp類型進(jìn)行上傳。

          ??本關(guān)可以通過上傳其他文件擴(kuò)展名進(jìn)行繞過,實(shí)現(xiàn)文件上傳。

          2.2.2…h(huán)taccess解析

          ??2.2.2.1.基本概念

          ??.htaccess文件是Apache服務(wù)器中的一個(gè)配置文件,它負(fù)責(zé)相關(guān)目錄下的網(wǎng)頁配置.通過htaccess文件,可以實(shí)現(xiàn):網(wǎng)頁301重定向、自定義404頁面、改變文件擴(kuò)展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認(rèn)文檔等功能。

          ??2.2.2.2.upload-labs第四關(guān)

          ??通過源碼得知第三關(guān)使用的phtml被限制了,并且設(shè)定了更多的特殊解析后綴,所以使用特殊解析后綴已經(jīng)無法繞過了,這里就可以使用到 .htaccess進(jìn)行繞過測(cè)試。

          ??前提條件:

          Apache開啟rewrite模塊
          .apache配置文件為AllowOverride All(默認(rèn)為None)
           .htaccess需要使用notepad++創(chuàng)建,不然創(chuàng)建不了,創(chuàng)建 .htaccess代碼:
          <FilesMatch "x.png">   
          SetHandler application/x-httpd-php
          </FilesMatch>

          x.png是代碼將該目錄下文件叫x.png的文件以php進(jìn)行執(zhí)行。
          ??首先上傳.htaccess,其次上傳一張名叫x.png的文件,即可執(zhí)行。

          2.2.3.大小寫繞過

          ??2.2.3.1.基本概念

          ??后綴大小寫是通過服務(wù)端未將后綴進(jìn)行統(tǒng)一的格式轉(zhuǎn)換,導(dǎo)致可以上傳PHP的文件,同時(shí)由于Windows系統(tǒng)對(duì)后綴大小寫并不敏感,所以當(dāng)在寫PHP的改成Php就會(huì)被當(dāng)作PHP進(jìn)行解析。

          ??2.2.3.2.upload-labs第五關(guān)

          ??通過源碼得知,并未對(duì)其大小進(jìn)行限制,且是由于是黑名單,只限制了不可以上傳的,那么的我們可以對(duì)php后綴進(jìn)行大小寫變形,例如:PHP、Php、pHp等。

          2.2.4.點(diǎn)繞過

          ??2.2.4.1.基本概念

          ??點(diǎn)繞過其實(shí)就是利用了Windows對(duì)文件和文件名的限制,當(dāng)將點(diǎn)放在結(jié)尾的時(shí)候,就會(huì)觸發(fā)操作系統(tǒng)的命名規(guī)范問題,所以在生成文件的時(shí)候,添加在結(jié)尾的點(diǎn)就會(huì)被去除。

          ??2.2.4.2.upload-labs第七關(guān)

          ??通過源碼發(fā)現(xiàn),本關(guān)并未對(duì)結(jié)尾點(diǎn)進(jìn)行檢測(cè)。那么這里就可以通過在后綴加上點(diǎn)進(jìn)行繞過,這里我使用的是之前大小寫的文件,并未修改名稱,所以不要太在意,并不是說使用大小寫可以繞過。

          2.2.4.3.upload-labs第九關(guān)

          ??通過源碼發(fā)現(xiàn)本關(guān)之前所有的繞過思路都被過濾了,但是通過源碼發(fā)現(xiàn),所有的過濾都是一次的,并未對(duì)其進(jìn)行循環(huán)過濾。也就是說源碼中提到的刪除空格,刪除點(diǎn)都是只刪除一次,那么可以在數(shù)據(jù)包中將php后綴添加. .,形成.php. .,由于只驗(yàn)證一次,所以刪除一個(gè)點(diǎn)和一個(gè)空格后就不再刪除了。

          2.2.5.空格繞過

          ??2.2.5.1.基本概念

          ??其實(shí)空格繞過和點(diǎn)繞過是一樣的,都是利用操作系統(tǒng)的特性來進(jìn)行解析繞過。具體可以看點(diǎn)繞過的解釋。

          ??2.2.5.2.upload-labs第六關(guān)

          ??通過源碼發(fā)現(xiàn)并未對(duì)空格進(jìn)行限制,那么我們可以在后綴添加一個(gè)空格進(jìn)行繞過,但是在Windows系統(tǒng)中我們無法創(chuàng)建后綴帶空格的文件,但是在數(shù)據(jù)包中不會(huì)對(duì)后綴的空格進(jìn)行清除啊,那么我們這里就需要使用到BS進(jìn)行抓包,對(duì)其進(jìn)行修改,然后再進(jìn)行上傳。

          ??通過修改后上傳到對(duì)方服務(wù)器的時(shí)候,服務(wù)器會(huì)自動(dòng)對(duì)后面的空格清除,就實(shí)現(xiàn)了繞過。

          2.2.6.::$$DATA繞過

          ??2.2.6.1.基本概念

          ??在window的時(shí)候如果文件名+::$DATA會(huì)把::$DATA之后的數(shù)據(jù)當(dāng)成文件流處理,不會(huì)檢測(cè)后綴名,且保持::$DATA之前的文件名,他的目的就是不檢查后綴名

          ??2.2.6.2.upload-labs第八關(guān)

          ??通過源碼發(fā)現(xiàn)并未對(duì)::$DATA進(jìn)行檢測(cè)。可以在后面添加::$DATA進(jìn)行繞過。

          2.2.7.配合解析漏洞

          ??2.2.7.1.基本概念

          ??配合解析漏洞就是利用文件上傳漏洞和相關(guān)的解析漏洞進(jìn)行結(jié)合完成攻擊,比如配合iis、nginx、apache、tomcat的解析漏洞得到上傳漏洞的實(shí)現(xiàn)。具體的看下面提到各種相關(guān)的解析漏洞。

          2.2.8.雙后綴名繞過

          ??2.2.8.1.基本概念

          ??服務(wù)端可能存在將后綴替換為空的情況,但是這就存在一種可能就是在編輯過濾的時(shí)候只過濾了一次,所以就出現(xiàn)了可以通過雙寫就繞過的可能。

          ??2.2.8.2.upload-labs第十關(guān)

          ??通過源碼發(fā)現(xiàn),若上傳的文件后綴在禁止的列中,那么就將后綴替換為空,而這里又是只過濾一次,那么就可以通過雙寫進(jìn)行繞過。

          這里由于過濾就是從左到右進(jìn)行匹配,不要問為什么不從右向左匹配。

          ??例如:pphphp

          2.3.白名單

          ??白名單就是服務(wù)端明確可以上傳的格式后綴,例如:jpg、png、jpeg等。

          2.3.1.MIME繞過

          ??2.3.1.1.基本概念

          ??服務(wù)端MIME類型檢測(cè)是通過檢查http中包含的Content-Type字段中的值來判斷上傳文件是否合法的。

          ??利用Burp抓包,將報(bào)文中的Content-Type改成允許的類型

          ??Content-Type: image/gif(gif圖像)

          ??Content-Type: image/jpg(jpg圖像)

          ??Content-Type: image/png(png圖像)

          ??2.3.1.2.upload-labs第二關(guān)

          ??通過源碼中第五段分析得出本關(guān)采用了content-type進(jìn)行后端驗(yàn)證,那么通過使用BS抓包對(duì)其進(jìn)行修改content-type,然后再進(jìn)行上傳。


          2.3.2.%00截?cái)?/h1>

          ??2.3.2.1.基本概念

          ??%00不是代表空格,而是null,一個(gè)空字符,當(dāng)程序執(zhí)行到%00后,那么后面的數(shù)據(jù)就會(huì)停止,意思就是誤當(dāng)作結(jié)束符,把后面的數(shù)據(jù)直接忽略了,這就會(huì)導(dǎo)致漏洞產(chǎn)生。

          ??在文件上傳后,利用%00截?cái)啵谖募U(kuò)展名驗(yàn)證的時(shí)候,就會(huì)取文件的擴(kuò)展名進(jìn)行驗(yàn)證,但是在最后保存在本地的時(shí)候,%00就會(huì)截?cái)辔募槐4?00之前的內(nèi)容。

          ??%00只能用于php版本低于5.3的。這里我們需要把phpstudy切換一下版本,把magic_quotes_gpc關(guān)閉,以phpstudy為例。其他選項(xiàng)菜單—php擴(kuò)展及設(shè)置—參數(shù)開關(guān)設(shè)置—把magic_quotes_gpc關(guān)閉。

          ??2.3.2.2.upload-labs第十一關(guān)

          ??通過源碼發(fā)現(xiàn)本關(guān)是個(gè)白名單,但是可以使用%00對(duì)路徑進(jìn)行截?cái)唷?/p>

          ??2.3.2.3.upload-labs第十二關(guān)

          ??本關(guān)接受值從get變成了post,它倆的區(qū)別就是get會(huì)自行解碼,而post不會(huì)解碼,所以需要對(duì)%00進(jìn)行解碼。

          ??在BS抓包中選中%00右鍵選擇URL其次選擇網(wǎng)址解碼。

          2.4.內(nèi)容及其他

          2.4.1.文件頭檢測(cè)

          ??2.4.1.1.基本概念

          ??圖片的格式在防護(hù)中通常是不會(huì)使用后綴進(jìn)行判斷的依據(jù),文件頭是文件開頭的一段二進(jìn)制碼,不同類型的圖片也就會(huì)有不同的二進(jìn)制頭。

          ??JPEG (jpg),文件頭:FF D8 FF E1

          ??PNG (png),文件頭:89 50 4E 47

          ??GIF (gif),文件頭:47 49 46 38

          2.4.1.2.upload-labs第十三關(guān)

          ??制作圖片馬,可以使用Notepad直接打開圖片在后面添加一個(gè)PHP代碼,不過可能會(huì)出錯(cuò)。其次就是使用copy X.png /b + 1.php /a x.png 。

          ??上傳圖片馬,并查找路徑。制作好的圖片馬想要解析出來這個(gè)圖片,還得有這個(gè)包含漏洞。我們看到,他已經(jīng)說了,網(wǎng)站存在包含漏洞

          上傳圖片馬,并查找路徑

          構(gòu)造的URL:http://192.168.10.150/upload-labs/include.php?file=upload/2120221024150121.png

          2.4.2.二次渲染

          ??2.4.2.1.基本概念

          ?? 二次渲染就是在我們上傳的圖片后,網(wǎng)站會(huì)對(duì)圖片進(jìn)行二次處理,比如對(duì)圖片的尺寸、格式、以及網(wǎng)站對(duì)圖片進(jìn)行定義的一些要求等進(jìn)行處理,并且服務(wù)器會(huì)對(duì)里面的內(nèi)容進(jìn)行二次替換更新,在處理完后,會(huì)生成一個(gè)合規(guī)的圖片在網(wǎng)站上顯示出來。

          ??2.4.2.2.upload-labs第十六關(guān)

          ??這里其實(shí)同樣也可以使用圖片馬也就是jpg等格式,但是使用gif圖片更好。

          ??使用抓包軟件進(jìn)行攔截,方便查看上傳后的文件名稱。

          ??從網(wǎng)上找的gif圖片馬:圖片馬:

          構(gòu)建的URL:http://192.168.10.150/upload-labs/include.php?file=/upload/18556.gif

          2.4.3.條件競(jìng)爭(zhēng)

          ??2.4.3.1.基本概念

          ??條件競(jìng)爭(zhēng)就是在源代碼中是存在校驗(yàn)的,但是校驗(yàn)是在文件上傳后,才開始校驗(yàn),也就是文件先上傳至服務(wù)器中,然后服務(wù)器會(huì)對(duì)該文件進(jìn)行校驗(yàn),當(dāng)符合的時(shí)候則會(huì)對(duì)文件進(jìn)行重命名,當(dāng)文件不符合要求的時(shí)候就對(duì)將文件進(jìn)行刪除。

          ??而我們則需要在服務(wù)器對(duì)文件刪除前進(jìn)行訪問,由于文件在訪問過程中,服務(wù)器是無法刪除的,所以就可以利用這個(gè)節(jié)點(diǎn)實(shí)現(xiàn)條件競(jìng)爭(zhēng)。

          2.4.4.突破gatimagesize

          ??2.4.4.1.基本概念

          getimagesize函數(shù)是用于獲取圖像大小及相關(guān)信息,成功返回一個(gè)數(shù)組,失敗則返回false產(chǎn)生一條e_warning級(jí)的錯(cuò)誤信息。

          通過對(duì)圖片及代碼進(jìn)行合成圖片馬,這個(gè)時(shí)候getimagesize函數(shù)既可以獲取圖片信息,文件后綴php也能夠被解析成腳本文件,從而繞過getimagesize函數(shù)的限制。

          ??2.4.4.2.upload-labs第十四關(guān)

          ??本關(guān)存有g(shù)etimagesize函數(shù),這個(gè)函數(shù)的意思是:會(huì)對(duì)目標(biāo)文件的16進(jìn)制去進(jìn)行一個(gè)讀取,去讀取頭幾個(gè)字符串是不是符合圖片的要求的。

          ??使用辦法和第十三關(guān)是一樣的,前提都是需要存在相關(guān)的漏洞。

          2.4.5.突破exif_imagetype

          ??2.4.5.1.基本概念

          ??服務(wù)器exit_imagetype()函數(shù)檢測(cè)上傳圖片類型是否為白名單圖片格式來驗(yàn)證上傳文件合法性。可以通過制作圖片馬繞過,再配合文件包含漏洞解析文件來獲取服務(wù)器配置信息。

          ??2.4.5.2.upload-labs第十五關(guān)

          ??上傳一張圖片馬,然后使用br抓包軟件對(duì)其進(jìn)行抓包,查看上傳后的文件名稱。

          ?URL:http://192.168.10.150/upload-labs/include.php?file=/upload/4920221126063306.png

          3.解析漏洞

          3.1.解析漏洞解釋

          ??解析漏洞就是指服務(wù)器應(yīng)用程序在解析某些精心構(gòu)造的后綴文件的時(shí)候,會(huì)將相關(guān)的文件解析成網(wǎng)頁的腳本,從而導(dǎo)致實(shí)現(xiàn)控制網(wǎng)站,同時(shí)大部分的解析漏洞都是由應(yīng)用程序產(chǎn)生的。

          3.2.IIS解析漏洞

          3.2.1.IIS5.0/6.0

          ??3.2.1.1.目錄解析

          ??在以. asp文件名的文件夾下的任何文件都將作為asp文件執(zhí)行。

          ??也就是當(dāng)目錄為XX.asp的時(shí)候,那么當(dāng)訪問下面的圖片的時(shí)候,如XX.aps/1.jpg就會(huì)被當(dāng)作ASP執(zhí)行。

          ??3.2.1.2.文件解析

          ??如果文件為1.asp;.jpg,由于IIS不解析;后面的內(nèi)容,使用就會(huì)把文件當(dāng)作1.asp進(jìn)行解析,同時(shí)還存在.asa、.cer、.cdx可以進(jìn)行解析。

          ??3.2.1.3.修復(fù)建議

          ??1)限制上傳目錄的執(zhí)行權(quán)限,不允許執(zhí)行腳本。

          ??2)不允許創(chuàng)建目錄。

          ??3)上傳的文件進(jìn)行重命名。

          3.2.2.IIS7.0/IIS7.5

          ??3.2.2.1.IIS7.0/IIS7.5Fast-CGI

          ??在Fast-CGI開啟的狀態(tài)下,在類似1.jpg后面加上/1.php,變成/1.jpg/1.php路徑會(huì)解析成PHP文件。需要進(jìn)入php.ini里面修改cig.cgi_ pathinfo=1。

          ??將1.txt文本文件中的后門代碼寫入到1.jpg圖片的二進(jìn)制代碼:

          copy 1.jpg/b + 1.txt/a 1.jpg

          ??1.txt的文件內(nèi)容為:

          <?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[password])?>');?>

          當(dāng)在圖片文件中寫入后門代碼,當(dāng)訪問這個(gè)圖片的時(shí)候加上/.php的時(shí)候就會(huì)在當(dāng)前目錄下生成一句話木馬shell.php。

          ??3.2.2.2.修復(fù)建議

          ??配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序

          3.3.apache解析漏洞

          3.3.1.apache解析漏洞

          ??在apache1.x和apache2.x中存在解析漏洞。

          ??當(dāng)一個(gè)文件為1.php.yy.xx的時(shí)候就會(huì)被當(dāng)作php執(zhí)行,這是由于在apache解析文件的時(shí)候有一個(gè)原則就是,以.后面的擴(kuò)展名來解析,當(dāng)遇見不認(rèn)識(shí)的擴(kuò)展名的時(shí)候,就會(huì)向前解析,直到遇到能夠解析的后綴名為止。

          ??如:1.php.yy.xx,首先會(huì)解析xx,xx無法解析就會(huì)去解析yy,yy無法解析就會(huì)去解析php,那么php是能夠解析了,那么就會(huì)結(jié)束。

          ??這種方式多用于繞過黑名單的檢查。

          3.3.2.修復(fù)建議

          ??1)更新至最新版本。

          ??2)將上傳的文件進(jìn)行重命名。

          3.4.nginx解析漏洞

          3.4.1.nginx<8.03

          ??3.4.1.1.nginx配置文件錯(cuò)誤

          ??由于nginx默認(rèn)是用cgi解析php的,因此和iis一樣可以制作圖片馬進(jìn)行上傳。

          ??當(dāng)在圖片文件中寫入后門代碼,當(dāng)訪問這個(gè)圖片的時(shí)候加上/.php的時(shí)候就會(huì)在當(dāng)前目錄下生成一句話木馬shell.php。

          ??3.4.1.2.修復(fù)建議

          ??1)配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序。

          2)或如果需要使用到cgi.fix_pathinfo這個(gè)特性(例如:Wordpress),那么可以禁止上傳目錄的執(zhí)行腳本權(quán)限。 或?qū)⑸蟼鞔鎯?chǔ)的內(nèi)容與網(wǎng)站分離,即站庫分離。

          3)或高版本PHP提供了security.limit_extensions這個(gè)配置參數(shù),設(shè)置security.limit_extensions=.php

          3.4.2.nginx 0.5/0.6/0.7<=0.7.65/0.8<=0.8.37

          ??3.4.2.1.nginx空字節(jié)任意代碼執(zhí)行

          ??當(dāng)使用PHP-FastCGI執(zhí)行PHP時(shí),遇到url里面存在%00空字節(jié)時(shí)與FastCGI的處理不一致,導(dǎo)致可在非PHP文件中嵌入PHP代碼,通過訪問url+%00.PHP來執(zhí)行其中的PHP代碼。

          ??比如上傳一張圖片馬1.jpg,那么當(dāng)訪問這個(gè)圖片馬的時(shí)在1.jpg后面添加%00.php就會(huì)將圖片馬以php執(zhí)行。

          ??3.4.2.2.修復(fù)建議

          ??1)升級(jí)nginx版本。

          4.編輯器漏洞

          4.1.介紹

          ??編輯器也就是在線的web編輯器,比如在搭建博客后需要發(fā)布文章,那么用來發(fā)布文章的界面就是web編輯器。當(dāng)然web編輯器有很多,如:UEDITOR(百度)、eWebEdit、FCKeditor、CKEditor(新版fck)、Kindeditor、DotNetTextBox、CuteEditor等等。

          4.2.編輯器漏洞

          編輯器漏洞詳解

          5.WAF繞過

          5.1.WAF繞過解釋

          ??waf繞過其實(shí)就是將數(shù)據(jù)包截獲到,對(duì)里面的內(nèi)容進(jìn)行解析,比如對(duì)文件的后綴名就判斷是否在相應(yīng)的黑名單中,文件內(nèi)容中是否存在webshell代碼。

          ??總的來說文件上傳都是在數(shù)據(jù)包中進(jìn)行各種操作來進(jìn)行繞過。

          5.2.上傳參數(shù)名解析

          ??Content-Disposition :一般可更改

          ??name:表單參數(shù)值,不能更改

          ??filename:文件名,可以更改

          ??Content-Type:文件MIME,視情況更改

          5.3.繞過方式

          5.3.1.數(shù)據(jù)溢出

          ??5.3.1.1.form-data與name之間

          ??在form-data;與name=“upload_file”; filename=“2.php"之間添加大量的垃圾數(shù)據(jù),可以邊添加邊測(cè)試直到上傳上去,主要添加的垃圾數(shù)據(jù)需要在后面添加一個(gè)”;"進(jìn)行結(jié)尾。

          ??例如:

          form-data;sadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasA; name="upload_file"; filename="2.php"

          5.3.1.2.name與filename之間

          ??當(dāng)然這里不單單可以插入在form-data;與name=“upload_file”; filename="2.php"之間,也可以在name=“upload_file”; 與filename="2.php"之間。但是數(shù)據(jù)不能亂插入,比如你插在2.php中,那肯定不行,一般情況下,文件名稱長(zhǎng)度都可能存在限制,并且太長(zhǎng)也上傳不上去。

          ??例如:

          Content-Disposition: form-data; name="upload_file"; sadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasA; filename="2.php"

          5.3.2.符號(hào)變異

          ??5.3.2.1.filename符號(hào)變異

          ??符號(hào)變異也就是將單雙引號(hào)變換使用,或者單雙引號(hào)缺失一部分進(jìn)行使用,或者不使用單雙引號(hào)來進(jìn)行繞過。目前測(cè)試好像是無法通過了。

          Content-Disposition: form-data; name="upload_file"; filename="2.php
          Content-Disposition: form-data; name="upload_file"; filename='2.php
          Content-Disposition: form-data; name="upload_file"; filename=2.php

          5.3.2.2.form-data符號(hào)變異

          Content-Disposition:"form-data"; name=upload_file; filename="2.php"
          Content-Disposition:'form-data'; name="upload_file"; filename='2.php'

          5.3.3.數(shù)據(jù)截?cái)?/h1>

          ??5.3.3.1.回車換行

          ??通過換行來實(shí)現(xiàn)繞過,但是中間不能有空行。

          ??例如:

          Content-Disposition: form-data; name="upload_file"; filename="2.
          p
          h
          p"

          ??5.3.3.2.分號(hào)截?cái)?/h1>

          ??若WAF匹配文件名到分號(hào)截止,則可以繞過。

          5.3.4.字段名變換

          ??5.3.4.1.大小寫變換

          ??對(duì)這三個(gè)字段進(jìn)行大小寫進(jìn)行變換,比如將name換成Name、Content-Disposition換成content-disposition等等。

          ??5.3.4.2.順序顛倒

          ??針對(duì)name和filename這兩個(gè)字段,我們可以嘗試交換name和filename的順序。(由于有規(guī)定Content-Dispositon必須在前面,因此我們不能修改該字段的內(nèi)容)

          5.3.5.重復(fù)數(shù)據(jù)

          ??通過設(shè)置多個(gè)參數(shù)進(jìn)行匹配,避免被匹配到。

          Content-Disposition: form-data; name="upload_file";filename="2.jpg";filename="2.jpg";filename="2.jpg";filename="2.jpg";......filename="2.php";

          5.4.繞過參考鏈接

          ??最全的文件上傳漏洞之WAF攔截繞過總結(jié)

          6.安全修復(fù)

          6.1.文件上傳修復(fù)

          ??后端驗(yàn)證:針對(duì)后端驗(yàn)證的可以采用通過服務(wù)器進(jìn)行驗(yàn)證。

          ??后綴檢測(cè):利用黑白名單進(jìn)行過濾,當(dāng)然最好是使用白名單,黑名單有時(shí)候總歸會(huì)存在一些未想到的后綴,而白名單就相對(duì)簡(jiǎn)單一點(diǎn),只需要想放通哪些后綴即可,而且防范更好一些。

          ??上傳目錄:對(duì)上傳文件到的目錄可以設(shè)置一個(gè)不可執(zhí)行的權(quán)限。

          ??文件名:針對(duì)文件名可以自定義一些隨機(jī)數(shù)以及一些其他的內(nèi)容進(jìn)行二次修改,從而改變文件的名稱。

          ??內(nèi)容檢測(cè):可以使用文件頭,完整性檢測(cè),最好能夠?qū)?nèi)容的數(shù)據(jù)進(jìn)行判斷是否存在一些webxshll類似的代碼,若出現(xiàn)這類代碼,直接刪除。

          ??當(dāng)然防范手段還有很多,有攻有防。

          HP編程語言是目前編程語言中最熱門的編程之一,PHP應(yīng)用領(lǐng)域最多的是WEB開發(fā),PHP和mysql結(jié)合可以做出完美的網(wǎng)站,目前大多WEB網(wǎng)站都會(huì)選擇PHP開發(fā),開源成本低,高效質(zhì)量好。

          學(xué)習(xí)PHP編程其實(shí)比較容易,如果你學(xué)過HTML、CSS、JavaScript等前端語言將會(huì)幫助更快了解和學(xué)習(xí)PHP編程,PHP主要是可以直接嵌入HTML開發(fā)。

          很多新手PHP程序員都會(huì)選擇自學(xué)PHP編程,首先,PHP配置環(huán)境很簡(jiǎn)單,有一鍵生成的開發(fā)集成環(huán)境,比如phpstudy,WampServer等。

          其次,PHP語法簡(jiǎn)單容易掌握,如果你學(xué)過C語言或java編程,你就會(huì)知道PHP不需要記太多的東西,直接嵌入HTML頁面開發(fā)。

          PHP輸出Hello World:

          <!DOCTYPE html> <html> <body> <?php echo "Hello World!"; ?> </body> </html>

          java輸出Hello World:

          public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}

          最后,學(xué)習(xí)PHP編程很快可以進(jìn)入工作狀態(tài)。PHP需要掌握技能并不是很多,開源代碼很多都是直接復(fù)制別人的代碼,所有的PHP源代碼事實(shí)上都可以得到。

          如果你目前正在自學(xué)PHP,這里推薦幾個(gè)php自學(xué)網(wǎng)站:第一PHP社區(qū)(很多技術(shù)問題),PHP中文網(wǎng)(推薦新手教程),CSDN(技術(shù)大神文章,分享技術(shù))、PHPChina開發(fā)者社區(qū)。

          責(zé)任編輯:常青春科技

          HP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHP 獨(dú)特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁。用PHP做出的動(dòng)態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行使代碼運(yùn)行更快。


          發(fā)完之前兩篇文章之后,突然有讀者告訴我沒有學(xué)過PHP希望我發(fā)些PHP的教程,既然有這方面的需求,那必須滿足。

          首先介紹一下PHP語言:PHP是一種免費(fèi)開源的、創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語言,使用非常廣泛。同時(shí),對(duì)于像微軟 ASP 這樣的競(jìng)爭(zhēng)者來說,PHP 無疑是另一種高效率的選項(xiàng)。

          開發(fā)工具一覽

          然后,需要知道的就是PHP的學(xué)習(xí)線路(自我總結(jié)):

          • (1) 熟悉HTML/CSS/JS等網(wǎng)頁基本元素,完成階段可自行制作簡(jiǎn)單的網(wǎng)頁,對(duì)元素屬性相對(duì)熟悉。
          • (2) 理解動(dòng)態(tài)語言的概念和運(yùn)做機(jī)制,熟悉基本的PHP語法。
          • (3) 學(xué)習(xí)如何將PHP與HTML結(jié)合起來,完成簡(jiǎn)單的動(dòng)態(tài)頁面。
          • (4) 接觸學(xué)習(xí)MySQL,開始設(shè)計(jì)數(shù)據(jù)庫。
          • (5) 不斷鞏固PHP語法,熟悉大部分的PHP常用函數(shù),理解面向?qū)ο缶幊蹋琈ySQL優(yōu)化,以及一些模板和框架。
          • (6) 最終完成一個(gè)功能齊全的動(dòng)態(tài)站點(diǎn)。

          所以如果想要深入學(xué)習(xí)PHP至少要掌握的技巧為:HTML基礎(chǔ)(包含HTML/CSS/JS等)、PHP基本語法、數(shù)據(jù)庫基礎(chǔ)等。當(dāng)然,編程學(xué)習(xí)是一個(gè)由淺入深的過程,僅僅初步掌握以上知識(shí)是不夠的,還需要更加深入的學(xué)習(xí)和探究,我相信能看到這里的人都是具備這種精神,或者想要具備這種精神的。

          磨刀不誤砍柴工,在正式學(xué)習(xí)PHP之前,我們要還需要了解一下PHP的開發(fā)工具。我就以windows平臺(tái)為例,簡(jiǎn)單介紹一下PHP 開發(fā)工具的開發(fā)工具:

          • PHP服務(wù)器組件。
          • PHP IDE(Integrated Development Environment,集成開發(fā)環(huán)境)。
          • MySql管理工具
          • 文本編輯器

          PHP服務(wù)器組件非常多包括WampServer、XAMPP、AppServ、phpStudy、phpnow等,我使用的是phpStudy和XAMPP組合,XAMPP集成有Apache、MySQL以及PhpMyAdmin;

          PHP IDE 也是非常多有Zend Studio、Eclipse for PHP、EasyEclipse等;

          MySql管理工具常用的有:Navicat for Mysql、PhpMyAdmin,個(gè)人推薦Navicat for Mysql,不過PhpMyAdmin這工具也不錯(cuò);

          至于常用的編輯器有:Notepad++、editplus、ultraedit等,筆者使用的是Notepad++,畢竟筆者喜歡相對(duì)看得過眼的,哈哈。

          初步介紹的話,先介紹到這里,下一章繼續(xù)。


          主站蜘蛛池模板: 日本精品啪啪一区二区三区| 天天视频一区二区三区| 国产香蕉一区二区精品视频| 国产av夜夜欢一区二区三区| 亚洲AV日韩综合一区尤物| 国产品无码一区二区三区在线蜜桃| 精品熟人妻一区二区三区四区不卡| 国产精品一区二区在线观看| 国产福利91精品一区二区三区| 中文字幕色AV一区二区三区| 一区二区在线免费视频| 国产成人免费一区二区三区| 无码人妻精品一区二区蜜桃| 91一区二区三区四区五区| 无码人妻视频一区二区三区| 国产麻豆精品一区二区三区v视界| 欲色影视天天一区二区三区色香欲 | 精品在线一区二区三区| 99无码人妻一区二区三区免费| 一区二区在线免费观看| 色一乱一伦一图一区二区精品| 国产爆乳无码一区二区麻豆| 夜夜嗨AV一区二区三区| 国产婷婷色一区二区三区| 久久免费国产精品一区二区| 亚洲AV综合色区无码一区爱AV| 亚洲不卡av不卡一区二区| 亚洲A∨无码一区二区三区| 性色A码一区二区三区天美传媒| 久久精品视频一区二区三区| 少妇激情av一区二区| 99久久精品日本一区二区免费| 午夜性色一区二区三区免费不卡视频| 亚洲AV无码一区二区三区人| 亚洲日韩一区二区三区| 国产丝袜无码一区二区视频| 亚洲国产成人久久一区久久| 国产一区二区三区91| 精品无人区一区二区三区在线| 无码人妻精品一区二区蜜桃| 一区二区三区四区电影视频在线观看|