Vulnhub Rickdiculously Easy Walk

2020-02-05  本文已影响0人  JohnRykZen

Rickdiculously Easy

        光听名字就知道是入门级别的机器了。这个机器跟一部动画有关,如果你有看过的话就更好玩了,我没有看过,所以可能作者的有些point我get不到。总结就是一台新手向的CTF机器。

What will cover:

        CTF , SSH , Command Injection Execution , Online password attack , wordlist generation (using crunch) , Bash CGI Code Review , Shellshock ?

Start:

          Nmap 输出大概是这样:

sacn result

        果然是新手向的靶机,轻轻一跃就能摘到果实。

        引起我兴趣的是60000居然写的是个shell ? 

60000

        还确实是个shell 不过出不去,拿了个flag。到这里收获大概是这样:

port - 13337

        FLAG:{TheyFoundMyBackDoorMorty}-10Points

port - 60000

        FLAG{Flip the pickle Morty!} - 10 Points

        转去看别的。22 和 22222 都是SSH,会不会有什么问题呢? 但check 过下版本,没觉得哪里不妥,尝试分别以登录,发现22似乎不能用密码登录。

    nmap -p 22 -sV --script ssh-auth-methods --script-args="ssh.user=root" 192.168.10.131

22

        如果是这样的话那就是要找密钥的节奏啊。再看看22222:

nmap -p 22222 -sV --script ssh-auth-methods --script-args="ssh.user=root" 192.168.10.131

22222

        22222没问题,可以用密码。

        再去看看别的:9090:

9090

        flag直接送!9090是一个叫Cockpit的监控工具,但这里貌似是坏的,没法登录。

        FTP是可以匿名登录的,又轻松拿到一个:

21

        但是不可写,没啥用。OK 至此拿到4个flag:

4 flag

        接下来将是最有趣的80了。

80

        打开就是carton人物。在robots.txt找到两个路径:

robots.txt

        看到第一个眼前一亮,但打开却是个under construction,第二看到就想到命令执行了,burp开一下:

id

        通过这个命令执行我可以浏览passwd但cat很显然是被做了手脚,用less可以替代,拿到passwd之后检查出这几个账户:

passwd

        通过命令执行还可以浏览到web目录的结构:

/var/www/html

        还可以获取apache的配置文件

        之后我一心想通过这个命令执行pop shell但多翻尝试都无果,包括直接拼接命令、urlencode命令、web目录似乎不可写,所以echo写webshell和wget下载webshell都行不通。尝试echo 写tcpshell到/var/www再执行,发现虽然目录可写,但写入不成功。用nc测试回连本地端口发现没反应,防火墙做了策略(后面证实并没有),于是结合22端口的密钥登录设想会不会有帐号配置有密钥,尝试本地SSH登录:

ssh Morty@localhost id

ssh RickSanchez@localhost id

        但均没有反应。。。。。。

        纠结了很久,后面发现在passwords目录下藏了一个密码:        

passwords.html

        结合passwd中提取出来的账户名整理出username.txt然后用hydra爆破一下:

hydra -L ./username.txt -p winter ssh://192.168.10.131:22222

winter

        有戏。Summer登上后拿到Summer的Flag,发现home下大概是这样:

home

    Morty的目录下拿到一个密码,解压文件后拿到一个flag

        其实如果前面有一直整理所有获得的flag你会发现这个flag有点特别。。。。。。

        safe文件执行一下似乎是个解密的东西,一开始我找字符串,但是没有收获,我甚至还使用nc将其下载到本地机器上做了一下分析,然后往ctf的方向想是不是文件夹的名称但也不是,收集了很久整理了几个词都不对,其实就是用上一个flag来解。解密后发现有一个关于RickSanchez用户密码的提示,提到了一支band,但我没有看过动画所以只能google了,然后生成字典:

crunch 7 7 -t ,%Flesh >> rick.pass

crunch 7 7 -t Flesh,% >> rick.pass

crunch 7 7 -t %,Flesh >> rick.pass

crunch 7 7 -t Flesh%, >> rick.pass

crunch 10 10 -t ,%Curtains >> rick.pass

crunch 10 10 -t Curtains,% >> rick.pass

crunch 10 10 -t %,Curtains >> rick.pass

crunch 10 10 -t Curtains%, >> rick.pass

        band队叫做:Flesh Curtains 好了拿去爆破一下:

    good 很顺利就拿到了

      然后可以拿到root. 总结一下拿到的所有的flag:

Bash CGI Code Review:

    这次很关键的一个突破口在于vulnerable的cgi去看看:            

       就是一个form表单采用GET方法,QUERY_STRING部分就是请求的url中?后面跟的参数

curl -s -vv localhost/cgi-bin/tracertool.cgi?ip=127.0.0.1

        比如这个例子,QUERY_STRING就是ip=127.0.0.1 而对QUERY_STRING处理后得到IP,这个处理并不严格而导致了命令拼接,简单做个修复可以在IP后面在做一个关键字的截断处理:

for bad in ';' '&' '|';do IP=`echo $IP|cut -d $bad -f 1`;done

        其实还可以考虑Shellsock但这个bash的版本不受影响而且过滤了;以后也不一定能exp.回顾一下前面无法popshell的原因很有可能是命令产生了歧义吧。再继续的话还可以在写写通过命令注入读到apache配置文件分析但在这里不是很有必要。

Review

        事后反省之所以urlencode失效原因应该是因为这只是一个bashCGI,其次web中能操作的只是apache用户,这个帐号的权限能否建立连接也是一个问题,第三点就是web中tcpshell常见的断连,一回连上来就会马上断掉。

      

     OK 今天就到这里

上一篇下一篇

猜你喜欢

热点阅读