小白实战vulnhub DC1
来了来了,第一次玩渗透靶机,有点激动,这篇博文主要用于笔记记录作用,有很多不对之处希望得到大家的指教。
环境介绍
靶机:安装在virtualbox上的虚拟机 DC1 192.168.56.102
攻击机:Kali 192.168.56.1
网络配置
鉴于这是第一个靶机,后面的靶机基本都是使用相同的网络配置,这里得说明下网络设置
我对这方面了解也不多,只能说下能让自己能理解通的歪道理。
每次我打开虚拟机时,kali主机就会出现vboxnet0网卡
我理解为在virtualbox中使用这块网卡为其它虚拟机提供网络服务
DHCP服务器理解就是为靶机在地址池中为分配一个ip地址
靶机网络配置为host-only,这样设置使得靶机只能和本地主机通信,可以保护自己的电脑,当该靶机启动后,就会向DHCP服务器申请一个ip地址使用
靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/#top
解压后在virtualbox上导入就行,网络设置为only host
安装过程中间遇到usb问题,关闭usb即可。反正我们靶机又不用usb。
然后直接打开,系统为debian,打开后界面如下
这是什么情况,吓的我赶紧去官网找登录系统的账号密码(我以为要登录系统打开Apache之类的web服务),把官网的每个词都翻译了便,没有账号密码这一说。
实战过程
DC1靶机有5个flag,我们开始吧。
寻找靶机
这个靶机是一开机时就提供服务端,没有提供任何信息,我们唯一知道的就是这台靶机肯定会在我们的地址池中。
上nmap,使用-sn参数探测存活主机
192.168.56.100就是我们的DHCP服务器,不用管
接着我们扫描开放端口
80端口有开放,有提供web服务
我们在浏览器中输入http://192.168.56.102:80,成功获取到靶机提供的服务
小白的思路
面对这样的一个网站,我们先按照正常思路来一遍。
查看robots.txt文件
也许有用的信息就是admin之类的像后台登录页面,然后我们被拒绝访问了。
那先尝试注册一个账号登录看看其它页面有没有什么漏洞可以利用吧。(这里也尝试了万能密码,不行)
但是在注册页面发现密码会发送给邮箱,恩。。。这里哪去发邮箱。
不让我注册,那我就猜存在的用户把。使用burp结合kali自带的用户名密码字典**,这里傻了,用户名密码同时**的payload有1亿条。。。。明年见。。。。
这样不行啊,决定先固定密码**用户名,看存在哪些用户,再去**密码。正在我准备又去犯傻时我先随便输入了一个用户登录,然后我发现!!!!
IP被限制了,根本就不让**呀。
这里得总结下经验,可以先通过repeater模块多发几次包,来测试有没有限制短时间大量访问。
最后我还是屈服了,找了下网上的教程,向大佬们学习吧。
以下过程是按照大佬们的经验来的,没有多少创新,更多是自己的理解。
实战开始
查看网络架构:
这里看下能不能利用cms的漏洞。
那这里顺水推舟介绍下Drupal,Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。
使用msf,先搜索一下有什么漏洞没
Auxiliary模块估计是探测是否存在该漏洞,试了一下
也不知道效果是什么,管他那么多,直接上exploit吧
就是这么强大
进入shell
查看一下当前路径,再看一下当前路径的文件
找到flag1.txt,打开看看
哇,这就是传说中找到flag的感觉吗!
然后我又懵了,下一步怎么办,要我提权?还是去一个一个的翻寻目录
原来第一个flag也是提示,cms系统有配置文件,我们去找找配置文件
我更希望获取一个webshell可以像使用服务器的命令一样去操控文件,进入shell,然后把shell升级为交互式shell,这里使用python的pty模块
成功找到flag2,并且获取了数据库的账号和密码
翻译一下flag2:暴力和字典攻击不是唯一获得访问的方法(而且您将需要访问权限)。你能用这些证件做什么?
似乎在内涵我?
不管了,先用数据库账号密码看看数据库有什么吧。
表挺多,但一般我们看和用户有关的表,如users。这里的用户wang就是我注册的号,但是没法使用。
这里列太多了了,有几列显示不下就在前面挤一挤了
解密admin账号是不行了,我们是不是可以把admin的密码通过update给他改了呢。但是我们要找到网站的hash加密方法。这里就在网站根目录下,正常情况下谁会这么放,获取取名这么明显,所以信息收集步骤很重要,开始就要搞清楚完整的架构。
我们先把准备的密码wangyue通过网站的方式加密下
然而这里报错,大概就是scripts目录下找不到includes中的某个文件
然后我去找了找,includes文件竟然和scripts文件在同一目录下,于是把includes目录即里面的内容拷贝到scripts目录下
然后执行这个脚本获取密码
$S$DBJVEastMqDkYmX1HaB9/rDfwcjghaTUC.uG94OS3oPE24JzVHP9
保存好,更改密码
然后就使用admin/wangyue登录上去吧
哈哈哈终于看到了网站的主页,还拿到了这么高的权限
在content中就可以找到flag3
翻译一波:
大概就是/etc/shadow 里面有好东西,尝试find -exec去获取吧
这个文件一般需要root用户查看,我们来提权吧。
寻找拥有特殊权限suid的命令,发现确实存在find
我们便可以使用find -exec来提权
使用/bin/sh 持续获取权限
可以看到flag4是hash加密的,想想这个文件也是吧,解密算了(我也只会解md5。。。。)
不如看看/etc/passed
这flag4用户的登录目录不对劲,去看看
Get flag4
厉害了呀,再翻译一波,用root身份去访问最后的flag,可能不简单。。。。
好像是不简单,我都不知道在哪找啊。
最后找了攻略,好吧是我翻译错了,正确翻译是在root目录下找到这个文件。。。。
get finalflag
这里就结束了
回头看了下,没有root权限可以拿flag4,但是不能进入/root目录,需要root权限,便提权,所以flag5的难度是提权
总结
回头总结一波,我们通过cms Drupal的漏洞使用msf直接连接靶机,获取倒了webshell,通过把webshell升级为交互shell,然后在服务器可以随意走动,通过配置文件,我们知道了了数据库,登录本地数据,查询关键表,找到了用户admin,发现admin账号的密码经过特殊hash加密,于是便在靶机中寻找哈希加密的程序,通过把已知字符串经过相同加密后,修改用户的密码,然后使用修改的账号密码登录到网页。得到管理员权限,窃取敏感信息。最后通过find的suid提权获取root权限,获取root目录下的敏感文件。
获取登录用户的其它方式
通过搜索发现drupal的利用资源,我们的网站是drupal7,发现中间有sql注入漏洞
查看其中一个sql注入漏洞的利用python脚本
这里考验读代码的能力,前面的DrupalHash一大堆很难看懂,但不难猜,是看的后台password-hash.sh脚本,使得使密码的哈希加密相同,然后在通过insert插入用户名和加密后的结果。
对着使用这几个参数就可以了把。所以总结一下这是个添加用户的脚本。
于是我们来试一试,具体实现原理就不看了,会用就行,主要人菜,后面慢慢学吧。
注意这里运行使用python2.7运行
一样可以达到同样的效果。