-
-
[原创]Hack The Box - TIER 2 - Archetype Oopsie Vaccine Unified
-
发表于: 2022-3-9 00:09 3184
-
这个阶段的,终于不是之前的傻乎乎操作了,到这我才知道,那些问答不是先问答再渗透的。原来是渗透一步回答相应问题,这里涉及到了许多工具、脚本、提权、端口等知识点,收获丰富。
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也在桌面
这个靶机质量可以,学到很多。
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,具体命令如下:
然后调用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
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,原理这里先不探究,打开需要满足一定条件,这里我也不知道满没满足。但以后渗透每次都试一下
命令:
获得的shell是非交互式的,这里采用反弹shell的方式获得一个交互式shell
推荐一个反弹shell payload网站:https://www.revshells.com/
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)