8.安全牛PHP代码审计:代码审计之XSS漏洞

XSS漏洞的危害

  1. 盗取用户的cookie
  2. 跳转的钓鱼网站
  3. 蠕虫
  4. 查看浏览器信息

1.反射型XSS

非持久性XSS,也叫反射性XSS,通过GET和POST方法,向股务器端输入数据。用
户输入的数据通常被放置在URL的 query string中,或者是form数据中,如果服务
器端对输入的数据不进行过滤,验证或编码,就直接将用户输入的信息直接星瑙给
客户,则可能会造成反射型XSS
反射型XS是比校昔遍的XSS,其危害程度遹常被认为较小,但是某些反射型
XSS造成的后果会很严重,如在输入框的name中输入metahttp
equI’ refresh’ content="5’/>,殷务器不加处理,将name的值直接送到浏
器,则浏岚器会每5秒自动新一次严重者会导致服务器崩溃

  1. 测试
    代码

    <!DOCTYPE html>
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    	<title>测试XSS测试</title>
    </head>
    <body>
    
    <h1>请输入</h1>
    <form action="" method="post">
    <input type="text" name="fname">
    <input type="submit" value="提交">
    
     
    if(isset($_POST['fname'])){
    	$a=$_POST['fname'];
    	echo "
    "
    ."你输入的是:".$a; }else{ } ?> </body> </html>

    8.安全牛PHP代码审计:代码审计之XSS漏洞_第1张图片
    输入什么他就返回什么,没有进行过滤
    我们输入
    可以看到在web页面上被执行了
    8.安全牛PHP代码审计:代码审计之XSS漏洞_第2张图片

  2. 闭合xss
    代码

      
    $a=$_GET['a'];
    ?>
    
    <script>
    	var xss='';
    	document.write(xss);
    </script>
    

    代码介绍

    URL介绍
    s使用来闭合前面的
    就可以执行了8.安全牛PHP代码审计:代码审计之XSS漏洞_第3张图片

存储型XSS

持久型,也叫存储型XSS。通常是因为服务器端将用户输入的恶意脚本没有通过
验证就直接存储在数据库,并且毎次通过调用数据库的方式,将数据呈现在浏览器
上。则该XSS跨站脚本攻击将一直存在。若其他用户访问该页面,则恶意脚本就会
被触发,用于盗取其他用户的私人信息。

  1. 测试
    代码
    写入数据库
    文件a.php

    <!DOCTYPE html>
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>登陆</title>
    </head>
    <body>
    	<form action="" method="post">
    		请输入ID:<input type="text" name="id"><br/>
    		要保存的内容:<input type="text" name="user"><br/>
    		<input type="submit" value="点击"/>
    	</form>
    
    
    
    	if(isset($_POST['id'])&&isset($_POST['user'])){
    	$id=$_POST['id'];
    	$user=$_POST['user'];
    	$s = "127.0.0.1";
    	$u= "root";
    	$p = "123456";
    
    	// 创建连接
    	$conn = mysqli_connect($s, $u, $p);	 
    	// 检测连接
    	if (!$conn) {
    	    die("连接失败: " . mysqli_connect_error());
    	}
    	
    	mysqli_select_db($conn,'xss');
    
    	$a="INSERT INTO user VALUES ($id,$user)";
    
    	if(mysqli_query($conn,$a)){
    		echo "创建成功".'
    '
    ; }else{ echo "创建失败"."
    "
    ; } mysqli_close($conn); echo "关闭成功"; }else{ } ?> </body> </html>

    存储的内容如下
    8.安全牛PHP代码审计:代码审计之XSS漏洞_第4张图片
    查看一下数据库已经存入到数据库里面了
    8.安全牛PHP代码审计:代码审计之XSS漏洞_第5张图片

  2. 输出数据库

    	
    	$s = "127.0.0.1";
    	$u= "root";
    	$p = "123456";
    
    	// 创建连接
    	$conn = mysqli_connect($s, $u, $p);	 
    	// 检测连接
    	if (!$conn) {
    	    die("连接失败: " . mysqli_connect_error());
    	}
    	echo "连接成功"."
    "
    ; mysqli_select_db($conn,'xss'); $a="SELECT * FROM user"; $b=mysqli_query($conn,$a); echo "当前数据库有"."
    "
    ; while ($DuQu=mysqli_fetch_assoc($b)) { echo "\"".$DuQu['id']."\"".$DuQu['user']."
    "
    ; } mysqli_close($conn); echo "关闭成功"; ?>

    可以看到直接就执行js代码了
    8.安全牛PHP代码审计:代码审计之XSS漏洞_第6张图片

MOD型XSS

DOM,全称 Document Object Model,是一个平台和语言都中立的
接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及
样式。
DOM型ⅩSS其实是一种特殊类型的SS,它是基于DOM文档对象模
型的一种漏洞。

你可能感兴趣的:(代码审计,代码审计,xss)