DC-2靶机摸索
信息收集
- 首先用nmap获得IP地址
- 对该IP的所有端口进行扫描,发现80和7744端口
- 尝试访问该IP
192.168.151.135
,发现会自动跳转到dc-2
这个域名 - 没办法,只能在
hosts
文件中添加对应的域名 - 重新打开网页,发现可以正常解析
- 根据我自己的建站经验,发现是wordpressCMS的默认主题,所以该靶机应该是要从该CMS入手,浏览器探测插件也探测到了对应的CMS
- 网站页面上有个flag的标签,点进去让人用
cewl
命令生成字典然后登录,于是用kali中的cewl
生成字典 - 先用wvs扫一遍,发现存在目录泄露以及wordpress低版本
- 根据自己建站的常识,
wp-admin
目录即为wordpress登录页面,访问dc-2/wp-admin
后会跳转到dc-2/wp-login.php
- 在登录页面尝试使用
admin\admin
登录,提示账户admin
的密码错误,好家伙,直接登录信息性提示
,这不用刚才cewl
得到的字典跑一下密码,竟然没跑出来!!! - 虽然没有密码,但是存在
登录信息性提示
,所以可以跑一下用户名,除了admin
账户外,还发现了jerry
账户 - 对
jerry
账户用刚才的密码字典爆破,发现密码adipiscing
- 使用
jerry/adipiscing
账户密码登录,在文章发布页面发现flag2
,提示需要从其他地方进入 - 突然想起来kali中有个
wpscan
可以试试 - 用wpscan扫出来三个用户,除了上面扫出来的
admin
、jerry
,还扫出来 了tom
- 在登录页面对
tom
进行爆破,发现tom
的密码parturient
- 使用
tom/parturient
登录成功,除了没有文章发布页面之外,没发现什么和jerry
登录有区别的地方 - 根据nmap的扫描结果,还可以知道7744端口是SSH,尝试用超级弱口令爆破一波,但是没用,没发现默认密码
- 毫无思路,凉凉
- 摸了两天后又重新开始搞,尝试用爆破的密码去SSH登录,该系统的SSH在7744端口,所以要使用
-p
设置一下端口,通过使用暴力破解的密码,发现使用jerry/adipiscing
提示权限不足,但是tom/parturient
可以SSH登录成功,总算是到了提权的步骤了 题外话:曾经我在工作中遇到过使用默认密码或者复杂度不够高的密码,而且这类密码却是相当常见的,DC-2这个靶机虽然用了很难猜的密码,但是我们还是可以看到应用软件的密码和系统的密码有相关性,这在实际系统中是很少见的,但也是不可忽视的一种情况,除非是自建机房,通常情况下的生产环境中系统密码是由系统运维管理,而应用密码是由应用运维管理,所以很少会出现两者密码相关性很强。
提权
- 通过
tom\parturient
该密码登录成功后执行ls
发现flag3.txt
的文件 - 访问
flag3.txt
文件时,发现没有cat
命令,尝试了其他查看文件内容的命令后,发现只有vi
可以访问成功,里面只有一句话Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
翻译过来就是《猫和老鼠》中的一句话 - 因为当前目录下有一个
usr
目录,所以向使用命令cd
进去查看,发现同样提示不存在命令,这就很奇怪了,通常情况下cd
命令是内置到Linux中的,如果无法使用该命令,那么就没有办法切换目录。 cd
命令总会被写入环境变量,所以先看一下当前用户的环境变量,使用ls $PATH
查看所有环境变量发现只有4个命令可以使用,分别是less
、ls
、scp
、vi
。使用echo $PATH
命令发现环境变量只包含了/home/tom/usr/bin
- Linux的环境变量一般包含
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
,所以应该先把这些目录写到环境变量里,执行命令export PATH=$PATH:/usr/local/sbin
提示rbash
的环境变量是只读属性,无法写入其他环境变量 - 因为
rbash
这个命令解释器的环境变量是只读属性,所以需要更换命令解释器 - 通过搜索引擎的检索,发现一篇讲rbash绕过技巧的文章,仔细阅读该文章后,经过尝试,选择使用在
vi
中执行set shell
来绕过rbash,首先在vi
中执行set shell=/bin/sh
,然后执行shell
即可绕过rbash - 在新的shell中执行
/bin/bash
即可打开以bash
为解释器的shell - 执行命令
export -p
可以发现现在PATH
路径已经不是只读了 - 执行
export PATH=PATH:/bin:/sbin:/usr/bin:/usr/sbin
添加环境变量 终于可以使用常用的Linux命令了,随便看看,发现
/home/jerry
,里面还有一个flag4.txt
,使用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中出现了一个单词
git
,猜测提权可能和git
有关,在搜索引擎上搜索git提权
发现文章,看了一下是可以提权的,通过使用参数-p
可以提权,因为该参数调用系统命令more
来分页展示git信息,所以可以使用git提权,但是尝试了git提权后,发现还是提示rbash权限问题 - 突然想起来之前jerry这个账户也可以登录SSH,但是权限有问题,不知道tom账户能不能切换过去,尝试了一下,果然可以
- 但是,测试了一下git命令还是无法提权,实在是想不到其他办法了,看了一下别人的过程,发现使用
sudo -l
命令可以查看到git
命令是可以用sudo
执行的,那这就简单了。 - 我直接一个
sudo -l
,可以看到jerry用户可以用sudo执行git命令 - 执行
sudo git -p help
,然后再more命令中执行!/bin/bash
,即可提权成功 - 切换到root目录下,即可看到最后的flag
《DC-2靶机摸索》链接:https://xdym11235.com/archives/46.html
具体版权规定详见侧栏版权说明页面