免责声明:
笔记只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
泷羽sec官网:https://longyusec.com/
泷羽sec B站地址:https://space.bilibili.com/350329294
泷羽sec帮会:https://wiki.freebuf.com/front/societyFront?invitation_code=5a2005d9\&society_id=239\&source_data=2
描述
与 DC-1 非常相似,DC-2 是另一个专门建造的易受攻击实验室,目的是获得渗透测试领域的经验。
与最初的 DC-1 一样,它的设计考虑到了初学者。
必须具备 Linux 技能和熟悉 Linux 命令行,以及具备一些基本渗透测试工具的经验。
就像 DC-1 一样,有五个标志,包括最后一个标志。
再说一次,就像 DC-1 一样,这些标志对初学者很重要,但对有经验的人来说并不那么重要。
简而言之,唯一真正重要的标志是最后一面旗帜。
对于初学者来说,Google 是您的朋友。嗯,除了所有的隐私问题等。
我还没有探索实现 root 的所有方法,因为我放弃了我一直在努力的上一个版本,除了基本操作系统安装之外,我完全从头开始。
Tips
请注意,您需要将渗透测试设备上的 hosts 文件设置为如下:
192.168.0.145 dc-2
显然,将 192.168.0.145
替换为 DC-2 的实际 IP 地址。
下载链接
https://download.vulnhub.com/dc/DC-2.zip
https://pan.baidu.com/s/1L9IJ8tsCfdm1YlMaAgXXkg?pwd=x749
攻击流程
使用arp-scan
扫描内网中的机器,根据扫描结果可知,192.168.116.1
和192.168.116.1
都是网关地址,而192.168.116.254
是广播地址,所以靶机IP是192.168.116.134
,继续进一步的信息收集
arp-scan -l
命令是用来进行局域网内ARP扫描的一个参数配置,命令中的-l
参数意味着以"长格式"(long format)输出扫描结果。这种格式通常提供更详细的信息,比如设备的MAC地址、IP地址、厂商信息(根据MAC地址前缀推断出的设备制造商)等。
当使用nmap -A
命令时,nmap
会执行以下操作:
- 端口扫描 :
nmap
会扫描目标主机上的一系列端口,尝试确定哪些端口是开放的。这通常涉及到向每个端口发送数据包,并分析返回的响应。- 服务检测 :一旦确定了哪些端口是开放的,
nmap
会尝试进一步确定这些端口上运行的服务类型。这通常通过向开放端口发送特定类型的数据包,并查看服务的响应来实现。- 操作系统检测 :
-A
选项还会触发操作系统检测功能,尝试确定目标主机的操作系统类型。这可以通过分析网络栈的细微差别、特定的响应模式等方式来实现。- 脚本扫描 :
nmap
支持使用脚本来增强其功能。在高级扫描模式下,可能会自动运行一些脚本来进一步分析目标主机的特性或漏洞。
值得注意的是,80
端口处的http.title
有一句提示
http
Did not follow redirect to http://dc-2
没有遵循重定向到 http://dc-2
需要手动修改hosts
文件,Linux
系统的hosts
文件在/etc/hosts
,Windows
系统的在C:\Windows\System32\drivers\etc\hosts
,在文件中添加如下内容
修改完成之后,访问首页,即可获得flag1
html
Your usual wordlists probably won't work,so instead,maybe you just need to be cewl.More passwords is always better,but sometimes you just can't win them all. Log in as one to see the next flag.If you can't find it, log in as another.
你常用的词典可能不起作用,所以,也许你只需要'cewl'。更多的密码总是更好,但有时你就是无法全部获取。以其中一个身份登录以查看下一个标志。如果你找不到,就以另一个身份登录
cewl是一个Ruby工具,主要用于爬取网站内容并生成字典,这些字典文件可用于密码破解。
- 爬取网站内容:cewl能够爬取指定URL的网页内容,包括文本、图片文件名和链接文本等。
- 生成字典:根据爬取到的内容,cewl可以生成一个包含网站中单词的列表,这个列表可以作为密码破解的字典。
- 支持多种参数:cewl提供了多种参数选项,如爬取深度、最小词长、是否包含数字、是否包含电子邮件地址等,以满足不同用户的需求。
- 支持代理和认证:cewl支持代理服务器和网页认证,可以绕过一些网站的限制,获取更多的内容。
通过whatweb
扫描网站,获知这是一个wordpress
搭建的
wordpress
网站的登陆页面url
是wp-login.php
,拿到了登陆页面,下面就是爬取密码字典
-w
表示写入文件
拿到密码字典之后,利用wpscan
枚举用户名
wpscan是一款开源的命令行工具,专门用于扫描和识别WordPress网站中的漏洞和安全问题。
- 漏洞扫描:wpscan能够扫描WordPress网站中的多种安全漏洞,包括WordPress核心文件的漏洞、插件漏洞以及主题漏洞。其数据库中包含了大量的漏洞信息,以确保对最新威胁的有效防护。
- 枚举功能:wpscan提供了丰富的枚举选项,如枚举用户名、已安装的插件、主题信息等,有助于进一步了解目标站点的安全状况。
- 暴力破解:对于未加防护的WordPress站点,wpscan还支持暴力破解用户名和密码,以获取站点的访问权限。但请注意,暴力破解可能涉及法律风险,应在合法合规的前提下使用。
- 敏感文件检测:wpscan能够检测WordPress站点中的敏感文件,如robots.txt等,以发现潜在的安全隐患。
- 多线程扫描:为了提高扫描效率,wpscan支持多线程扫描,用户可以自定义最大线程数以满足不同的扫描需求。
wpscan --url http://dc-2/ -e u
得到三个用户名,分别是admin
、jerry
、tom
,将其写入文件。
得到用户名字典和密码字典之后,利用wpscan
的爆破功能破解密码
得到的结果分别是
html
jerry/adipiscing
tom/parturient
登陆后即可看到flag2
html
If you can't exploit WordPress and take a shortcut,there is another way. Hope you found another entry point.
如果你不能利用WordPress走捷径,那么还有另一种方法。希望你能找到另一个入口点。
重新进行端口扫描,nmap -p- 192.168.116.134
重点对7744
端口扫描
发现是OpenSSH
服务,那下一步思路就开拓了
ssh
连接jerry
账号失败,尝试连接tom
账号
连接成功,但是无法执行whoami
通过命令echo $SHELL
发现当前的shell
环境为rbash
RBASH是Restricted BASH的缩写,即受限制的BASH。它是一种特殊的shell,用于限制用户的一些操作和权限,以提高系统的安全性,防止用户执行一些危险或不合法的操作。
- 命令限制:在RBASH中,一些常用的命令如cd(用于改变目录)、set(用于设置环境变量或shell选项)、unset(用于取消环境变量或shell函数)等可能会被限制使用。
- 路径限制:RBASH通常只允许执行PATH环境变量中指定的命令。这意味着,即使某些命令存在于系统中,但如果它们不在PATH环境变量中,用户也无法在RBASH中执行它们。
- 符号限制:RBASH可能会限制使用某些符号,如/(用于指定目录路径)、>(用于重定向输出)、<(用于重定向输入)等。这些限制可以防止用户执行一些复杂的命令或脚本。
echo /home/tom/usr/bin/*
这条命令的作用是在终端上打印出/home/tom/usr/bin/
目录下的所有文件和目录的名称,也就是打印出可用的命令
列举后发现有ls
命令,展开目录文件后发现有flag
通过vi
,查看flag3
的内容
html
Poor old Tom is always running after Jerry.Perhaps he should su for all the stress he causes
可怜的老汤姆总是追着杰瑞跑。或许他应该为他所造成的压力负责
翻译之前看不懂,翻译之后还是看不懂,不要紧,看到了一个命令su
,也许是要切换到jerry
账户上继续做事,试试看
在vi
编辑界面,设定一个变量shell
,赋值为/bin/bash
解释器,然后执行:shell
:set shell=/bin/sh
命令 :
这个命令用于设置 Vi在执行外部命令时所使用的 shell。默认情况下,Vi可能会使用系统的默认 shell,但通过设置shell
选项,可以指定 Vi使用另一个 shell,如/bin/sh
。:shell
命令 :
这个命令用于从 Vi会话中启动一个新的 shell 会话。这意味着可以暂时离开 Vim 编辑器,进入一个命令行界面,在那里可以执行其他命令。当完成 shell 会话后,可以通过输入exit
或按Ctrl-D
来返回到 Vi编辑器。
执行完毕后,继续通过修改环境变量,完成rbash
逃逸
sh
export PATH=$PATH:/bin
export PATH=$PATH:/usr/bin
cat
命令可以使用之后,就切换到jerry
用户
发现了flag4
html
Good to see that you've made it this far - but you're not home yet.You still need to get the final flag(the only flag that really counts!!!).No hints here - you're on your own now. Go on - git outta here!!!!
很高兴看到你已经走到了这一步------但你还没有到家。你还需要拿到最后的旗帜(唯一真正重要的旗帜!!!)。这里没有提示------现在你得靠自己了。继续吧------快从这里出去!!!!
flag中提到了git
,大概率后续会涉及到git提权
Git提权是一种在Linux环境中,利用Git命令的特定配置或漏洞来提升用户权限的攻击技术。以下是对Git提权的详细解释:
一、Git提权的前提
Git提权通常发生在以下情况下:
- 用户具有使用sudo执行Git命令的权限,并且sudo配置允许用户在执行这些命令时无需输入密码。
- Git命令本身存在缓冲区溢出漏洞或其他可利用的安全缺陷。
二、Git提权的方法
以下是一些常见的Git提权方法:
- 利用sudo git help config命令:
- 执行
sudo git help config
命令。- 在命令输出的末尾,进入Vim的末行模式(通常通过按
:
进入)。- 输入
!/bin/bash
或!'sh'
,然后按下回车键。这将尝试启动一个新的bash或sh shell,并可能以root权限运行。
- 利用sudo git -p help命令:
- 执行
sudo git -p help
命令。- 在分页器显示的帮助文本中,找到合适的位置输入
!/bin/bash
。- 按下回车键,尝试启动一个新的bash shell,并可能以root权限运行。
三、Git提权的原理
Git提权的原理通常涉及以下几个方面:
SUID权限:如果Git命令被设置为具有SUID权限(即setuid bit被设置),则当用户执行该命令时,它将以文件所有者的权限(通常是root)运行。这为攻击者提供了一个机会,通过精心构造的命令或输入来利用这一特性。
缓冲区溢出漏洞:在某些版本的Git中,可能存在缓冲区溢出漏洞。当攻击者向Git命令传递过长的输入或特定格式的输入时,可能会触发这些漏洞,导致任意代码执行或权限提升。
然后执行!/bin/bash
成功提权,并且拿到最后一个flag
html
Congratulatons!!!
A special thanks to all those who sent me tweets and provided me with feedback - it's all greatly appreciated.
If you enjoyed this CTF,send me a tweet via @DCAU7
恭喜!!!
特别感谢所有给我发送推特消息并提供反馈的人------我非常感激大家的支持。
如果你喜欢这次的CTF,请通过@DCAU7给我发送推特消息。
打完收工!!!