Hack The Box - TIER 2 - Archetype Oopsie Vaccine Unified


这个阶段的,终于不是之前的傻乎乎操作了,到这我才知道,那些问答不是先问答再渗透的。原来是渗透一步回答相应问题,这里涉及到了许多工具、脚本、提权、端口等知识点,收获丰富。

Archetype

TASK 1

Which TCP port is hosting a database server?

哪个 TCP 端口托管数据库服务器?

答案:1433

TASK 2

What is the name of the non-Administrative share available over SMB?

SMB 上可用的非管理共享的名称是什么?

答案:backups

TASK 3

What is the password identified in the file on the SMB share?

SMB 共享文件中标识的密码是什么?

答案:M3g4c0rp123

TASK 4

What script from Impacket collection can be used in order to establish an authenticated connection to a Microsoft SQL Server?

可以使用 Impacket 集合中的哪些脚本来建立到 Microsoft SQL Server 的经过身份验证的连接?

答案:mssqlclient.py

TASK 5

What extended stored procedure of Microsoft SQL Server can be used in order to spawn a Windows command shell?

可以使用 Microsoft SQL Server 的哪些扩展存储过程来生成 Windows 命令外壳?

答案:xp_cmdshell

TASK 6

What script can be used in order to search possible paths to escalate privileges on Windows hosts?

可以使用什么脚本来搜索提升 Windows 主机权限的可能路径?

答案:winpeas

TASK 7

What file contains the administrator’s password?

哪个文件包含管理员的密码?

答案:ConsoleHost_history.txt

先nmap扫一扫

看到139端口和445端口就知道是SMB了,同时1433端口也是个敏感端口,是mssql,这里先从SMB下手使用-L命令列出共享文件夹

带美元符号的是管理员权限,这里我们使用-N符号连接backups,发现有一个dtsConfig文件,这个文件是SSIS的配置文件,SSIS是SQL Server Integration Services,先get下来

查看内容,里面包括了SQL服务的账户密码

既然获得了账户密码,这里使用kali自带的mssql客户端impacket-mssqlclient来连接靶机上的SQL服务

输入help指令显示了可用命令,这里的enable_xp_cmdshell是允许启用系统cmd命令行的指令。xp_cmdshell {cmd}是执行cmd命令的。那这里就先允许启用命令行,然后根据终端上的提示输入重置命令

这里尝试cmd能否使用,并且测试是否有nc命令,如果有就可以通过反弹shell建立起一个持续性的shell。

很可惜没有nc,但是cmd命令行可以用,那我们尝试传一个nc程序过去。这里是提前在kali里存一个nc.exe,然后开启http服务,在靶机里使用wget命令远程下载kali里的文件。这里注意提前将启动http服务的终端进入到存有nc.exe的文件夹里,这样http服务的根目录就是此文件夹,下载nc也更方便。

先查看kali IP

kali开启http服务

靶机下载kali里的nc文件,注意下载的文件夹,其他的文件夹会因为没有权限下载不进去

kali这边也显示文件已被get

这个时候进行反弹shell,kali开启监听,靶机主动连接kali

kali这边已经获得了靶机的shell

Windows列文件是dir,在经过一番寻找后,flag在此用户桌面上

到这我以为结束了,没想到还有一问,管理员账户里还有一个flag,那我们这获取的也是普通用户sql_svc的shell,这里需要提权了。Windows提权,通过资料,这里使用一款叫做winPEAS的工具,它会检索整个系统路径,有搞头的路径或文件会被红色文字列出来。这里还是提前准备winPEAS,靶机下载后,在刚才那个已经连上的shell里直接运行。

运行需要一段时间因为在检索整个系统,结束后会标出可利用文件路径

这个ConsoleHost_history.txt是记录了控制台命令历史记录,查看一下

里面记录了管理员账号与密码,kali尝试使用psexec.py脚本连接。psexec 是 windows 下非常好的一款远程命令行工具。psexec的使用不需要对方主机开机3389端口,只需要对方开启admin$共享(该共享默认开启)。但是,假如目标主机开启了防火墙,psexec也是不能使用的,会提示找不到网络路径。由于psexec是windows提供的工具,所以杀毒软件会将其添加到白名单中。

搜索一番后,管理员的flag也在桌面

这个靶机质量可以,学到很多。

Oopsie

HTB是先做题在回答相关问题,所以后面先写渗透靶机的过程,最后写问题答案

这个也好玩,首先nmap,探测到了22端口和80端口,但是ssh不知道密码无法连接,所以去网页看一看

在网页底部发现了这句提示

需要登陆来访问,所以我们的方向转为登录这个站,登录点在哪?这里我是打开源代码发现的

在最后的加载js脚本地方发现了,加载登录的脚本,打开这个login路径试试。

成功找到登陆页面,但是尝试了许多弱口令后都不行,注入也失败,这里看到登录页面有一个Login as Guest,游客登录,我们就以游客登录看看。

随便点点,(渗透就是要多点点)

在Acount这里发现url里参数content传递了account,id传递的2

account就是当前页面,id=2应该是当前用户的意思。我们这里试着将id改为1

居然切换到了admin用户,这叫啥漏洞呢,未授权还是垂直越权。但没什么用,这个页面没啥利用点。其他页面仍然没有啥亮点。Uploads页面的上传功能是我们唯一利用点,但是这里限制了权限,我们就要越权。在这里发现了Cookie

我们把role值改为admin,user值改为之前admin的access id

哇哇哇,干他,这里使用kali自带的php shell,由于我不太了解kali的web shell工具,所以这里采用反弹shell的方式,把shell复制过来一份再修改成自己的ip和监听端口。

上传成功,终端开启监听

现在我们需要访问这个shell 文件,他就会运行代码,但我们不知道上传路径。这里使用gobuster工具爆破路径。我kali里没有,apt-get install gobuster安装即可。gobuster有俩模式爆破目录和,dns子域名,所以需要先选择dir模式。–url表示url,–w表示使用哪个爆破字典,-x表示检索哪种文件扩展名,这个可选。这里使用dirb的小字典。

给我严查uploads,访问这个文件夹没权限,那访问此文件夹里的php-reverse-shell.php文件试试。

弹回来了,但是www-data权限太低,而且这个终端太难用。这里使用运行python代码,打开/bin/bash,并查看/etc/passwd文件

发现了robert,去robert目录看看

出了一个flag,不出所料应该还有,并且提权才能拿到

现在去登录文件夹寻找蛛丝马迹

经过一番cat,db.php里有robert账号密码

切换到robert用户,并查看有哪些可用命令

好像是用户组不太行,没权限,我们查看一下组

根据前面也说了robert属于bugtracker,我们查找一下bugtracker,但居然是个文件,那就看一下权限再输出他的文件类型

可执行文件,运行试试

这个程序是cat一个路径然后将内容输出,不存在的编号就会显示无文件。可以利用这个点提权

思路:bugtracker本来无权进入root目录的,但是使用了setid,使bugtracker暂时拥有了root权限,并且调用cat命令,直接调用cat命令调的是环境变量中的cat,那我们做一个恶意的cat命令,再把这个恶意的cat命令所在文件夹设置为环境变量,那bugtracker调用的就是恶意cat,具体命令如下:

export PATH=/tmp:$PATH				//将/tmp目录设置为环境变量
cd /tmp/							//切换到/tmp目录下
echo '/bin/sh' > cat				//在此构造恶意的cat命令
chmod +x cat						//赋予执行权限

然后调用bugtracker,输入任何一个id都会直接调用root用户的shell

因为,我们修改了环境变量,所以调用的cat是恶意的,所以查看不了文件,这里使用tac命令查看。tac是将行数倒着输出,并不会将一句话的每个字符倒序输出,这里直接tac查看即可

渗透结束,回答问题,但不是所有渗透都需要问题里的方法

TASK 1

With what kind of tool can intercept web traffic?

用什么样的工具可以拦截网络流量?

答案:proxy

TASK 2

What is the path to the directory on the webserver that returns a login page?

网络服务器上返回登录页面的目录的路径是什么?

答案:/cdn-cgi/login

TASK 3

What can be modified in Firefox to get access to the upload page?

可以在 Firefox 中修改哪些内容以访问上传页面?

答案:cookie

TASK 4

What is the access ID of the admin user?

admin 用户的访问 ID 是什么?

答案:34322

TASK 5

On uploading a file, what directory does that file appear in on the server?

上传文件时,该文件出现在服务器上的哪个目录中?

答案:/uploads

TASK 6

What is the file that contains the password that is shared with the robert user?

包含与 robert 用户共享的密码的文件是什么?

答案:db.php

TASK 7

What executible is run with the option “-group bugtracker” to identify all files owned by the bugtracker group?

使用“-group bugtracker”选项运行什么可执行文件来识别 bugtracker 组拥有的所有文件?

答案:find

TASK 8

Regardless of which user starts running the bugtracker executable, what’s user privileges will use to run?

无论哪个用户开始运行 bugtracker 可执行文件,运行时使用的用户权限是什么?

答案:root

TASK 9

What SUID stands for?

SUID 代表什么?

答案:Set Owner User Id

TASK 10

What is the name of the executable being called in an insecure manner?

以不安全方式调用的可执行文件的名称是什么?

答案:cat

Vaccine

nmap扫描如下

nmap会显示ftp是否能够以匿名用户登录,图中ftp那个部分也有,所以用账户anonymous登录,密码随意

发现有个backup.zip文件,下载下来,解压需要密码,这里使用kali自带的压缩包密码猜解工具zip2john,先爆出hash值,然后john命令计算就行

黄色的数字就是密码,解压后有两个文件,分别是index.php和style.css

查看index.php,发现里面有密码的MD5值

放网站里解密后是qwerty789

浏览器访问网站,用admin和qwerty789登录,然后进入主页,发现右上角的搜索输入'会报错

尝试sqlmap注入,由于有cookie认证,所以sqlmap命令需要设置cookie(这里机器被我不小心关了,所以后面新开的机器,图片里的ip显示不一样)

爆到表名的时候,绷不住了,表只有那个车表,看来数据库没什么数据,难道mysql马?但有一个更简单的方法,sqlmap有个os-shell,可以直接打开shell,原理这里先不探究,打开需要满足一定条件,这里我也不知道满没满足。但以后渗透每次都试一下

命令:

sqlmap -u http://10.129.15.176/dashboard.php?search=1 --cookie PHPSESSID=rnjt959pluamccoaj4ricbccg8 --batch --os-shell 

获得的shell是非交互式的,这里采用反弹shell的方式获得一个交互式shell

推荐一个反弹shell payload网站:https://www.revshells.com/

反弹成功,kali这边获得了shell

其实这个时候去~目录,就可以拿到user.txt里的flag。但是这里的shell无法提权。我们先找蛛丝马迹。对于这种网站应用,我们去网站根目录看看,发现了一些配置文件,打开dashboard.php

这个文件里,有postgres的密码,我们使用这个进行ssh连接,发现了普通用户flag

尝试提权,查看当前可用sudo命令

这里是使用vi编辑器提权,vi里可以直接输入命令,因为这个vi是sudo打开,调出的shell也就是root身份。

命令:sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf

在vi编辑界面里,输入:!/bin/bash

回车,此时获得了root权限

搞完了,写问答

TASK 1

Besides SSH and HTTP, what other service is hosted on this box?

除了 SSH 和 HTTP,这个盒子上还托管了哪些其他服务?

答案:FTP

TASK 2

This service can be configured to allow login with any password for specific username. What is that username?

可以将此服务配置为允许使用特定用户名的任何密码登录。 那个用户名是什么?

答案:anonymous

TASK 3

What is the name of the file downloaded over this service?

通过此服务下载的文件的名称是什么?

答案:backup.zip

TASK 4

What script comes with the John The Ripper toolset and generates a hash from a password protected zip archive in a format to allow for cracking attempts?

John The Ripper 工具集附带什么脚本,并从受密码保护的 zip 存档中生成哈希,其格式允许破解尝试?

答案:zip2john

TASK 5

What is the password for the admin user on the website?

网站管理员用户的密码是什么?

答案:qwerty789

TASK 6

What option can be passed to sqlmap to try to get command execution via the sql injection?

可以将什么选项传递给 sqlmap 以尝试通过 sql 注入来执行命令?

答案:–os-shell

TASK 7

What program can the postgres user run as root using sudo?

postgres 用户可以使用 sudo 以 root 身份运行什么程序?

答案:vi

Unified

就是复现不了,搞一晚上,眼都看瞎了还是不行,我BP发的payload,即使返回信息err,那tcpdump也应该拦截到我被连接的记录,可他显示localhost啥啥的,简直离谱,在别人电脑上就行了,找时间再复现,这个并不难。照着文章做就行,https://www.sprocketsecurity.com/blog/another-log4j-on-the-fire-unifi

但就是不想丸辣


文章作者: Tajang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Tajang !
评论
  目录