靶场搭建
靶场部署
下载网址:https://www.vulnhub.com/?q=DC-
tips:强烈建议各位师傅们使用迅雷或idm要不然下载靶场将是一个十分痛苦的环节
之后环境搭建操作步骤一致故此处搭建环境以DC-1为例
将下好的压缩包解压,你就会看到一个.ova文件,用VMware将其打开即可打开过程中可能会遇到如下报错
点击重试即可
tips:将DC-1的配置改为net模式,更改网络适配器需要在虚拟机关闭时才能更改
相关知识
Hosts文件以及如何修改Hosts文件
Hosts文件
hosts
文件是一个没有扩展名的系统文件。它的主要作用是保存域名与**ip
**的映射关系。
hosts
文件和DNS
解析
在系统进行dns
解析之前,会首先去hosts
文件中查找。
在hosts
文件中,如果能够找到被访问域名的ip
地址,就不会再向dns
服务器发起请求。
文件位置
在 iOS 系统中中,hosts文件的位置为:~/private/etc;
在 Windows 系统中,hosts文件的位置为:C:\Windows\System32\drivers\etc;
rbash
rabsh简介
如果bash以rbash这个名字启动,或者是通过-r选项调用时,那么这个shell就会受限 受限shell(以下统称为rbash)和bash相同但以下情况是不允许rbash执行的;
1. 使用命令cd更改目录
2. 设置或者取消环境变量的设置(SHELL, PATH, ENV, or BASH_ENV)
3. 指定包含参数'/'的文件名
4. 指定包含参数' - '的文件名
5. 使用重定向输出'>', '>>', '> |', '<>' '>&','&>'
tips:由此可见在使用bash和rbash“权限”是相同的并不存在绕开后及提权的说法
绕过方法
-
方法一
vi绕过
#进入命令模式
:set shell=/bin/sh
:shell
export PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbin #设置环境变量
- 方法二
BASH_CMDS[a]=/bin/sh;
a #调用/bin/sh命令解释器
/bin/bash #使用bash命令解释器
export PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbin #设置环境变量
tips:这里简单介绍一下上述shell中的一些文件及对应用途
/bin:是系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod 、tar等。
/sbin:一般是指超级用户指令**。**主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、rmmod、 runlevel、shutdown等。 /usr/bin:是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、wget等。
PATH里是否已经包含了这些环境变量。可以查看PATH,如果是:PATH=PATH:HOME/xxxx/bin则需要添加成如下: PATH=PATH:HOME/bin:/sbin:/usr/bin:/usr/sbin
cewl
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。
wpscan
WPScan是一个扫描 WordPress 漏洞的黑盒子扫描器,它可以为所有 Web开发人员扫描 WordPress漏洞并在他们开发前找到并解决问题。我们还使用了 Nikto ,它是一款非常棒的Web 服务器评估工具,我们认为这个工具应该成为所有针对 WordPress网站进行的渗透测试的一部分
常用指令
--update 更新到最新版本
--url | -u <target url> 要扫描的`WordPress`站点.
--force | -f 不检查网站运行的是不是`WordPress`
--enumerate | -e [option(s)] 枚举
信息收集
探测存活主机
nmap -sP IP/24
之后进行端口扫描
nmap -A -p- IP
发现开放了80和7744两个端口,所以尝试网页访问
访问后发现无法正常进入
并且能够正常ping通说明靶机没什么问题,这个时候再次回到网页观察发现网站是以域名方式访问的,因为是本地部署,所以dns服务器定然无法正常解析返回域名所对应的IP,所以此时需要从hosts文件入手,对hosts文件进行修改如下:
tips:hosts文件修改,在windos中如果要切换为管理员权限实属有些小困难,所以我们将hosts文件托至桌面然后在进行更改即可
修改后保存即可进行正常访问了
指纹收集
目录扫描
点击红框中的url可以跳转至后台登录界面,测试弱口令无果;
搜集部分暂告一段落开始寻找flag
漏洞利用
flag1
利用域名成功访问网站后我们可以看到有一个flag选项点击查看获得第一个flag
你通常的单词列表可能不起作用,所以相反,也许你只需要被 cewl。
更多的密码总是更好,但有时您无法赢得所有密码。
以一个人的身份登录以查看下一个标志。
如果找不到,请以其他人身份登录。
flag2
提取flag1提示中的关键次:cewl、以一个人的身份登录
利用cewl爬取网站密码
利用wpscan扫描用户
wpscan --ignore-main-redirect --url 192.168.149.139 -e --force
扫描出了三位用户,将三位用户编辑进入dc2user.txt中
vim dc2user.txt
admin
tom
jerry
之后继续配合cewl爬出的密码进行爆破
wpscan --ignore-main-redirect --url 192.168.149.139 -U dc2user.txt -P dc2pwd.txt -t 30
ok账户密码爆破完毕登录后查找flag
登录jerry的账户中发现了flag2
如果你不能利用WordPress并走捷径,还有另一种方法。
希望你找到另一个切入点。
flag3
根据flag2的提示我们还有另一种方法,这时候我们想起之前端口探测时还有一个开放的端口及774并且可以进行ssh
尝试了jerry发现无法登录这里之后又试了一下tom发现可以登录(密码和之前后台登录密码相同)
ssh tom@192.168.149.139 -p 7744
这里拓展一个工具hydra工具使用已生成的密码字典对已知的用户名进行ssh登录密码爆破
只是时间有点久
hydra -L dc2user.txt -P dc2pwd.txt -s 7744 -t 5 192.168.149.139 ssh
效果如下:
查看当前可以使用的命令
compgen -c
我们发现这里有两个能够读取的命令(less和vi)使用vi查看flag3.txt
可怜的老汤姆总是追着杰瑞跑。也许他应该为他造成的所有压力而努力。
flag4
提取flag3中的提示(after jerry、su)所以我们尝试进入/home/jerry
,这就需要我们绕过rbash去添加我们的命令这里提供两个方法,原理不是很明白的师傅可以看一下上面写的
-
方法一
BASH_CMDS[a]=/bin/sh; a #调用/bin/sh命令解释器 /bin/bash #使用bash命令解释器 export PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbin #设置环境变量
- 方法二
利用vi来绕过
这里回车后没有什么太大的视觉效果,不用关之后继续:shell
即可,然后最后添加命令
读取flag
我们可以看到两种方式绕过都可以成功读取到flag
很高兴看到你已经走到了这一步 - 但你还没有回家。
您仍然需要获得最终标志(唯一真正重要的标志!!!)。
这里没有提示 - 你现在只能靠自己了。 :-)
继续 - 在这里 git out ta!!!
flag 5
flag4中说已经无提示,但回想起flag3中的提示su,然后又看到flag4中的git很明显需要我们提权
find / -perm -u=s -type f 2>/dev/null
git提权
利用sudo -l
显示出自己(执行 sudo 的使用者)的权限,但是在tom中我们我们没查到
此时登录jerry在次尝试发现git是root权限
之后
sudo git help config
在进入页面后在末行输入
/bin/sh
之后就会进入一个以root权限运行的shell,进入/root下读取flag即可
如下:
参考文章
(6条消息) 什么是Hosts文件以及如何修改Hosts文件_Chen4852010的博客-CSDN博客_hosts文件
/bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别 - 腾讯云开发者社区-腾讯云 (tencent.com)
RBash - 受限的Bash绕过 - 腾讯云开发者社区-腾讯云 (tencent.com)
Kali Linux字典生成工具Cewl使用全指南 - FreeBuf网络安全行业门户
Kali(渗透工具):WPScan的使用(WordPress扫描工具) - 知乎 (zhihu.com)
git | GTFOBins