bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

如何解決正則使用不當導致的路徑穿越問題

小編給大家分享一下如何解決正則使用不當導致的路徑穿越問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創新互聯建站自2013年起,是專業互聯網技術服務公司,擁有項目成都做網站、網站建設、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元池州做網站,已為上家服務,為池州各地企業和個人服務,聯系電話:18982081108

 Forst Pattern

題目叫福斯特模式,代碼如下

如何解決正則使用不當導致的路徑穿越問題

漏洞解析

這一關考察的內容是由正則表達式不嚴謹導致的任意文件刪除漏洞, 導致這一漏洞的原因在 第21行preg_replace中的 pattern部分 ,該正則表達式并未起到過濾目錄路徑字符的作用。[^a-z.-_]  表示匹配除了 a字符到 z字符、.字符到 _字符之間的所有字符。因此,攻擊者還是可以使用點和斜杠符號進行路徑穿越,最終刪除任意文件,例如使用 payloadaction = delete&data = ../../ config.php,便可刪除 config.php文件。

preg_replace:(PHP 4, PHP 5, PHP 7)

功能: 函數執行一個正則表達式的搜索和替換

定義mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

搜索 subject中匹配 pattern的部分, 如果匹配成功將其替換成 replacement

##實例分析

本次實例分析,我們選取的是 WeEngine0.8版本。漏洞入口文件為 web/source/site/category.ctrl.php,我們可以看到下圖 14行處調用了 file_delete函數,而這是一個文件刪除相關操作,我們可以看一下該函數的具體定義。下圖是入口文件代碼:

如何解決正則使用不當導致的路徑穿越問題

file_delete這一函數可以在 framework/function/file.func.php文件中找到,該方法功能用于檢測文件是否存在,如果存在,則刪除文件。但是查看上下文發現,程序并沒有對文件名 $file變量進行過濾,所以文件名就可以存在類似 ../這種字符,這樣也就引發任意文件刪除漏洞,file_delete函數代碼如下:

如何解決正則使用不當導致的路徑穿越問題

現在我們在回溯回去,看看 $file變量從何處來。實際上,上圖的 $file變量對應的是 $row['icon']的值,也就是說如果我們可以控制 $row['icon']的值,就可以刪除任意文件。那么我們來看看 $row變量從何而來。該變量就在我們剛剛分析的第一張圖片中( web/source/site/category.ctrl.php文件),該值為變量 $navs中的元素值,具體代碼如下:

如何解決正則使用不當導致的路徑穿越問題

我們再往上看,即可找到 $navs變量的取值情況。可以看到 $navs變量的是是重數據庫 site_nav表中取出的,包含了 iconid兩個字段,具體代碼如下:

$navs = pdo_fetchall("SELECT icon, id FROM ".tablename('site_nav')." WHERE id IN (SELECT nid FROM ".tablename('site_category')." WHERE id = {$id} OR parentid = '$id')", array(), 'id');

現在我們要做的,就是找找看數據庫中的這兩個字段是否可以被用戶控制。我們繼續往前查找,發現了如下代碼:如何解決正則使用不當導致的路徑穿越問題

site_nav表中的數據,對應的是 $nav變量。我們繼續往上尋找 $nav變量,發現 $nav['icon']變量是從 $_GPC['iconfile']來的,即可被用戶控制( 下圖 第21行)。這里的 $nav['icon']變量,其實就是我們文章開頭分析的傳入 file_delete函數的參數,具體代碼如下:

如何解決正則使用不當導致的路徑穿越問題

由于 $nav['icon']變量可被用戶控制,程序有沒有對其進行消毒處理,直接就傳入了 file_delete函數,最終導致了文件刪除漏洞。至此,我們分析完了整個漏洞的發生過程,接下看看如何進行攻擊。

##漏洞驗證

訪問url:http://xxx.xxx.xxx.xxx/WeEngine/web/index.php?c=account&a=display ,點擊管理公眾號:

如何解決正則使用不當導致的路徑穿越問題

找到分類設置,點擊添加文章分類。這里對應的url為:http://xxx.xxx.xxx.xxx/WeEngine/web/index.php?c=site&a=category,實際上表示 site控制器的 category模塊,即對應 category.ctrl.php文件。

如何解決正則使用不當導致的路徑穿越問題

選擇對應的內容,進入 if($isnav)判斷:

如何解決正則使用不當導致的路徑穿越問題

在上傳圖標位置輸入要刪除文件的路徑

如何解決正則使用不當導致的路徑穿越問題

我們建立 delete.txt文件,用于測試任意文件刪除:

如何解決正則使用不當導致的路徑穿越問題

我們點擊刪除時,就會調用 file_delete函數,同時就會刪除掉我們插入到數據庫中的圖片名:

如何解決正則使用不當導致的路徑穿越問題

如何解決正則使用不當導致的路徑穿越問題

這個類型任意文件刪除有點類似于二次注入,在添加分類時先把要刪除的文件名稱插入到數據庫中,然后點擊刪除分類時,會從數據庫中取出要刪除的文件名。

##修復建議

漏洞是沒有對 $row['icon'] 參數進行過濾,可以將文件名內容加入目錄階層字符,造成任意文件刪除漏洞,所以我們要在傳入的參數中過濾"../"等目錄階層字符,避免目錄穿越,刪除其他文件夾下文件。我們在修復中可以過濾掉 $row['icon'] 中的目錄穿越字符,引入我們自定義的一個函數 checkstr 函數。同時 $row['icon'] 只是文件的名稱,并非是一個路徑,因此過濾字符并不會影響到實際功能,對此修復意見我們提供如下代碼:

如何解決正則使用不當導致的路徑穿越問題

結語

看完了上述分析,不知道大家是否對 路徑穿越問題有了更加深入的理解,文中用到的CMS可以從 這里 下載(密碼:hgjm) 下載,當然文中若有不當之處,還望各位斧正。如果你對我們的項目感興趣,歡迎發送郵件到 hongrisec@gmail.com聯系我們。Day6的分析文章就到這里,我們最后留了一道CTF題目給大家練手,題目如下:

// index.php
<?php
include 'flag.php';
if  ("POST" == $_SERVER['REQUEST_METHOD'])
{
    $password = $_POST['password'];
    if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password))
    {
        echo 'Wrong Format';
        exit;
    }
    while (TRUE)
    {
        $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/';
        if (6 > preg_match_all($reg, $password, $arr))
            break;
        $c = 0;
        $ps = array('punct', 'digit', 'upper', 'lower');
        foreach ($ps as $pt)
        {
            if (preg_match("/[[:$pt:]]+/", $password))
            $c += 1;
        }
        if ($c < 3) break;
        if ("42" == $password) echo $flag;
        else echo 'Wrong password';
        exit;
    }
}
highlight_file(__FILE__);
?>
// flag.php
<?php $flag = "HRCTF{Pr3g_R3plac3_1s_Int3r3sting}";?>

以上是“如何解決正則使用不當導致的路徑穿越問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!

網站題目:如何解決正則使用不當導致的路徑穿越問題
當前路徑:http://vcdvsql.cn/article46/pehohg.html

成都網站建設公司_創新互聯,為您提供App設計微信小程序云服務器企業建站網頁設計公司品牌網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設