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
具体版权规定详见侧栏版权说明页面