每日学习~ 冲冲冲
靶场下载地址:https://www.vulnhub.com/entry/dc-1,292/
渗透靶场:VirtualBox
攻击靶机:本地机+kail(VMware)
Flag:5个
启动DC-1靶机,界面显示登录界面,这是正常运行情况,我们也并没有登录账号,需要自己去渗透测试进行提权。回到我们的攻击机
(1)扫描内网,发现目标主机IP
使用命令:arp-scan -l
发现内网中的主机
arp-scan 是 kali自带的一款轻量ARP(地址解析协议)扫描工具,该工具会自动解析MAC地址,并获取对应硬件厂商。可用于扫描局域网内的所有设备,发现隐藏设备。
(2)利用nmap对目标主机进行端口扫描,发现开放端口
使用命令:nmap -sV -p- 192.168.43.144
-sV 用来扫描目标主机和端口上运行的软件的版本
-p 80 指定80端口
-p- 扫描0-65535全部端口
访问主页,进行渗透测试前最重要的环节:信息收集
(1)使用插件Wappalyzer
对网站进行指纹识别
可以得知该网站的CMS是Drupal
,且版本为7.0
在msf中查找Drupal存在的漏洞信息,百度一下查看是否存在7.0版本的漏洞,发现有个2018年的CVE-2018-7600 远程任意代码执行漏洞,通过msf也发现了该漏洞。
使用对应脚本进行测试,使用show options命令查看脚本所需设定参数
设置靶机的IP就可以执行exploit。
当提示session1 open
时 getshell!
切换到shell模式,就可以执行任意系统命令了
查看当前目录下的文件
但我们现在获取的shell并不是一个具有完整交互的shell,为了便于查看内容,我们可以利用python脚本反弹一个shell,转换成为完全交互式的TTY,详情可参考文章
执行命令:python -c "import pty;pty.spawn('/bin/bash')"
,切换到交互式shell
Drupal的配置文件是 sites/default/settings.php
,其主要是数据库连接配置
执行命令,查看配置文件,发现了flag2 并获得数据库的账号密码,并给予部分提示。
登录本地mysql数据库,查看信息:mysql -u dbuser -p
简单查看一些主要信息:
show databases //查看存在的数据库
use drupaldb //选择数据库
show tables //查看当前数据库内的表
desc 表名 //查看表结构
发现一个user表,查询其内容
发现账号,和经过加密的密码,导致我们无法知道密码进行登录,根据之前的flag2中给的提示暴力破解不是唯一的方法,
因为Drupal 7已不再采用Drupal 6和5时代的简单的MD5加密了,所以我们无法直接爆破。
据某个帖子说就是因为现在有个在线的MD5数据库,可以直接查询到MD5码的原文,因此
Drupal 7的开发者认为不能再继续采用这种极不安全的方法了,因此Drupal 7采用了新型
的Hash加密方法来确保密码安全。“加了盐(Salt)“的MD5码
在Drupal 7的安装目录中的scripts目录下,是Drupal 7开发者提供的PHP脚本,其中包含了MD5加密算法脚本:password-hash.sh
,可以利用脚本直接生成。
将新生成的密码更新数据库
或者网络搜索该cms框架忘记密码的解决办法,有现成做好的明文和密文。
使用searchsploit查找可用漏洞,再利用exp直接添加
根据之前的提示,cat /etc/passwd
可以发现flag4的用户
进入flag4用户的目录下,发现flag4.txt文件,并给予提示 flag in root
之前给了提示 flag in root 说明我们需要提权 使用root权限才能去发现flag文件
要想有root权限:
(1) 以root账户登录(尝试使用爆破未果)
(2) 普通用户登录,使用具有管理员权限但可以不是管理员身份的命令去get shell
这里利用find 命令,利用它可以使用root权限。
执行命令: find /root
可以发现有个flag文件
获得文件内容:find /root/thefinalflag.txt -exec cat {} \;
(利用exec后面的命令直接抓取该文件)
概述: SUID可以让调用者以文件拥有者的身份运行该文件。
SUID提权的思路: 以普通用户身份运行root用户所拥有的SUID的文件,那么普通用户运行该文件的时候就得获得root用户的身份了
常见可用于suid提权的命令
Nmap
Vim
find
Bash
More
Less
Nano
cp
获取目标文件
以下命令可以发现系统上运行的所有SUID可执行文件。
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {
} \;