这个VM是从vulnhub上下载的,难度是easy
没有用户名,没有密码,目的是拿到root权限,拿到flag
先获取目标IP
- netdiscover
用nmap扫描目标IP
发现开了ssh,和http的端口
下一步去看一下目标有没有网站
果然有,但是网站就告诉我们 it's easy(火狐的浏览器显示的有点变形了,chrome可以看出来) ,看了一些源代码,也没有有用的信息
用nikto尝试扫描这个网站有没有其他目录
- nikto -h 192.168.140.131
非常有意思的结果出现了,提示没有web服务器,这个vm里有网站,却提示没有web服务器
经过老师指点,才知道 nmap默认只会扫描1000一下的端口号
所以再次用nmap扫描目标ip,这次用-p-参数扫描所有端口
- nmap -p- 192.160.140.131
原来这个目标机器开了一个1898的端口,刚刚nmap没有扫描到
这次用这个端口进去看看
发现了一个新的网站,需要用户名密码才能登
再次用nikto寻找网站的目录
网站有很多目录,之后又两个方法找到突破口
第一个方法:
我自己的方法,随便在网站目录下找找,会发现很多txt文档。
打开文档就可以发现这个网站使用drupal框架搭建的。drupal就是突破口。
第二个方法:
我从其他论坛上看到的方法
扫描目录的时候发现敏感文件/CHANGELOG.txt是敏感文件,一个记录更新的日志,访问发现是Drupal为框架的网站,最近一次更新为7.54
总之发现目标使用Drupal框架搭建的网站。
用msf搜索针对这个框架有什么可以利用的漏洞
- search drupal
有一个2018年的漏洞,excellent!
用这个漏洞渗透
- use exploit/unix/webapp/drupal_drupalgeddon2
设置好ip 端口,就可以run了
渗透成功!
开始我想用上次的方法download 目标vm的密码文件,再进行破解,但是失败了,应该是权限不够。
不过我们可以看出整个网站的整个目录了,看看能不能发现一些有趣的东西,网站目录下的文件可以下载
首先我发现了一首歌LuizGonzaga-LampiaoFalou.mp3,我把它download下来,不怎么好听。。。
还有一个音频文件audio.m4a,也download下来,是一段语音,贴心的告诉我们 :user tiago ,这应该就是用户名了
(另外我还看了一下当前的路径,避免乱翻之后,找不回这个网站目录了)
其实没有这个语音也可以找出用户名
只需要用 cd .. 指令随便翻翻,就可以看到home文件夹里面有tiago的文件夹。
另外,其他博客上也有一个方法
用python 启动终端,获取用户名,前提是目标vm有python 的编译环境
python -c 'import pty; pty.spawn("/bin/bash")'
但是我觉得这个方法不好用,因为我用这个方法会遇到键盘编码不统一的问题 退格和del键都没法用,输入命令太麻烦,怎么调试我的终端键盘编码也没用。但是这个方法确实可以一眼看出用户名。
有了用户名,还需要密码
在从网站目录里面找找有什么有用的
在/var/www/html/sites/default目录下哟一个settings.php,这可能是配置文件,下载下来
里面有一个密码,应该是登陆数据库的密码。不过登陆系统的可能也是这个
尝试用这个密码ssh登陆系统
成功了
可以用这个账户登陆mysql,看网站的数据库
但是这个用户并没有root权限
下一步是提权
用uname -a 发现这vm的内核版本是2.6
搜索一下相关漏洞
- searchsploit
有很多,这里用的是dirty crow 40847(新版本的Linux早已修复了这个漏洞)
用cp命令把40847.c复制到主目录
用scp命令把代码文件上传到目标vm
- scp 40847.cpp tiago@192.168.140.131
这里可能会出错,提示permission denied 所以最好用ssh登陆,然后用mkdir命令建立一个文件夹,这样tiago就有对这个文件夹的读写权限了。再上传,把目录名写对,应该就不会出错了。
上传成功后,用g++命令编译
- g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 1111 40847.cpp -lutil
-
-Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告
-
-pedantic 允许发出ANSI/ISO C标准所列出的所有警告
- -O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
- -std=c++11就是用按C++2011标准来编译的
- -pthread 在Linux中要用到多线程时,需要链接pthread库
- -o dcow gcc生成的目标文件,名字为1111
成功获取root权限
flag已经可以看到了