信息收集
开启靶机。
使用namp扫描进行信息搜集。
全端口扫描,查看是否有超过1000的端口。nmap扫描后,发现仅存在22端口以及80端口处于开放状态。说明ssh服务以及http服务正在运行,靶机突破点。
首先搜集http服务信息。
打开http服务,获取cms信息,发现是Drupal7框架。
习惯性使用nmap漏洞脚本扫描,发现惊喜。drupal7.x存在Sql注入漏洞。
漏洞利用
打开亲爱的msf,搜索下是否存在直接利用的exp,发现存在可以直接利用的exp。
设置好rhost以及相应的http服务端口,其它选项使用默认值。run。
获取flag1.txt文件中的提示内容,提示查找框架配置文件。
flag线索
找到框架配置文件。
获取到http服务的数据库信息配置。
flag2提示,不要尝试暴力破解。
既然上面发现了数据库信息,不如看一下数据库中是否有什么线索。
查看网络服务,看到mysql3306端口是运行状态。
登录进mysql数据库,看下。
直接使用msf中的shell进入mysql发现没有交互。因此我们需要借助python中的pty库,进行更好的shell交互。
python -c "import pty;pty.spawn('/bin/sh');"
使用python交互,获取交互式shell。
查看数据库,发现drupaldb数据库中存在users表格,感觉会有点东西。。。
看到users表格中存在admin用户以及对应的password,解密密码。
将密码的密文复制下来,使用jhon密码爆破工具爆破,失败。。。跑了一天没跑出来。(可能是我菜)使用在线解密。失败。。。
尬住了,下一步没头绪了。。。。闲着也是闲着那就翻翻cms中的其它文件吧,突然想到既然密码是密文保存的形式,那么明文密码,有两种可能加密。第一种就是前端加密,第二种密码明文传输到后端,后端加密。下面我们看下前端。
发现,用户注册功能是通过邮箱注册,并且邮箱注册功能并没有开启。。。
没办法了,百度下,drupal框架密码加密是通过什么进行的吧。
意外之喜,发现了可以使用Drupal框架下的scripts目录下的password-hash.sh进行明文密码加密。
那么下面思路就清晰了,可以使用自定义的密码,经过password-hash.sh加密后,将数据库中的admin用户的密码进行替换掉。要知道我们现在是可以操作数据库的。
密码成功修改。
登录成功。随便翻翻页面,看下功能点。
找到flag3,线索再次出现。上面提示,没看太懂。。。
获取用户
回头来看,继续在shell中搜集信息,发现home目录下存在flag4。。一般情况,home目录下存在的是用户目录。那么,也就是说,flag4是一个用户名。
尝试flag4 ssh爆破。
ssh爆破成功。获取用户名:flag4;密码:orange.
ssh登录
系统提权
首先使用内核提权,通过系统探针扫描,发现存在脏牛提权漏洞。
脏牛提权失败。。。难受😫。
那就尝试下使用suid提权吧。
哦吼,发现惊喜,find指令可以使用suid提权。
使用find指令进行nc连接反弹。
成功获取到root权限。
结束。过程略有曲折。。。但还好,最后成功获取到root权限。
参考链接
Dc1靶机下载链接: https://www.vulnhub.com/entry/dc-1,292/.
脏牛exp链接:https://github.com/FireFart/dirtycow
字典下载链接:https://github.com/rootphantomer/Blasting_dictionary