Offensive Pentesting之Game Zone Walkthrough

前言

  • 学习如何黑进这台机器。了解如何使用 SQLMap,破解一些密码,使用反向 SSH 隧道来揭示服务,并升级到 root 权限!

部署

  • target machine : 10.10.158.119

  • attack machine: 10.11.61.123 (本机kali连接openVPN)

访问

Alt text

  • 可Reverse Image Search 查找图片信息(杀手,主人公Agent47)

登录绕过

  • 该登录界面-登录查询SQL:

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

  • 存在潜在漏洞的登录框:可以输入你所构造的用户名–将用户名构造为SQL 查询语句,这将写入、拼接并执行查询操作。

    • 采用手工注入:' or 1=1 #

    • 如果用户:admin,密码:' or 1=1 #, # 会中断之后的部分,SQL执行结果:

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

    • 如果用户:' or 1=1 #,密码为空或随意,SQL执行结果:

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

      相当于:

      SELECT * FROM users WHERE username = '' or 1=1

      这里使用or,而1=1始终为true,所以可以登录进去

      Alt text Alt text

  • 造成这样的结果,是登录框直接以账户和密码进行查询校验的,没有对特殊字符进行转义或者过滤,很容易sql注入。

使用SQLmap转储数据库

  • SQLMap 是一种流行的开源自动 SQL 注入和数据库接管工具。

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

  • 使用 SQLMap 针对目标靶机转储它的整个数据库:

    • BP抓包:登陆后查询界面

      Alt text

    • 将拦截请求保存为request.txt:

      Alt text

    • 传递给 SQLMap工具 以使用已经经过身份验证的用户会话:

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

      1. -r 读取之前已保存的burpsuite所拦截的请求信息

      2. –dbms 告诉 SQLMap 目标是什么类型的数据库管理系统

      3. –dump 尝试转储整个数据库数据(真实环境下请谨慎使用dump参数)

    • 执行:

      Alt text

      • 查出的第一张表:post

        Alt text

      • 查出的第二张表:

        Alt text

      • 得到usename : agent47

        password : ab5db915fc9cea6c78df88106c6500c57f2b52901ca6c0c6218f04122c3efd14

使用JohnTheRipper破解密码

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

  • 使用:

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

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

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

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

  • 将密码保存为hash.txt,然后执行John命令执行破解:

    Alt text

     ┌──(kali㉿kali)-[~/桌面/THM/GameZone]
     └─$ sudo john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt --format=Raw-SHA256
     ···
     videogamer124    (?)     
     ···
    
  • 破解hash得到密码 :videogamer124

SSH登录

  • 使用得到的用户和密码进行登录:

    Alt text

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

  • 反向 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 )连接。

    Alt text

    • 查询TCP套接字:

      Alt text

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

    ssh -L 10000:localhost:10000 <username>@<ip>

    Alt text

  • 本地浏览并登入:localhost:10000

    Alt text Alt text

MSF提权

  • 查找webmin 1.580并利用:

    Alt text Alt text Alt text Alt text

Reference

Game Zone