记一次对HTB:seventeen的渗透测试

举报
亿人安全 发表于 2023/03/31 10:06:53 2023/03/31
【摘要】 信息收集端口扫描使用nmap扫描之后,发现22,80,8000端口开放。基于OpenSSH和Apache版本,主机可能运行的是 Ubuntu 18.04 访问80端口,该网站适用于教育类型的公司:目录爆破使用feroxbuster工具对其目录进行爆破。没找到有用的东西。子域名枚举使用wfuzz对主域名进行子域名探测,发现存在exam子域。访问子域名。发现该站点是托管考试管理系统。单击“adm...

信息收集

端口扫描

使用nmap扫描之后,发现22,80,8000端口开放。

基于OpenSSH和Apache版本,主机可能运行的是 Ubuntu 18.04

访问80端口,该网站适用于教育类型的公司:

目录爆破

使用feroxbuster工具对其目录进行爆破。

没找到有用的东西。

子域名枚举

使用wfuzz对主域名进行子域名探测,发现存在exam子域。

访问子域名。发现该站点是托管考试管理系统。

单击“admin”链接转到/admin/login.php,它只是弹出一个消息框:

继续对子域名的目录进行探测。

漏洞利用

SQL注入漏洞

使用searchsplouit搜索历史漏洞。

通过历史漏洞搜索,发现其payload:poc=take_exam&id=1' AND 4755=4755 AND 'VHNu'='VHNu

经过测试之后,发现该版本还存在sql注入。

使用sqlmap枚举数据库

首先判断注入点。用法:sqlmap -u'http://exam.seventeen.htb/?p=take_exam&id=1'-p id --technique B --batch

接下来,使用--dbs列出数据库。

列出数据库里面的表。

接着读出表里面的用户。

在表里面,发现都指导了这个../oldmanagement/files/文件目录。

访问一下试试,发现是一个登录框。

接着继续读数据库里面的表。发现存在user表。

然后读里面的内容。发现了一些登录用户。

继续读下去。

密码解密

可以使用CrackStation:https://crackstation.net/来进行解密

或者使用somd5解密。密码为:autodestruction使用id和密码成功登录进行。

命令执行漏洞

发现是一个上传界面。我上传了一个php木马。

里面有一个pdf,看看里面有什么东西可以利用。是一份成绩单。

在里面发现了一个新的域名。

添加到/etc/hosts,然后访问看看。

查看版本信息

访问/CHANGELOG可以判断其版本,或者使用f12查看。

源代码分析

下载源代码,对其进行代码审计一下看看下载处的代码逻辑。

download.php很简单:

storage它从数据库的表中获取一行,并从结果中获取文件名。它返回readfile(files/[stud_no]/[filename])。

所以它应该在/var/www/oldmanagement/files/31234/0xdf.php.需要一个目录来放在我的上传文件旁边。download.php使用store_id获取路径,但也许我可以/files/31234直接访问

在这个文件夹中运行feroxbuster找到一个papers目录!

访问之后,发现提示报错。

首先上传一个php文件,然后将文件名更改为.htaccess

getshell

然后访问上传的php木马文件,成功getshell。

使用script /dev/null -c bash进行外壳升级

主机信息收集

继续翻一下,机器里面的这些文件,找一些有用的东西。

发现数据库的登录密码。

$dBUsername = "root";

$dbPassword = "2020bestyearofmylife";

在mastermailer/config/config.inc.php我会找到这个连接字符串。

在oldmanagement/admin/conn.php另一个连接中,也含有一些信息。

ssh登录

使用上面获取到的登录密码进行登录。

获取user.txt

登录之后,发现存在user.txt

使用ls -la 判断当前用户的权限。

邮件提示

发现一个邮件,有 kavi 的邮件/var/mail:

邮件提到了一个新项目、一个私有注册表(有一些问题)和一个旧记录器被替换为loglevel(一个公开可用的 JavaScript记录应用程序)

查看监听端口,有一堆东西只在 localhost 上监听:

通过一些研究,我可以将其余这些端口分为:

  • Roundcube 的邮件服务器 - 110、143、993、995
  • 用于各种网络服务器的 MySQL - 3306
  • 域名系统 - 53
  • 网站转发到 Docker - 8081 (exams), 8082 (oldmanager)
  • 未知 - 4873,但在.npm上面的文件夹中引用。

老记录器

该电子邮件提到了“旧记录器”,并提升了“注册表”。

然后使用npm在本地注册表中搜索哪些日志记录模块。

运行npm install并将其指向本地存储库

将其下载到当前目录,从而创建一个node_modules目录。在那里,我看到了一堆模块,包括db-logger:

文件分析

该模块由一个 JavaScript 文件和一个package.json

该package.json文件描述了该模块

在js文件里面翻到了登录密码。

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "IhateMathematics123#",
  database: "logger"
});

function log(msg) {
    con.connect(function(err) {
        if (err) throw err;
        var date = Date();
        var sql = `INSERT INTO logs (time, msg) VALUES (${date}, ${msg});`;
        con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("[+] Logged");
        });
    });
};

module.exports.log = log

继续使用ssh进行登录。、

使用ls -la 查看有那些文件。

有一个.npmrc文件,它配置如何npm运行,将默认注册表设置为本地注册表:

权限提升

kavi 用户也可以访问/opt/app

创建模块步骤:https://docs.npmjs.com/creating-node-js-modules

恶意的js模块

使用npm login,发现是注册被禁用。

我在上面注意到有一个.npmrc文件/home/kavi设置了这个用户使用的存储库。我将尝试将其更改为指向我的主机,然后让 Verdaccio 的实例在那里提供恶意程序包。

创建节点模块。

创建一个loglevl目录,然后使用npm init 开始本地的模块

创建一个loglevel目录,然后编辑index.js文件。

本地搭建

使用docker,本地搭建节点模块

注册模块

运行docker pull verdaccio/verdaccio(以 root 身份、使用sudo或使用我的用户在docker组中)以获取容器映像的副本。

发布模块

设置.npmrc文件

运行文件

运行脚本,sudo /opt/app/startup.sh

成功获得shell。

获取root.txt

总结:

首先通过信息收集中的常规操作,先端口扫描,然后继续目录爆破,接着子域名枚举。发现一个登录页面,通过历史漏洞搜索,发现其存在sql注入漏洞,然后使用sqlmap枚举数据库。接着登录之后,发现可以上传文件,上传之后进行命令执行,命令执行获取shell之后,进行主机信息收集,搜索一些登录信息,然后ssh远程登录。登录之后,获取user.txt,接着发现一封邮件,然后根据提示,发现了node.js模块,然后进行恶意js的模块利用进行权限提升,接着获取root.txt。该靶机为困难模式的靶机,在gethsll的时候,有2种方法,权限提升到最高权限有3种方法。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。