当前位置: 首页 > article >正文

基于PHP评论区的存储型XSS漏洞

评论区的XSS漏洞是指攻击者在评论区输入恶意脚本,当其他用户浏览该页面时,这些恶意脚本会被执行,从而造成安全威胁。这种漏洞通常出现在网站没有对用户输入进行充分过滤和转义的情况下,为存储型XSS。存储型XSS攻击是指攻击者在目标网站上注入恶意脚本,当其他用户访问该网站时,恶意脚本会被执行。为了创建一个有存储型XSS的靶场环境,我们需要一个PHP后端来处理用户的输入并将其存储在数据库中,然后当其他用户访问这些内容时,恶意脚本将被执行。

1.创建评论区存储型xss所需的数据库内容

CREATE DATABASE xss_vulnerable_comments;
USE xss_vulnerable_comments;

CREATE TABLE comments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 2.创建一个带有存储型XSS漏洞的评论区PHP代码

<?php
include 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $content = $_POST["content"];
    $sql = "INSERT INTO comments (content) VALUES ('" . $content . "')";

    if ($conn->query($sql) === TRUE) {
        echo "评论添加成功";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>评论</title>
</head>
<body>
    <h1>评论发表</h1>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <label for="content">发表内容:</label><br>
        <textarea name="content" id="content" rows="4" cols="50"></textarea><br>
        <input type="submit" value="提交">
    </form>
    <hr>
    <h2>评论</h2>
    
    <?php
    $sql = "SELECT content FROM comments";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "<p>" . htmlspecialchars_decode($row["content"]) . "</p>";
        }
    } else {
        #无评论
        echo "";
    }
    $conn->close();
    ?>
</body>
</html>

3.数据库配置config.php

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";
$dbname = "xss_vulnerable_comments";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
?>

4.通过XSS漏洞获取cookie

利用BlueLotus获取cookie

1.BlueLotus的安装

地址:https://github.com/trysec/BlueLotus_XSSReceiver

2.创建cooke.js

 3.生成payload

4.评论发布payload

5.获取到cookie

每篇一言:有些错误无法犯两次,有些事绝对不会无趣。

 


 


http://www.kler.cn/a/291852.html

相关文章:

  • InfluxDB时序数据库笔记(一)
  • SQLite 和 MySQL语法区别
  • 基于 CentOS7.6 的 Docker 下载常用的容器(MySQLRedisMongoDB),解决拉取容器镜像失败问题
  • 安全见闻(完整版)
  • 如何利用SAP低代码平台快速构建企业级应用?
  • 如何从docker-hub下载镜像
  • 中间件解析漏洞(附环境搭建教程)
  • Rust :也谈Json与转换
  • Harmony南向驱动开发: HDC与真机调试
  • Java【数组】
  • Docker占用根目录/存储空间过多如何清理?
  • windows@命令行安装国内软件@scoop和winget安装国内软件
  • 设计模式—2—单例模式
  • 【C++ 第二十章】模拟实现 shared_ptr(可以拷贝的智能指针)
  • 【Ubuntu20.04】配置深度学习环境
  • 机器学习周报(8.26-9.1)
  • 【C++ Primer Plus习题】9.3
  • C# 删除Word文档中的段落
  • Golang 内存泄漏详解:原因、检测与修复
  • 【论文阅读】LLM4CP: Adapting Large Language Models for Channel Prediction(2024)
  • 啄木鸟上门安装维修系统源码开发
  • 【个人笔记】VCS工具与命令
  • 钢铁百科:Q420DR力学性能、Q420DR执行标准、Q420DR低温容器钢板
  • 自己设计的QT系统,留个档
  • Docker 容器编排之 Docker Compose
  • Arcgis将图层转shape文件