基于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
每篇一言:有些错误无法犯两次,有些事绝对不会无趣。