avatar

漏洞测试作业十一:跨站脚本攻击

题目

复现课本实验三,通过img和script两类方式实现跨站脚本攻击,撰写实验报告,有能力者,可以自己撰写更安全的过滤程序

解答

xss_test.php

<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("congratulations");// 确认对话框,验证攻击是否成功
}
</script>
</head>
<body>
<h1 align=center>--welcome to the simple xss test--</h1>
<?php
ini_set("display_errors",0);
$str=strtolower($_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
echo "<h2 align=center>Hello ".htmlspecialchars($str).".</h2>".'<center>
<form action=xss_test.php method=GET>
<input type=submit name=submit value=Submit />
<input name=keyword value="'.$str4.'">
</form>
</center>';
?>
</body>
</html>

script方法

image-20200606153408601

查看网页源码

image-20200606172501291

输入123

image-20200606172530633 image-20200606172642371

输入<script> alert('123');</script>

image-20200606173234809

猜测源代码中有替换script功能的代码,htmlspecialchars可以实现预定义字符的转换

输入<scrscriptipt>alert('123');</scriscriptpt>

image-20200606173527497

显示<script> alert(\'123\');</script>

">替换高亮部分,是<input 闭合

image-20200606173850964 image-20200606173940533

输入"> <scriscriptpt>alert();</scscriptript>

攻击成功(没有关闭双引号转义,攻击依然成功)

image-20200606174834745

img方法

==<img src=ops! onerror=”alert(‘XSS’)”>==

<img>标签是用来定义HTML中的图像,src一般是图像的来源,而onerror事件会在文档或图像加载过程中发生错误是被触发。所以上面这个攻击脚本的逻辑是,当img加载一个错误的图像来源ops!时,回触发onerror事件,从而执行alert函数

在phpnow/php/php-apache2handler.ini中修改查找到的第二个magic_quotes_gpc=Off,关掉双引号转义

image-20200606180957018

输入"><img srsrcc=ops! oonnerror="alert()">

攻击成功

image-20200606181440535

更安全的过滤程序

循环检测输入语句中是否有scripts,on,src的关键字

Author: Michelle19l
Link: https://gitee.com/michelle19l/michelle19l/2020/06/08/漏测作业/漏测作业十一/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶