SongShuA

SongShuA

胸中梦黄粱,手握自在心 一个充满想法的网络安全从业人员 A person with dreams in their heart and the ability to control their own destiny, who is a creative professional in the field of cybersecurity.
github

記一次久草CMS審計

最近隔離閒的無聊,實在沒什麼事情就開始想練習審計

想了想因為一直都非常好奇 h 站的運行模式,於是目標就鎖定在了 h 站的程式上。

這種視頻站的原始碼能教出名字的其實一共也沒幾個,之前還有蘋果和海洋,現在好像這兩個已經因為國內打擊盜版而死亡(轉入地下)了。所以我其實也就只知道剩下的久草了。

說實話以前我以為久草也是視頻站程式,只不過被巧妙的利用罷了。然而當我第一次打開他的官網論壇的時候就被震驚了。

光明正大的 ghs

1013745319

(本圖為官方提供模板)

不管了,把原始碼下下來開始審計

這裡下了最新的版本

1538000121.png

│─adminx //後台目錄
│─assets //後台樣式表
│─class //後台欄目
│─Jccms_json //存儲數據
│─JCSQL //視頻數據
│─lib //數據模塊
│─static //播放器文件
│─template //模板
│─index.php //入庫文件

(官方提供的結構說明)

拿到原始碼,放到 phpstudy 裡,首先去安裝,然而沒有找到常見的 install 目錄。看了看說明發現根本就不用安裝,這個時候就疑惑了。不用安裝,那它的數據是存在哪裡的呢?

直接訪問首頁,發現視頻什麼的都有了,猜測是直接向遠程獲取的(這也解決了視頻存儲問題,我就說那些小電影站不可能把文件全放本地)

開始幹

首先用 Seay 審計打開

先自動審計一下,按照預置規則來,應該不會漏下什麼

1511678838.png

首先要找漏洞,我們就要找 “大” 的。所以理所當然的找前台漏洞,想了想這網站的性質來說也不會有什麼交互,直接找注入吧。找了一會發現整個程式根本就是無 SQL 化。SQL 注入扑街~~

不過在找到時候發現了它用戶認證的方式

/JCSQL/Admin/Security/AdminUser.php

這個文件裡存放了用戶帳號密碼,充當了數據庫的作用。以文本形式保存不會出現 SQL 注入的風險,以 PHP 的形式存在,又能避免被下載。妙啊~

34552043.png

然後看看你第三行,顧名思義是 IP 過濾。

844944929.png

後台裡還真就有這個功能

那麼問題來了,當我們修改信息的時候其實就是讀寫了文本。而文本又是以 php 存在的。那麼,如果我們插入適當的 payload,其實就可以直接形成任意文件讀寫。好了,我們再來看一看。IPPASS 的傳值

2823887452.png

好的,直接字符串寫入了。並沒有其他的安全函數進行過濾。這個程式本身存在一個過濾函數。

經典防護
3779957410.png

(好像還有一個什麼函數,結果寫文章時找不到了)

那麼我們來利用這個任意文件讀寫漏洞。我們的目標是 AdminUser.php 文件,首先通過瀏覽器訪問,看看是否 403 之類的。訪問後出現空白,說明可以任意用戶訪問,但是無顯示內容(代碼就三行,也真沒顯示的東西)

回到後台,在白名單處填寫我們的 payload

結合代碼原來的樣子,我們應該閉合第一個單引號,然後插入我們的代碼,再閉合後面的單引號和括號之類的。

大致來說就是這麼個格式');payload; //'127.0.0.1

加入我們想寫入一個文件:

');$myfile = fopen ("1.txt", "w") ;$txt = "奧裡給";fwrite ($myfile, $txt); //'127.0.0.1

寫入完成後再訪問一下 AdminUser.php,讓代碼執行。然後訪問同目錄下的 1.txt 即可看到奧力給

到這裡基本就完了,因為這個 cms 太小了,結構簡單並且巧妙,沒什麼好玩的了。

最後再來一個反射 xss

自動審計搜索出三個 XSS 可疑點

3054470100.png

我們點進去第一個看一看

3326636597.png

可以看到再 script 的 src 裡直接輸出了 GET 參數 Play

那麼同樣的直接構造即可,姿勢太多了

訪問這個文件的時候只要加上參數 XXXX.PHP?Paly=payload

即可

 

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。