首頁 > 軟體

BlueCms程式碼審計

2021-05-21 12:30:38

0×00:前言

對BlueCmsv1.6進行程式碼審計。雖然平時打ctf較多,但決定自己上限的總歸是程式碼的能力,所以才有了下面這篇文章。審計處漏洞如下:

sql注入漏洞XSS漏洞檔案包含/上傳程式碼執行漏洞

0×01:全局配置分析

1. 關鍵字GET,POST,看過濾情況

2. 看都包含了哪些配置檔案

直接轉義,所以可以用單引號或者引號閉合的sql注入直接不考慮

$_SERVER被遺漏,所以可以從這方面下手

0×02:審計過程

SQL注入第一處:

路徑:/bluecms_1.6/uploads/comment.php

配置檔案中沒針對$_SERVER進行過濾,直接去找關於處理ip的方法

找一下在哪有呼叫

成功延時

1' and sleep(10) and '1' = '1

第二處:

路徑:/uploads/ad_js.php

未對輸入內容過濾,可通過聯合查詢直接注入

XSS

第一處:

路徑:bluecms_1.6/uploads/user.php

測試了一下,只有郵件地址可以xss

<script>alert('XSS')</script>

配置檔案中可以看到並未對xss進行過濾

第二處:

路徑:uploads/admin/ad.php

很多位置都有xss,不一一例舉了

檔案包含

路徑:uploads/user.php

這個漏洞需要php版本開到5.3.4以下,高版本已經修復了截斷漏洞

pay=/../../robots.txt........................................................... ................................................................................ ................................................................................ ................................................................................ ................................................................................ ......

pay=/../../robots.txt%00

注意這裡,這個用的是include,所以我們寫圖片馬也能直接引入進來執行,配合檔案上傳可以getshell

檔案上傳

路徑:/bluecms_1.6/uploads/user.php

黑盒一手,發現未對內容過濾,這樣可以配合phar打組合拳,去看一下上傳方面的過濾

直接一手白名單,那沒事了....現在只考慮有沒有地方能觸發phar,下面貼一手支援的圖

emmm,找了一下,大多數路徑都在前面拼接了BLUE_ROOT,沒辦法讓其執行phar://這種形式emmmmm找都找了...自己測一下玩玩了,加入如下程式碼測試

構造poc如下

<?php

class A{

}

$file = new A();

$phar = new Phar('phar.phar');

$phar->startBuffering();

$phar->addFromString('test.txt','text');

$phar->setStub('<script language="php">__HALT_COMPILER();</script>'); $phar->setMetadata($file);

$phar->stopBuffering();

執行成功觸發phar後觸發phpinfo頁面

任意檔案刪除

第一處:路徑:bluecms_1.6/uploads/user.php

sql語句會報錯,利用條件比較苛刻(咱也不知道怎麼整,反正就是菜),但是如果能利用就可以直接來一 手任意檔案刪除或者phar反序列化

第二處:路徑:bluecms_1.6/uploads/publish.php

成功刪除

程式碼執行

第一處 路徑:/bluecms_1.6/uploads/include/smarty/Smarty.class.php

反向跟進_eval方法

跟進smarty_core_process_cached_inserts方法

跟一下smarty_core_read_cache_file看看怎麼處理,我們需要他返回True

這個不能為空

分別跟進 _get_auto_id、_get_auto_filename、_read_file函數

0×03:總結

不得不說,如果程式碼能力弱,安全行業想走的更遠會很難,因為ctf、hvv都需要有深厚的程式碼審計能力。go語言的程式碼審計也在慢慢興起,路漫漫其修遠兮吾將上下而求索。


IT145.com E-mail:sddin#qq.com