1. 基本信息
Kali IP: 192.168.26.131
靶机IP: 192.168.26.134
2. 信息收集
开启靶机,确定IP
同时使用 nmap -sn 也能确定
确定为 192.168.26.134
对其进行端口扫描
对端口进行详细信息扫描
3. 渗透测试
21端口关闭,就先着手查看80和1898
查看打开80端口页面,就简单的靶机logo
查看 1898端口页面
看到登录页面,尝试sql注入,无果
查看下面的帖子
在参数 ?q=node/3下,有段mp3的音频,尝试听一下,没有什么重要信息
尝试改变参数为 ?q=node/1 为home页面第一篇文章
?q=node/2
查看qrc.png 为一个二维码,结果为:Try Harder!Mua Huahua
听 audio.m4a 为:user:tiago
到此可以尝试爆破密码
3.1. Get Shell
利用cewl工具爬取网站信息,创建密码字典
cewl http://192.168.26.134:1898 -w lampiao.txt
利用hydra进行爆破
hydra -l tiago -P ./lampiao.txt ssh://192.168.26.134
得到 账号:tiago 密码:Virgulino
利用SSH登陆进去
查看 tiago 账号的 sudo权限,为无
又因为扫到了 robots.txt 文件,进行查看
知道该网站的CMS是 Drupal 7 ,进一步查看CHANGELOG.txt 发现是 Drupal 7.54
在网上搜索 Drupal 7.54 的漏洞,
【漏洞分析】Drupal远程代码执行漏洞(CVE-2018-7600)分析 – 绿盟科技技术博客
云鼎实验室:Drupal CVE-2018-7600 分析及 PoC 构造
查看msf中关于 drupal 的漏洞利用模块
因为文章里讲的是利用API接口的表单渲染功能造成 RCE,所以我们尝试使用第一个模块,获取到shell
利用攻击模块,设置好目标主机和端口后,获取了一个会话,但并非交互式 shell (注意这里 ssh 服务开放,我们需要一个完整正确的终端运行),这里利用 pty 模块创建了一个原生终端。
python -c 'import pty;pty.spawn("/bin/bash")'
获取 www-data 的 bash
网站目录里翻阅查看,发现有设置文件,进入 www-data 用户进一步查看文件
发现其数据库账号密码,尝试连接
用 www-data 用户连接数据库
mysql -udrupaluser -pVirgulino
并且查看 drupal 的数据库内容
查看到里面账号和密码都加密了
那就大胆猜测网站账号密码是不是 tiago ssh登录的账号密码Virgulino
或者找到加密算法,也可以修改其密码进行登录,详情可以参考这位大佬的文章:
【假图片】由于暂停了一次靶机,导致网页访问不到了,所以此处网站登录没有进行尝试,如果有知道的小伙伴可以留言指教~
但是并不影响我们进行提权~
3.2. 提权
查看Linux版本及内核信息
如果低于以下版本则存在脏牛漏洞
Centos7 /RHEL7 3.10.0-327.36.3.el7
Cetnos6/RHEL6 2.6.32-642.6.2.el6
Ubuntu 16.10 4.8.0-26.28
Ubuntu 16.04 4.4.0-45.66
Ubuntu 14.04 3.13.0-100.147
Debian 8 3.16.36-1+deb8u2
Debian 7 3.2.82-1
对应上面版本
Ubuntu 14.04 内核版本 4.4.0
但我还有个疑问,网上查阅资料,感觉这个内核版本有点对不上Dirty-Cow漏洞版本呢,还请大佬指教
漏洞范围:Linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)
简要分析:该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write, COW)时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限。
选择 40847.cpp
找到其路径,并拷贝到当前文件夹下
开启http服务
python3 -m http.server 8888
靶机在tmp目录下用 wget 下载 cpp文件
进行编译,并运行
g++ -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil
-ON
指定代码优化的级别为 N , o <= N <= 3
-std = c++11
就是用按 C++ 2011标准来编译的
-pthread
在 Linux 中要用到多线程时,需要链接 pthread 库
-o FILE
FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,缺省文件名是a.out,这里是 40847
至此,root密码已经爆出:dirtyCowFun
4. 总结
这算是我第一个完整的打下一个靶场吧,从信息收集到漏洞利用到getshell,再到提权,每一步都是摸索着去做的,还需多练!
知识点:
- 看了一些大佬的视频,信息收集的作用是至关重要的!要详细的进行信息收集,不能漏掉任何一丝可能!
- 信息收集完,每条信息都需按照可能性进行排序再进行利用,把利用成功概率大的优先尝试,例如 ftp、http端口等
- 爆破可能性很小,但是未尝不可尝试呢?
- 也学习到了利用 cewl 进行网站爬取生成字典,不然直接用big wordlist爆破到猴年马月都出不来啊!
- 提权漏洞还需多尝试多学习,原理还不理解