【vulnhub】DC-2攻略
靶机链接:DC: 2 ~ VulnHub
信息收集
IP
1 | nmap 192.168.56.101/24 |
kali:192.168.56.101
靶机:192.168.56.105
端口
1 | nmap -sTCV 192.168.56.105 |
就扫到一个80端口,看来只能从web找突破口了
web
看以看到上面的扫描结果,80端口被重定向到http://dc-2/
了,直接用ip访问的话,浏览器会自动跳到http://dc-2/
这个站,而dns是不知道这个站的ip的,所以会打不开。
这时候我们要手动配置hosts
文件
1 | sudo vim /etc/hosts |
加上这一条解析
1 | 192.168.56.105 dc-2 |
然后保存就好,打开网站就能看到了
用whatweb来看下网站的信息
1 | whatweb http://192.168.56.105/ |
可以看到,用了word press框架,版本是WordPress 4.7.10
用searchsploit找了下,没有找到可以用的
接着又对目录进行爆破,没有发现有用的东西
看到Web站点的Flag提示,应该是要我们去爆破后台;而且一般的字典是爆破不出他的密码,flag提到了一个工具cewl
想到Kali里自带了一个专门针对wordpress的扫描器wpscan
,那我们先用它来枚举一下看有哪些用户名
1 | wpscan --url http://dc-2/ --enumerate u |
扫出3个用户
接着用之前flag里提到的工具cewl
来生成字典
1 | cewl http://dc-2/ -w pwd.txt |
可以看到,成功生成了字典,接着就用这个生成的字典,来爆破上面的三个用户
爆破密码
1 | wpscan --url http://dc-2/ -P pwd.txt |
登录
登录jerry用户,在post里面发现flag2
flag2:
如果你不能利用wordpess走捷径的话,还有其他办法
我又登录了tom
,信息比jerry还少,pages里面就只有一篇文章,连flag都没有
之前打靶机是通过wordpress的插件写php拿到的shell,这里直接没看到入口。
跟着提示,从其他地方找突破口,之前扫出来的就一个80端口,除了这个wordpress也没啥了,提示说找其他突破口,也就是还有其他点,于是我重新扫了一遍全端口,看有没有其他的服务开放
7744 SSH
1 | nmap -sTVC 192.168.56.105 -p- |
扫出来一个7744
端口,可以看到,运行的是SSH服务。肯定是修改了默认端口,把22改成7744了。
既然只有这一个多扫出来的端口,那就只有这里了,结合之前爆破出来的账号密码,连接试下
1 | ssh tom@192.168.56.105 -p 7744 |
我先试了jerry的,因为他在web可以登录,然后失败了;
然后换成tom,连接成功了。
getshell
如上图,习惯性打了一波whoami
,居然执行不了,说没找到命令,先不管(其实后面还是要管)
拿到shell,先pwd,ls看一波
1 | tom@DC-2:~$ pwd |
看到个flag3.txt,习惯性cat
看一下
1 | tom@DC-2:~$ cat flag3.txt |
cat命令用不了,我没遇到过这种情况。有些机子vim
用不了,因为没装,那我还能理解,我用vi
就好,但是连cat都不能用,就觉得很奇怪了。但是也不知道是什么原因。
然后,flag3旁边还有个usr
,cd
进去看看。发现cd命令都用不了了。然后用ls
去列出usr
里面的东西,发现只有一个bin
目录,然后在靠ls
列出里面的东西。
发现有四个命令,猜测应该是tom
这个用户可以执行的命令了。
我看了kali用户的home目录,以及我vps的home目录,里面都没有/home/xxx/usr/bin
,应该是这个靶机特有的
1 | tom@DC-2:~$ cd usr |
发现有less
和vi
,那随便就可以用这二者之一看到flag3里面的内容
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
看到su
,我就感觉要切换用户jerry
,但是能用的4个命令,不足以让我们切换到jerry
rbash 绕过
于是我上网找资料,才知道rbash
这个东西
然后才注意到他的输出,和我右边的kali对比,是不一样的,他前面多了个-rbash
查了下rbash,就是一个功能受限的bash,很多命令他用不了,但是可以逃逸(第一篇出来的就是rbash绕过)
按照网上的教程,开始绕过
1 | 进入vi |
然后跳出了vi,回到了shell界面
试着执行了几个命令,虽然是bash环境了,但一些命令还是无法执行,并且无法执行su
命令
去看了别人的wp,发现还要导入环境变量
1 | export PATH=$PATH:/bin/ |
jerry 登场
现在就可以切换用户了,输入密码,切换成功!
这里我其实有一点疑问,我对Linux不是特别了解。为啥之前ssh连接的时候,我先试的就是jerry,那个时候,提示认证失败,这里切换用户,还是那个密码,却可以成功切换?
切到jerry的home目录,发现了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!!!!
没有提示,那就提权方法都试一下
提权
- suid提权,没找到能用的命令
- 撞库,用tom和jerry的密码还有弱口令去撞root的密码,都是错误
sudo -l
,看到个git,网上搜了一下git提权,有东西!
按照这个博客的教程 git提权方法
成功提权到root
flag
最后一步啦,去拿flag
完成~~~
总结
整体思路
nmap扫ip,端口,发现80端口
访问web服务,是个wp框架,拿到flag1:爆破用户,cewl
用wpscan扫描到用户名,根据flag1提示用cewl生成字典,爆破。得到tom和jerry的密码
web登录jerry,发现flag2提示我们从其他的点进行突破
于是我们重新扫描全端口,发现ssh被改到了7744端口,用tom连上了ssh,在tom的home目录下,我们看到了flag3,提示我们要换到jerry
要bash命令,我们要绕过rbash。成功切换到jerry
然后发现jerry可以不用密码执行git
git提权,done!
总结&收获
疑惑
- ssh连不上jerry,su却可以,不知道为什么
不足
- 对于工具的使用,不是很熟练,哪个工具能干什么,不是特别清楚。知道要干啥,不知道要用什么工具
收获
- 知道了cewl这么个工具,其实有点diy字典的意思
- rbash绕过,第一次接触到rbash
- 第一次遇到ssh改到其他端口,下次就知道了,常规没扫出22端口的,服务器没开ssh服务的可能性小,改了默认端口的可能性大