項目10:Stapler-1
##Nmap信息收集
---靶機IP:192.168.95.156

---全端口掃描,這里發(fā)現(xiàn)端口開放的挺多的(但是一些端口是關閉了)

---這里Ftp存在20和21兩個端口:端口21主要用于傳輸控制信息,用于接收和傳送FTP指令
---端口20主要用于傳輸數(shù)據(jù),包括數(shù)據(jù)的上傳和下載。
----在使用FTP傳輸數(shù)據(jù)時,客戶端會首先使用21端口進行用戶認證
----認證通過后,服務器會開啟一個20的端口進行數(shù)據(jù)傳輸
---這里FTP存在匿名登陸

---SSH端口支持RSA、ECDSA和ED25519三種類型的密鑰

---域名系統(tǒng)(英文:Domain Name System,縮寫:DNS)主要用于域名與 IP 地址的相互轉換,以及控制因特網的電子郵件的發(fā)送
---dns-nsid:支持DNS服務器信息傳輸協(xié)議,可以用于獲取DNS服務器的軟件版本等信息。
---bind.version: dnsmasq-2.75:DNS服務器軟件的詳細版本信息,即dnsmasq版本2.75
---dnsmasq是輕量級的DNS轉發(fā)器和DHCP服務器,常用于家用路由器和小型網絡環(huán)境中

---這里80/12380可能是Web頁面
---3306是MySQL的遠程登陸端口,可能使用MSF進行MYSql提權
---Network Time Protocol(NTP)是用來使計算機時間同步化的一種協(xié)議,可以提供高精準度的時間校正(LAN上與標準間差小于1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協(xié)議攻擊。NTP的目的是在無序的Internet環(huán)境中提供精確和健壯的時間服務
---NetBIOS協(xié)議是一種在局域網上的程序可以使用的應用程序編程接口(API),為程序提供了請求低級服務的統(tǒng)一的命令集,作用是為了給局域網提供網絡以及其他特殊功能
---NetBIOS可以使用的四種類型的SMB(賦予Windows計算機本地文件重定向功能以便進入遠端文件系統(tǒng))
命令:話路控制命令,用于建立或終止與遠程計算機上某個資源的邏輯連接
文件命令:用于遠程文件訪問
打印機命令:用于傳送數(shù)據(jù)給一個遠程打印隊列,同時也檢查該打印隊列中各項任務的執(zhí)行狀態(tài)
消息命令:用于實現(xiàn)計算機之間的消息傳送
---如果是Windows環(huán)境下,smb可能存在永恒之藍漏洞(445端口)
---666端口,下面因該是一個jpg的圖片(可以訪問枚舉)

---操作系統(tǒng)是Linux系統(tǒng)
---SMB是一種用于文件和打印共享的網絡通信協(xié)議,通常用于Windows系統(tǒng)
---smb-os-discovery:表示靶機操作系統(tǒng)是Windows 6.1,但實際上是Samba 4.3.9-Ubuntu
---Samba是兼容Windows網絡協(xié)議的開源實現(xiàn),允許Linux與Windows之間共享文件和打印等
---smb2-security-mode:顯示了SMBv2協(xié)議的安全模式信息。
---Message signing enabled but not required:表示SMBv2消息簽名已啟用,但不是必需的。消息簽名是一種加密措施,用于防止SMB通信被中間人攻擊和篡改
---Computer name: red:表示主機的計算機名稱是"red"
NetBIOS name: RED:表示NetBIOS名稱是"RED"。
NetBIOS user: <unknown>:未知的NetBIOS用戶

##FTP匿名登陸

---查看內容收集到2個用戶名(可以確定是Ftp賬號):Elly? John
---提示ftp里面還有信息,但是沒有密碼,先嘗試Web頁面枚舉信息

##Web頁面訪問
---首頁和前端源代碼都沒有發(fā)現(xiàn)信息

---dirb爆破敏感文件和目錄,發(fā)現(xiàn)2個文件

---wget下載下來看看,隱藏文件需要使用ls -a

---查看cat .bashrc(這是一個Linux系統(tǒng)用戶的 .bashrc
文件,它是在用戶登錄到系統(tǒng)后,每次打開一個非登錄的交互式shell(例如打開一個終端)時自動執(zhí)行的腳本。該文件包含了一些配置和別名,用于個性化用戶的shell環(huán)境)
---可以理解成環(huán)境變量的配置信息(bash),沒有什么特別的內容
---查看.profile
---這個文件主要用于設置umask、加載用戶的 .bashrc
文件以及將用戶的 ~/bin
目錄添加到環(huán)境變量 PATH
中,以提供更好的用戶體驗和方便性
---總的來說,這兩個沒有什么有用的信息
##666端口的DNS協(xié)議(可能存在一張jpg圖片)
---nc訪問666端口(這里是TCP協(xié)議,所以只能nc訪問),發(fā)現(xiàn)是一個zip文件
---至少需要zip2.0版本才能解壓

---查看unzip的版本發(fā)現(xiàn)是6.0,解壓發(fā)現(xiàn)是一張jpg的圖片

---圖片內容,看到了分段錯誤,可能會有緩沖區(qū)溢出

---binwalk和exiftool分析圖片(沒有什么有用的信息)
---信息1:如果你正在讀這篇文章,你應該得到一個Cookie
---信息2:IPTCDigest不是最新版本。XMP可能不同步

##Mysql的3306端口嘗試
---這里提示密碼錯誤,但是因該可以使用root進行遠程登陸

##12380的Web頁面信息收集
---訪問頁面,沒有什么有用的信息

---查看前端源代碼,收集到用戶名:Zoe ,加上之前的Elly? John

---復制到base64.txt文件,進行base64解碼發(fā)現(xiàn)是jpeg圖片

---瀏覽器打開是這樣,沒有什么有用信息
------使用binwalk\exiftool\strings解析均沒有獲取什么信息

---dirb進行掃描,什么也沒有掃描到

##漏洞掃描
---AWVS進行漏洞掃描192.168.95.156:12380/什么都沒有掃描到

---采用xray webscan --url http://192.168.95.156:12380/ --html-output urlbg.html
---這也沒有發(fā)現(xiàn)什么有用的東西

#使用nikto進行掃描
---Nikto是一個基于Web的漏洞掃描器,用perl語言編寫的開源軟件,目標是進行漏洞掃描
---去尋找已知有名的漏洞,能在230多種服務器上掃描出2600多種有潛在危險的文件、CGI 及其他問題,它可以掃描指定主機的 WEB 類型、主機名、特定目錄、COOKIE、特定 CGI 漏洞、返回主機允許的 http 模式等
---掃描網站,但是我這里什么也沒有掃描除了(可能是我的nikto版本太高了)

---在網上找了一張別人的2.1.6版本的nikto
--看到這里有SSL,說明是SSL訪問,也就是HTTPS,http訪問其他的頁面會重定向

---訪問告訴我們這里有一個xss漏洞

---這里是一個WordPress頁面的網站,以及之前的用戶名:john
---思路1.AWVS掃描 2.Xray掃描 3.WpScan掃描

---這里是一個PHPmyadmin的界面,root/root登陸不了
---思路1.hydra/BurpSuite爆破 2.特殊目錄識別PHPmyadmin版本嘗試萬能密碼繞過

---采用dirb再次爆破https://192.168.95.156:12380/blogblog/

#WordPress漏洞掃描
----AWVS掃描發(fā)現(xiàn)多個漏洞,結合之前信息可以看出WordPress是4.2.2版本

---使用Xray掃描沒有發(fā)現(xiàn)漏洞,看來Xray不適合掃國外的

---使用wpscan漏洞掃描
---wpscan常用主要選項
---其它選項
-----disable-tls-checks? ---因為會受到SSL對等證書/SSH錯誤臨時用法
---因為這里是Https協(xié)議,所以要加disable-tls-checks繞過
---發(fā)現(xiàn)存在一些SQL注入、文件上傳、XSS、CSSRF等漏洞

---使用--enumerate 枚舉用戶名,u? 枚舉用戶名,默認從1-10
–disable-tls-checks #禁用SSL/TLS證書驗證
---這里發(fā)現(xiàn)了文件上傳目錄和用戶登陸目錄
---https://192.168.95.156:12380/blogblog/wp-login.php?action=register
---https://192.168.95.156:12380/blogblog/wp-content/uploads/

---發(fā)現(xiàn)這里存在一些用戶名,

---訪問upload目錄發(fā)現(xiàn)存在文件上傳

---在插件目錄下,advanced_video_embed.php文件存在漏洞
---注意:WordPress的漏洞主要源于插件

---也可以使用wpscan的--plugins-detection主動掃描存在哪些插件
---這里存在目錄泄露漏洞,所以可以不用掃描插件,如果不存在則需要wpscan掃描插件
---插件越老越容易出現(xiàn)漏洞

---先查看查看的readme,發(fā)現(xiàn)版本是1.0

---在谷歌搜索,發(fā)現(xiàn)EDB-ID:39646

---searchexploit,發(fā)現(xiàn)插件存在文件包含漏洞

---查看exp(注意:這段代碼是Python 2 的代碼。urllib2
是用于處理URL請求的模塊。在 Python 3 中,urllib2
被拆分成了 urllib.request
和 urllib.error
等模塊)
---file_get_contents
是一個在PHP中用于讀取文件內容的函數(shù)。它的作用是將一個文件的內容讀取為一個字符串并返回
---這里$image_data = file_get_contents($thumb);就會讀取傳參的內容(構造惡意路徑)
---PHP文件包含的函數(shù)

---由于這里是HTTPS協(xié)議,所以exp里面需要添加
ssl._create_default_https_context
: 用于創(chuàng)建一個默認的 HTTPS 上下文(SSLContext)對象。在Python 3 中,使用urllib.request.urlopen
。發(fā)起 HTTPS 請求時,會默認使用這個上下文對象來建立安全連接。這個上下文對象會驗證服務器的證書,如果服務器的證書無效或有問題,連接將會被拒絕ssl._create_unverified_context
: 用于創(chuàng)建一個不驗證服務器證書的 HTTPS 上下文(SSLContext)對象。在某些情況下,你可能會遇到服務器的 SSL 證書無法被正常驗證的情況,例如自簽名證書或者證書鏈上的某個證書未被信任
---構建exp如下:
---python2執(zhí)行exp

---發(fā)現(xiàn)在upload目錄下生成一張圖片
---說實話這里我也不知到為什么會在這里生成一張圖片

---去exploit-db上查看下源碼(/inc/classes/class.avePost.php) Line 57:-——Line 78)
---這里會將thumb的內容獲取,然后寫入jepg的圖片內

---將圖片下載下來,--no-check-certificate? 忽略證書

---file檢驗文件,獲取到數(shù)據(jù)庫的用戶名root和密碼plbkac
---這里還可以利用文件包含,讀取/etc/passwd和/etc/shadow

---訪問https://192.168.95.156:12380/blogblog/wp-login.php?action=register
---思路 1.弱口令或者密碼爆破? 2.PHP的strcmp繞過? 3.SQL注入
---弱口令admin不能登陸,爆破可以使用之前收集的用戶名使用hydra和Burp爆破
---但是這里是WordPress后臺登陸,可以使用wpscan爆破密碼

---使用wpscan爆破用戶密碼(-P指定爆破的字典)
---這里爆破出來4個用戶名和密碼

---但是我們之前獲取到了數(shù)據(jù)庫的密碼(root/plbkac)
---而且3306端口開放,可以先登陸數(shù)據(jù)庫查看(-h遠程登陸)

---這里發(fā)現(xiàn)一些用戶名和密碼

---我們需要將使用awk命令拆分信息

---復制粘貼到1.txt,通過awk篩選
---NR > 2
確保只從第三行開始打印數(shù)據(jù),以避免打印表格的標題行
---而 length($3) > 10
則檢查第三個字段的字符串長度是否大于10,去除空格行
---效果如下

---同樣的將用戶名寫入:username.txt

---hash-identifier識別數(shù)據(jù)庫加密,發(fā)現(xiàn)是MD5加密

---采用john去爆破(注意:不要有空格)
---爆破出來一些密碼,挨個嘗試
---發(fā)現(xiàn):john incorrect可以成功登陸

---當然,也可以在~/.john的john.pot查看爆破的歷史記錄

---密碼登陸后,點擊插件>添加新插件>上傳插件
---發(fā)現(xiàn)這里支持ZIP格式的文件上傳

##PHP文件上傳的五種方法
---1.php-reverse-shell.php?? 2.weevely ? 3.webacco
---4.php/meterpreter_reverse_tcp??? 5.mysql INTO OUT文件上傳
---其它:菜刀、冰蝎、蟻劍、哥斯拉
#方法1:php-reverse-shell.php
---修改反彈shell的IP地址

---上傳PHP文件成功,但是這里目錄因該是在之前插曲目錄

---emmm這里一點文件上傳的檢驗都沒有

---直接訪問,反彈shell成功,發(fā)現(xiàn)是python2的WebShell

#方法2:weevely
---weevely創(chuàng)建一個密碼為passdayu,名為dayu.php的shell
---將dayu.php上傳

---采用weevely連接:weevely URL 密碼(確實好用,但是只支持PHP)

---相對于php-reverse-shell.php的好處是,weevely的代碼經過混淆
---但是只混淆了傳參的變量,沒有混淆函數(shù)名,很容易能夠被黑名單檢測出來
#方法2:webacoo
---:-g 生成后門代碼(需要-o);-o OUTPUT 生成的后門輸出文件名

---這里還是混淆的變量傳參,容易被檢測
---webacoo連接后門:-t 建立遠程“終端”連接(需要-u);-u URL 后門 URL
---沒有成功,emmmm真垃圾

##方法3:php/meterpreter_reverse_tcp
---p指定payload,-f生成類型:RAW是未經處理、也未經壓縮的格式
---這個后門和其它一句話不同的是,這是爭對MSF框架的

---msfconsole進行監(jiān)聽利用
---比起普通的一句話,優(yōu)點是可以使用MSF的強大模塊

#方法5:mysql INTO OUT文件上傳???? INTO OUT(寫)
---遠程登陸靶機Mysql,發(fā)現(xiàn)是否具有文件導入和導出權限
---secure_file_priv用來限制load dumpfile、into outfile、load_file()函數(shù)在哪個目錄下?lián)碛猩蟼骱妥x取文件的權限
---secure_file_priv的值為null ,表示限制mysqld 不允許導入|導出
---secure_file_priv的值為/tmp/ ,表示限制mysqld 的導入|導出只能發(fā)生在/tmp/目錄下
---secure_file_priv的值沒有具體值時,表示不對mysqld 的導入|導出做限制
----當然,這里也可以使用UDF進行提權(MSF直接提權)

---使用 into outfile將PHP的一句話寫入Upload目錄
---注意:shell_exec是系統(tǒng)命令執(zhí)行函數(shù)(也可以使用反引號)
---然后在upload目錄訪問,并且通過GET傳參進行系統(tǒng)命令執(zhí)行

---系統(tǒng)執(zhí)行Python的一句話反彈shell到Kail(GET傳參)
---在Kail監(jiān)聽端口,接受到反彈shell
---并且使用python的pty和bash的stty進行SHEll切換

##提權信息收集
---uname/lsb_release -a進行內核/發(fā)行版本信息收集

---上傳linpeas.sh腳本進行分析,這里存在系統(tǒng)版本漏洞

---這里發(fā)現(xiàn)peter用戶存在Sudo的提權(可以拿之前的密碼進行SSH爆破)

---這里SSH允許空密碼(可以結合peter用戶提權)

---這里的腳本具有寫權限(環(huán)境變量)

---這里是SUID可能出現(xiàn)的漏洞(find/cp/vim之外的)

#總結
---1)Linux version 4.4.0-21-generic
---2)存在一些賬戶信息:peter存在sudo提權
---3)ssh:PermitEmptyPasswords yes(允許空密碼登陸)
---4) path可寫入:/usr/local/sbin/cron-logrotate.sh
#內核系統(tǒng)漏洞提權
----根據(jù)內核信息:searchsploit Linux Kernel 4.4.0

---根據(jù)版本信息和內核信息一起
---注意區(qū)分是32位系統(tǒng)還是64位系統(tǒng)

---也可以使用谷歌搜索最方便

---linux/local/39772.txt可以利用,但是exploit-db里面是txt格式
---直接去github:https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip(但是已經找不到了404)
---當然也可以使用cve-2021-4034-poc.c,直接通殺

#SSH登陸內核提權
---進入/home目錄,使用grep -rn "ssh"遞歸搜索包含ssh的文件
---這里分別獲取到peter/JZQuyIN5和JKanode/thisimypassword

---這個文件因該是JKanode用戶的bash的歷史記錄

---直接使用ssh peter@10.211.55.37
JZQuyIN5進行登陸

---但是這里是ZSH的shell,可以在ssh登陸的時候,命令執(zhí)行切換bash

#計劃任務寫入提權
---查找計劃任務
---我這里2>/dev/null失效(因該是環(huán)境變量)

---在cat /etc/cron.d/logrotate里面,存在每5分鐘執(zhí)行一次的腳本
---計劃任務的路徑:crontab -l(當前用戶的計劃,沒有什么用)
----/var/spool/cron/用戶名(存在各個用戶的計劃任務,但是查看不了)
---/etc/cron.d目錄下的文件
---名為/var/log/cronlog文件
---這里每五分鐘以root執(zhí)行一次:/usr/local/sbin/cron-logrotate.sh

---可以看到cron-logrotate.sh文件,其它用戶也具有寫權限

---插入代碼
---將/bin/bash復制到/tmp目錄,賦予SUID權限
---將 /tmp/exploit
的所有者更改為 root
,所屬組也更改為 root
---發(fā)現(xiàn)寫入,但是執(zhí)行后沒有提權成功
---這里需要寫入dash,然后在/tmp使用dash -p直接進入root(但是我失敗了)

##smbd拿Shell
---nmap全端口掃描,發(fā)現(xiàn)139端口開放是smbd協(xié)議(局域網文件傳輸)
---Samba使Linux系統(tǒng)充當文件服務器,以與Windows客戶端共享文件和資源:
文件共享: Samba允許將Linux文件系統(tǒng)上的文件和目錄共享給Windows客戶端,就像在Windows文件共享中一樣。這使得用戶能夠通過網絡訪問和編輯位于Linux服務器上的文件。
打印共享: Samba還支持在Linux服務器上共享打印機,使Windows客戶端能夠通過網絡連接和打印到這些共享的打印機。
用戶身份驗證: Samba允許在Linux系統(tǒng)上驗證Windows用戶,這意味著用戶可以使用其Windows憑據(jù)登錄Linux共享。
域控制器: Samba還可以充當Windows域控制器的角色,使得Linux系統(tǒng)能夠在Windows域中提供用戶身份驗證、組策略等功能
---NetBIOS(Network Basic Input/Output System)是一種早期的計算機網絡通信協(xié)議,用于在局域網(LAN)中進行數(shù)據(jù)交換,后來被微軟采納并集成到Windows操作系統(tǒng)中
命名服務: NetBIOS允許計算機在網絡上使用16個字符的名稱進行標識。這些名稱用于識別計算機、打印機和共享資源。每個計算機可以有一個主機名和若干服務名。
會話服務: NetBIOS會話服務允許計算機
數(shù)據(jù)報服務: NetBIOS數(shù)據(jù)報服務允許計算機通過數(shù)據(jù)報(獨立的消息塊)進行通信。這種通信方式類似于UDP協(xié)
名稱解析: NetBIOS使用名稱解析來將人類可讀的計算機名映射到網絡上的IP地址。這有助于實現(xiàn)
---然而,隨著網絡技術的發(fā)展,NetBIOS已經逐漸被更現(xiàn)代的協(xié)議和技術所取代,如TCP/IP、DNS(Domain Name System)和Active Directory
---NetBIOS協(xié)議存在一些安全漏洞,因此在更安全的網絡環(huán)境中,通常會采用更安全和更現(xiàn)代的通信方式

---使用Enum4linux信息收集:139的Samba信息
---(用于枚舉來自Windows和Samba系統(tǒng)的信息的工具)
---這里發(fā)現(xiàn)一些文件,有2個目錄可以進去:
---kathy和tmp兩個信息非?;钴S!可以用smbclient連接!

---這里收集到一些用戶信息

---復制粘貼到name.txt,采用cut命令拆分
---cut 命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)、字符和字段輸出
-d:分隔符,按照指定分隔符分割列。與 -f 一起使用
-f:依據(jù) -d 的分隔字符將一段信息分割成為數(shù)段,用 -f 取出第幾段的意思(列號,提取第幾列)
-c:以字符 (characters) 的單位取出固定字符區(qū)間
-b:以字節(jié)為單位進行分割
---這里先以/拆分一次,然后使用空格再拆分一次
---將通過篩選剔除后,獲得正常的用戶名:user_dayu.txt

---根據(jù)這個用戶名當成字典進行SSH爆破
---發(fā)現(xiàn)一個用戶名和密碼:SHayslett

#smbclient訪問文件夾
---SMB與CIFS為服務器通信協(xié)議,常用于Windows95/98/NT等系統(tǒng)。smbclient(samba client)可讓Linux系統(tǒng)存取Windows系統(tǒng)所分享的資源
----顯示服務器所有資源,不用輸入密碼直接回車

---指定路徑登陸,發(fā)現(xiàn)一個todo-list.txt文件和wordpress的源碼
---這里可以進行代碼審計,---打開todo-list.txt發(fā)現(xiàn)沒有很重要的信息

##Linux永恒之藍漏洞
---搜索關鍵詞:searchsploit Samba 4.3.9
--查看提示需要用到MSF(CVE-2017-7094)
---影響范圍:所有介于 Samba 3.5.0 ~ 4.6.4之間的版本,(4.6.4/4.5.10/4.4.14版本)不受影響

---msf嘗試搜索永恒之藍模塊

---直接提權成功

##知識點總結
---1.Nmap主機發(fā)現(xiàn)、端口掃描、端口版本掃描
---2.Ftp匿名登陸、80端口頁面獲取用戶名
---3.nc訪問DNS的666端口,下載文件,file識別文件,unzip解壓文件
---4.binwalk、exiftool、strings查看圖片隱藏文件
---5.nikto、dirb掃描Web敏感目錄,AWVS、Xray、WpScan掃描漏洞
---6.wpscan的disable-tls-checks繞過https,-e u 枚舉用戶名,-e u -P指定字典爆破用戶密碼
---7.WordPress的wp_content目錄存在文件路徑泄露,大部分高危漏洞在插件里面
---8.WordPress的advanced_video插件文件包含漏洞,$image_data = file_get_contents($thumb)讀取傳參內容,然后讀取網站的Config文件獲取數(shù)據(jù)庫用戶名和密碼(也可以讀取/etc/passwd和/etc/shadow)
---9.Python2代碼,繞過HTTPS協(xié)議
---9.根據(jù)root和密碼遠程登陸mysql,獲取用戶名和密碼
---10.awk和cut命令對于每行打印進行拆分
---11.也可以基于收集的用戶名和密碼,爆破ssh、ftp、mysql
---12.文件上傳獲取WebShell:weevely,php-reverse-shell.php,php/meterpreter_reverse_tcp,mysql INTO OUT文件上傳(寫)
---13.Linpeas.sh信息枚舉:1)Linux version 4.4.0-21-generic2)存在一些賬戶信息:peter存在sudo提權3)ssh:PermitEmptyPasswords yes(允許空密碼登陸)4) path可寫入:/usr/local/sbin/cron-logrotate.sh
---14提權:Linux的內核|版本提權、ssh爆破+sudo提權、MySQL的UDF提權、計劃任務提權(/etc/cron.d/logrotate,/var/log/cronlog)、Linux永恒之藍提權
---15.smbclient命令登陸訪問samba,enum4linux -a枚舉samba信息
