vulnhub-DC系列1
1.写在前面
这里是vulnhub靶场练习的第二篇,也是DC系列的第一个,后续计划完成1-8整个DC系列。
学习过程中不应该拘泥于实现的具体细节,先掌握整体思路和方法及技巧。
后续再慢慢补充漏洞深入的研究。当然,并不是说理解漏洞原理不重要,毕竟这是一切的前提。
Tips:DC1 一共有5个flag
2.知识点速记
- msf-payload速查
- meterpreter的使用
- mysql查询
- 数据库密码重置-思路
- hydra爆破
- suid提权-find
3.环境配置
直接去vulnhub官网下载 Vulnhub-DC1对应的ova文件即可,然后拖入vmware。这里为了方便宿主机与靶机通讯,将虚拟机的网络模式设置为了NAT模式
Win10 宿主机、kali2020 攻击机、vulnhub靶机
4.信息收集
环境配置好后,首先确认一下IP,在kali上查看当前IP为 192.168.114.128
对当前网段的主机进行扫描
1 |
|
目标主机192.168.114.131
,存在开放端口22、80、111
。
- http:drupal 7,暴露robots.txt
- ssh:先记着,后面有用
看了看网站的robots.txt,几个文件都没有什么有用的信息。
5.漏洞利用
5.1 msf-payload速查漏洞
这里引出第一个常规思路: 在爆破、字典等常规操作无果后,如果已知网站的框架或组件,可以去搜索对应框架、组件的版本是否存在漏洞,这里去搜索drupal7漏洞,可以发现有很多可以尝试的,我们可以一一测试。当然在kali下,msf已经集成了常规框架的测试payload,非常的方便进行盲测。
知识点1:msf-payload速查
1 |
|
这里可以看到有非常多的模块可利用,简单粗暴的方式,从头到位撸一遍。然后发现上图中的第二个是能够反弹shell的。
PS:其实最常规的做法是用扫描器扫一遍,然后根据扫描器提供的准确漏洞信息,再去msf中寻找利用模块。当然如果基于poc自行测试,那更好。
反弹的shell是meterpreter的形式,这里需要提前了解下meterpreter的使用。(太久没用,忘记使用shell进本地终端了…)。顺便生成一个交互式的tty(如何生成交互式shell,可见 Vulnhub-Mr.robot 这篇文章)
知识点2:meterpreter使用
至此,我们成功获取flag1,flag1提示我们去找网站的配置文件。
5.2 mysql重置web密码
常规思路2:一般来说,网站框架的配置文件中,可能含有后台登录密码、数据库连接信息等。获取这些有助于进一步分析利用。
搜索了下drupal的后台文件路径/var/www/sites/default/settings.php
。查看下这个文件,果然不出所料,我们得到了flag2和一个本地mysql的账号密码。
这里flag2也给出了提示,暴力破解和字典并不是获得权限的唯一方式!,暗示了别从web侧找思路了……
看了下,本地也确实开放了3306端口,开搞!
知识点3:mysql语句
这里登录mysql,对下面的数据库及表进行检索,drupal的用户,是默认存放在drupaldb数据库->users表下的。
1 |
|
上面的账号及密码显示不全,这里单独检索name和pass进行展示,得到了admin的账号及密码。但这里的密码并非是明文或者md5加密的,想要破解可能很难。
知识点4:数据库密码重置-思路
这里的核心其实是如何打开思维,去思考重置的方式。如何利用搜索引擎去定位问题。
drupal7重置密码
,drupal忘记密码怎么办?
,drupal后台修改密码
,以上这些tag都可以帮助找寻重置密码的方法,不要限制自己的思维!
经过搜索,得到以下重置管理员密码的方法:
- 通过邮箱重置密码:drupal提供了邮箱重置密码功能,那通过修改邮箱地址,就可以重置密码。
- 通过drupal预置的密码生成脚本,生成新的密码,脚本位置/scripts/password-hash.sh
- 自己创建一个账号密码,把加密后的密码覆盖admin,或者本地搭建一个,看下admin默认密码。
这里最开始想到的是方法1,但是后面发现这个虚拟机drupal没有配邮件服务,这个路是走不通的,但实战中应该是ok的。然后是方式3,方式3是最容易想到的,因为毕竟破解难的话,我就不破解密码了,直接用加密后的密码覆盖即可。最后才是方式2,因为不深入搜索和学习,很难获知还有这么个脚本的存在。
这里我直接使用方式3一步到位。(Po一下百度搜索的结果)
1 |
|
上面的pass其实就是password经过drupal的SHA2加密后的密文
6.权限提升
mysql重置完密码后,登录web后台随便翻翻,在Dashbord找到了第三个flag
flag3给的提示,有几个关键词,perms、find、passwd、-exec、shadow
passwd和shadow
,想到去看看本地passwd文件,看没有什么线索。perms、find 和 -exec
,其实这里已经暗示了suid的find命令提权(和靶机Mr.robot对应上了)
那我们先看下/etc/passwd吧,发现存在flag4用户,家目录/home/flag4
,进去得到了flag4,提示可以用同样的方式获得flag5。
但flag5是在root目录下的,我们一个普通用户是看不了滴,所以得想想怎么提权到root。
6.1 hydra爆破ssh密码
上面发现可以直接cd 到 flag4目录下并查看flag4.txt,所以并没有想到如何提权到flag4用户。之后看了其他的writeup,发现是可以通过爆破前面的22端口ssh获取到flag4的密码的,这里也简单学习下,多个思路。
知识点5:hydra爆破口令
1 |
|
后续ssh过去(不过倒是方便了之后进shell,不用非得在msf下维持了)
6.2 SUID提权-find
回归正题,我们的目标是提权到root。根据前面的提示perms、find、-exec
,可以很明显知道是要利用SUID提权了。这里如果对SUID提权不了解,可以看下之前总结的一篇博客,SUID提权(挖个坑)。
知识点6:SUID-find提权
如果Find命令是以suid权限运行的话,则将通过find执行的所有命令都会以root权限执行。
而使用find查找的时候,可以通过加入-exec 参数来执行测试表达式(理解为并列执行的意思),从而以root权限执行系统命令。
1 |
|
有关find反弹shell和-p参数,可参考这篇:为什么通过 find SUID 提权反弹的 shell 不是 root 权限?
这里成功得到root权限,按照flag4的提示,进入/root/下,得到最终flag,打完收工!
7.写在结尾
对DC1学习内容做个复盘:
漏洞利用部分:主要是如何快速信息收集,从而获取网站的漏洞。在进入后台后获取系统配置文件,并根据配置文件,获得mysql账号,从而通过mysql修改web网站密码,登录web应用系统。
提权部分:提权部分主要还是通过端口服务密码爆破(flag4)及suid命令提权
其他亮点:DC1的主要亮点,感觉在于drupal的密码重置,需要掌握一定的信息挖掘和检索的思路。
几个不错的writeup: