20155318 《网络攻防》 Exp9 Web基础

基础问题

  • SQL注入攻击原理,如何防御
  • 就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
  • 预防:可以在后台控制输入的长度,对于一些特殊符号禁止用户输入
  • XSS攻击的原理,如何防御
  • XSS跨站脚本攻击,是Web程序中常见的漏洞,分三类,存储型XSS、反射型XSS、DOM-XSS.XSS属于被动式且用于客户端的攻击方式,攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
  • 预防:对用户提交的的内容进行可靠的输入验证,在输入到输出的过程中进行过滤、转义
  • CSRF攻击原理,如何防御
  • CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器
  • 对于表单的提交这类操作使用post方法代替get方法,避免使用全站通用的cookie,用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

实验过程

开启WebGoat

  • WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,包含了XSS、线程安全、SQL注入等。

  • 在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat

  • 出现如下信息表示成功

  • 此时不要关闭命令行,打开浏览器访问localhost:8080/WebGoat,登录成功后可进行练习。

XSS注入攻击

  • 1.Phishing with XSS

  • 该实验的目的是读取登录用户的用户名和密码。修改html的源代码,生成一个包含form的html,写一个js将form提交的内容发送给攻击者,用弹窗alert做示例

  • 首先输入编辑的XSS攻击的代码,将这段代码输入到输入框中,点击search出现如下登录框,会显示如登陆框:

  • 在登录框中输入用户名、密码,点击登录后跳出弹框,其中包含用户输入的用户名、密码。

  • 2.Stored XSS Attacks

  • 通过在title中输入代码使用户访问时弹出非预期的内容。在这里我们在title中输入代码<script>alert("你想在页面中显示的内容");</script>

  • 3.Reflected XSS Attacks

  • 将带有攻击性的URL作为输入源,例如依旧输入<script>alert("想要显示的内容");</script>,就会弹出对话框:

  • 这个和上个实验效果类似,但是两者所用的原理不一样,上一例存储型XSS是持久化的,代码是存储在服务器中,而这个实验中用的是反射型XSS攻击是非持久化的,一般来说存储型XSS攻击危害更大。

CSRF攻击

  • 4.CSRF攻击

  • 跨站请求伪造这个实验的目的是通过邮件的方式伪造一个转账请求。我们需根据题目里给出的数值参数来输入代码,在文本框中写入<iframe src="attack?Screen=题中给出的scr&menu=题中给出的menu&transferFunds=转账金额"></iframe>

  • 具体的参数可以参照右边的参数栏

  • 提交后,会看到一个新的消息。点击它,用户的5000元就会被转走

  • 5.绕过CSRF确认(CSRF Prompt By‐Pass)

  • 网页中所有手动发起的请求操作,其实质是通过 HTML+JavaScript 向服务器发起请求。

    我们的目标是给新闻组发送一封带有多个威胁请求的 Email

  • 查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 查看用户操作的信息,攻击成功

SQL注入攻击

  • 6.命令注入(Command Injection)

  • 在正常的参数提交过程中,添加恶意的代码,往往能够得到以外的收获,比如执行系统命令。

  • 点击firebug,调试网页源代码。在所请求的页面源代码中添加"& netstat -an & ipconfig"

  • 点result后出现了网络端口使用情况和IP地址。

  • 7.日志伪造(Log Spoofing)

  • 通过注入恶意字符串,按照规则伪造出一条日志,目的是使用户名为“admin” 的用户在日志中显示“成功登录”。在Username输入```lxy%0d%0aLogin Succeeded for username: admin``,其中%0d是回车,%0a是换行符。

  • 8.String SQL Injection

  • 先随意输入一个用户进行查询

  • 和数字sql注入相同,输入' OR '1'='1,也就是当1=1时输出信息,又由于1=1为恒等式,所以所有的用户信息都会被输出。

  • 9.Numeric SQL Injection

  • 先查询一下不攻击的情况

  • 需要尝试追加一个总是解析为true的SQL语句,拦截POST请求,用101 or 1=1替换101,将语句替换为SELECT * FROM weather_data WHERE station = 101 OR 1=1,即在查看器中更改代码如下图所示:

  • 攻击后即可查询全部城市天气

  • 10.Blind Numeric SQL Injection

  • 在输入框随意输入一个数字,运行后发现返回Account number is valid,说明这个数是合法的

  • 构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );根据返回结果判定合法范围

  • 判断2363

  • 判断2364

  • 使用二分法进行测试,确定值是2364,输入2364后破解成功

实验总结

  • 本次实验在Webgoat平台上完成,通过命令注入、日志欺骗、数据库后门等方式,进行网络攻击。本次实验较为简单,选取了10个进行记录,在实验过程中遇到的问题,通过查询网上资料和参考其他同学的博客都得到一一解决。这次实践加深了我对这门课的认识,有很强的实用性~

20155318 《网络攻防》 Exp9 Web基础的更多相关文章

  1. 《网络攻防》Web基础

    20145224陈颢文 <网络攻防>Web基础 基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览 ...

  2. 20145237《网络攻防》Web基础

    基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览器可以解析运行什么语言: 超文本标记语言:HTML: 可扩展 ...

  3. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  4. 《网络攻防》Web安全基础实践

    20145224陈颢文 <网络攻防>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御: 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数 ...

  5. 20145326蔡馨熤《网络对抗》—— Web基础

    20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...

  6. 20155305《网络对抗》Web基础

    20155305<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  7. 20155307实验八 《网络对抗》 Web基础

    20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...

  8. 20155311《网络对抗》Web基础

    20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...

  9. 20145216史婧瑶《网络对抗》Web基础

    20145216史婧瑶<网络对抗>Web基础 实验问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签.表单域.表单按钮. (2)浏览器可以 ...

随机推荐

  1. Python Python-MySQLdb中的DictCursor使用方法简介

    Python-MySQLdb中的DictCursor使用方法简介 by:授客 QQ:1033553122     DictCursor的这个功能是继承于CursorDictRowsMixIn,这个Mi ...

  2. 接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

    基于python实现的http+json协议接口自动化测试框架(实用改进版)   by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436     目录 1.      ...

  3. Python 基于python实现的http接口自动化测试框架(含源码)

    基于python实现的http+json协议接口自动化测试框架(含源码) by:授客 QQ:1033553122      欢迎加入软件性能测试交流 QQ群:7156436  由于篇幅问题,采用百度网 ...

  4. js替换数组中字符串实例

    这个是替换数组中的一个对象字符串: 直接上代码: var aaa=[ {"name":"张珊","sex":"man"} ...

  5. Android 2018最新的三方库

    文章出处https://blog.csdn.net/qq_32368129/article/details/78749880 1.MaterialStepperView 它是用Material Des ...

  6. linux 查找匹配文件中包含指定字符的 前五行,这里是指所有匹配的前五行

    最近被问到 一个关于查找匹配字符的信息显示问题: 系统/etc/sysctl.conf文件会定义系统内核的一些配置,请查找和net有关的信息,并只打印前面5行信息. 解决方式大概试两种写法均可: 1. ...

  7. .NET中低版本程序调用高版本DLL

    在.NET项目开发中,有时需要对旧的程序进行二次开发,但是有些DLL是高版本的,如果对旧程序升级高版本,则需要改动的地方比较多,在项目比较急,开发时间短的情况下,可以通过下面方法让低版本程序调用高版本 ...

  8. BBR,附CentOS 6/7配置过程

    最近这段时间BBR都比较火,前面有说如何在CAC的Debian-8-64bit安装BBR正确打开方式,现在说下,CentOS 6/7配置过程. 推荐理由:没配置BBR前,用SS看U2B的速度206K/ ...

  9. 解决Hsqldb指针只能单向移动,不能回滚问题(.first())

    Class.forName("org.hsqldb.jdbcDriver").newInstance(); Connection con = java.sql.DriverMana ...

  10. Interpreting /proc/meminfo and free output for Red Hat Enterprise Linux 5, 6 and 7

    Interpreting /proc/meminfo and free output for Red Hat Enterprise Linux 5, 6 and 7 Solution Verified ...