XSS漏洞复现(CVE-2017-12794)

news/2025/1/16 20:53:29/

文章目录

  • 搭建环境
  • 启动环境
  • 漏洞复现
    • 漏洞原理

前提条件:

1.安装docker

docker pull medicean/vulapps:j_joomla_2

2.安装docker-compose

docker run -d -p 8000:80 medicean/vulapps:j_joomla_2

3.下载vulhub

搭建环境

进入vulhb目录下的joomla,复现CVE-2017-12794漏洞:

cd /vulhub/django/CVE-2017-12794

查看docker-compose的配置文件:

cat docker-compose.yml

如图,里面有两个镜像文件的配置信息,还有容器名字和端口:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后使用下面命令,搭建docker-compose并启动:

sudo docker-compose up -d && sudo docker-compose up -d

如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动环境

等待安装完成后,环境就搭建成功了,在浏览器中输入本机地址加之前配置文件中的端口10.9.75.45:8000进入环境:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

漏洞复现

漏洞原理

在使用Postgres数据库并触发异常的时候,psycopg2会将字段名和字段值全部抛出。那么,如果字段值中包含我们可控的字符串,这个字符串其实就会被设置成__cause__,最后被显示在页面中。

所以我们假设有如下场景:

  1. 用户注册页面,未检查用户名
  2. 注册一个用户名为<script>alert(/xss/)</script>的用户
  3. 再次注册一个用户名为<script>alert(/xss/)</script>的用户
  4. 触发重复键异常,导致XSS漏洞

查看该网站的源码:

def __exit__(self, exc_type, exc_value, traceback):if exc_type is None:returnfor dj_exc_type in (DataError,OperationalError,IntegrityError,InternalError,ProgrammingError,NotSupportedError,DatabaseError,InterfaceError,Error,):db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)if issubclass(exc_type, db_exc_type):dj_exc_value = dj_exc_type(*exc_value.args)dj_exc_value.__cause__ = exc_valueif not hasattr(exc_value, '__traceback__'):exc_value.__traceback__ = traceback# Only set the 'errors_occurred' flag for errors that may make# the connection unusable.if dj_exc_type not in (DataError, IntegrityError):self.wrapper.errors_occurred = Truesix.reraise(dj_exc_type, dj_exc_value, traceback)

exc_value是上一个的错误信息,traceback是上一个错误信息的回溯。这个函数其实就是关联了上一个错误信息和当前的错误信息。

在下面这段if语句中,实际上关联了两个相同类型的报错,将它们拼接到The above exception ({{ frame.exc_cause }}) was the direct cause of the following exception:

if issubclass(exc_type, db_exc_type):dj_exc_value = dj_exc_type(*exc_value.args)dj_exc_value.__cause__ = exc_valueif not hasattr(exc_value, '__traceback__'):exc_value.__traceback__ = traceback

尝试在URL输入下面代码,创建一个用户名为<script>alert(/xss/)</script>的用户:

/create_user/?username=<script>alert(/xss/)</script>

创建成功后弹出一段提示成功的信息:

在这里插入图片描述

再次创建相同名称的用户,让他们键相同,触发异常,出现xss弹窗:

在这里插入图片描述

回显的这段错误信息是说违反了键唯一的规定:

duplicate key value violates unique constraint "xss_user_username_key"
DETAIL:  Key (username)=(<script>alert(1)</script>) already exists.

错误信息拼接到The above exception ({{ frame.exc_cause }}) was the direct cause of the following exception:

在这里插入图片描述


http://www.ppmy.cn/news/1074121.html

相关文章

DHCP 服务器部署

| DHCP - - > Dynamic Host Configuration Protocol 动态主机配置协议 背景 任何一个需要上网的设备&#xff0c;都必须得有IP地址&#xff0c;子网掩码&#xff0c;网关&#xff0c;等等网络参数。比如&#xff1a;手机&#xff0c;电脑&#xff0c;智能手表&#xff0c…

【MYSQL学习笔记】管理MYSQL和使用MYSQL语句

一、前言 MySQL提供了大量的SQL语句用于管理。很多时候&#xff0c;通过SSH远程连接时&#xff0c;只能使用SQL命令&#xff0c;所以&#xff0c;了解并掌握常用的SQL管理操作是必须的。 二、管理MYSQL 输入SQL后&#xff0c;记得加一个;&#xff0c;再回车执行该语句。虽然…

USB通信学习-基础概念理解

USB通信 1、USB是轮询总线&#xff0c;USB主机发起所有数据交换。数据往返于USB设备中的端点。USB主机输出使用OUT端点&#xff0c;USB主机输入使用IN端点。USB主机中没有端点&#xff0c;数据存储于缓冲区中。从主机的FIFO到设备的端点&#xff0c;中间是Pipes。全速USB传输中…

MMSegmentation训练自己的语义分割数据集

全流程&#xff0c;训练语义分割数据集 数据标注json转mask 运行源码MMSegmentation模型选择运行部分 数据标注 # 安装 pip install labelme # 启动labelme labelme然后 ctrl N 开启多边形标注即可&#xff0c;命名类为person 之后会保存到同目录下json文件&#xff1a; js…

搭建个人备忘录中心服务memos、轻量级笔记服务

目录 一、源码 二、官网 三、搭建 四、使用 一、源码 GitHub - usememos/memos: A privacy-first, lightweight note-taking service. Easily capture and share your great thoughts. 二、官网 memos - Easily capture and share your great thoughts 三、搭建 docke…

clickhouse 系列2:clickhouse 离线安装

1.下载rpm包 Altinity/clickhouse - Packages packagecloud 使用wget下载到本地目录 wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm/download.rpm wget

IT 支持人员如何应对现代教育技术挑战

将技术融入教学实践为教育行业带来了重大变化。特别是近几年&#xff0c;技术在教育机构提供的产品和服务水平方面发挥了越来越重要的作用。 随着混合灵活教学&#xff08;HyFlex&#xff09;教学模式成为新的当务之急&#xff0c;学生和教职员工都希望技术能够满足自己对灵活…

简单聊聊Https的来龙去脉

简单聊聊Https的来龙去脉 Http 通信具有哪些风险Https Http SSL/TLS对称加密 和 非对称加密数字证书数字证书的申请数字证书怎么起作用 Https工作流程一定需要Https吗&#xff1f; Http 通信具有哪些风险 使用明文通信&#xff0c;通信内容可能会被监听不验证通信双方身份&a…