20145330 《网络对抗》 Web安全基础实践

1.实验后回答问题

(1)SQL注入攻击原理,如何防御

  • SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  • SQL注入攻击是黑客对数据库进行攻击的常用手段之一。

  • SQL注入攻击指的是就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  • 防御:

    • 1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。

    • 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

    • 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

    • 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

(2)XSS攻击的原理,如何防御

  • XSS攻击:跨站脚本攻击。
  • XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略。
  • 防御:
    • 基于特征的防御 :

      • 传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
    • 基于代码修改的防御:
      • 步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

      • 步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

      • 步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。

(3)CSRF攻击原理,如何防御

  • CSRF即跨站请求伪造。借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。

  • CSRF一般的攻击过程是,攻击者向目标网站注入一个恶意的CSRF攻击URL地址(跨站url),当(登录)用户访问某特定网页时,如果用户点击了该URL,那么攻击就触发了。

  • 防御

    • referer

      • 因为伪造的请求一般是从第三方网站发起的,所以第一个防御方法就是判断 referer 头,如果不是来自本网站的请求,就判定为CSRF攻击。但是该方法只能防御跨站的csrf攻击,不能防御同站的csrf攻击(虽然同站的csrf更难)。
    • 使用验证码

      • 每一个重要的post提交页面,使用一个验证码,因为第三方网站是无法获得验证码的。还有使用手机验证码,比如转账是使用的手机验证码。
    • 使用token

      • 每一个网页包含一个web server产生的token, 提交时,也将该token提交到服务器,服务器进行判断,如果token不对,就判定位CSRF攻击。

      • 将敏感操作又get改为post,然后在表单中使用token. 尽量使用post也有利于防御CSRF攻击。

2.实验总结与体会

通过每个具体的练习来体会各个攻击的作用,我觉得还是很有意思的。但是英文页面确实对我来说不算很友好啊。。。

3.实践过程记录

1、webgoat开启:

页面会停在最后一行(INFO:)

2、SQL注入攻击:

SQL字符串注入(String SQL Injection)

题目要求尝试使用SQL注入,使得所有银行卡都可以被展现。

首先按题目尝试输入Smith,发现查询出来都是last_name是Smith的表单,分析后知道是需要WHERE这个条件语句失效,构造语句'or 1='1

第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。将一条语句被强行拆分成为两条语句。

Log Spoofing

题目要求伪造一个username使成功登陆。

在用户名处通过使用%0d%0a(回车换行)以及文字内容输入来迷惑。

  • LAB SQL Injection

Stage 1 String SQL Injection

字符串型注入,要求使用SQL注入绕过认证,实现无密码登陆。

在密码栏输入' or 1 = 1 --,发现根本输不了这么长,查看源代码,原来最长只能输入8位,把长度限定改为15,把文本框格式改为text。

再次输入' or 1 = 1 --

Stage 3 Numeric SQL Injection

数字型注入,要求使用一个普通员工的账户,浏览其BOSS的账户信息。

首先通过Larry的账户登陆(密码为larry),更改登录后页面源代码value值为112 or 1=1 order by salary desc

点击ViewProfile查看信息

Blind Numeric SQL Injection

盲数字注入,目标是得到一个存放在pins表中值pin的内容,行号cc_number=1111222233334444

经尝试,输入>2363时是有效的,大于2364时是无效的,所以临界值是2364

3、XSS攻击

Phishing with XSS(跨站脚本钓鱼攻击)

关于一个页面中存在XSS漏洞时,他如何支持钓鱼攻击。

在文本框里面写一个钓鱼网站代码就可以了,这里我参考了蔡野同学的代码。

将代码粘过去后登录,成功。

Stored XSS Attacks

在message里面随便输入:


<script>
alert("20145330");
</script>

效果如图:

Reflected XSS Attacks

根据题意和提示在下面文本框中输入http://www.targetserver.com/search.asp?input=<script>alert("20145330");</script>

这个是通过写在url里面达到的效果,里面的脚本也可以改写成其他任意恶意的内容。

4、CSRF攻击

Cross SSite Request Forgery(CSRF)

题目要求在新建邮件里写入可以更改由题目要求的attack的src、menu的transferFunds数值参数:

<img src='attack?Screen=280&menu=900&transferFunds=5000' width='1' height='1'>

参数在页面下方可以查看,每个人的都不一样:

提交后在下面的Message List里面可以看刚刚发送的邮件:

CSRF Prompt By-Pass

与上一个题目类似,是通过邮件的方式进行恶意请求。

在message里写入内容为:

<iframe
src="attack?Screen=273&menu=900&transferFunds=5000">
</iframe> <iframe
src="attack?Screen=273&menu=900&transferFunds=CONFIRM">
</iframe>

这里可以得知请求确认的模块里transferFunds参数的值:

完成情况:

20145330 《网络对抗》 Web安全基础实践的更多相关文章

  1. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  2. 2018-2019 20165221 网络对抗 Exp5 MSF基础

    2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...

  3. 20145306 网路攻防 web安全基础实践

    20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...

  4. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  5. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  6. 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践

    20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...

  7. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  8. 20145215《网络对抗》Exp9 Web安全基础实践

    20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  9. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

随机推荐

  1. 11.21 CSS学习-上午

    font-family:设置文本的字体序列,应当多设置几个,作为后备机制,如果浏览器不支持第一种字体,它将尝试下一种字体.字体序列的名字超过一个字需要使用引号,多个字体序列用逗号分隔指明:{font- ...

  2. Codeforces Round #439 (Div. 2)

    A. The Artful Expedient 题目链接:http://codeforces.com/contest/869/problem/A 题目意思:给你两个数列,各包含n个数,现在让你从上下两 ...

  3. Oracle SQL之 序列使用限制

    Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in thefollowing constructs:■ A su ...

  4. ios -RunTi me(相关知识)

    一,推荐两片比较好的介绍RunTime的博文    1>runtime运行时官方文档翻译 2>runtime的学习总结 1.类和对象 2. 成员变量和属性 3.方法与消息 4.Method ...

  5. sklearn学习总结(超全面)

    https://blog.csdn.net/fuqiuai/article/details/79495865 前言sklearn想必不用我多介绍了,一句话,她是机器学习领域中最知名的python模块之 ...

  6. 场景服务只创建了 Service Difinition 和feature layer

    环境:物理机 pro1.4:虚拟机 (server + datastore + portal + adaptor) 10.4.1 发布场景服务,正常情况应portal中查看,应包含四部分内容:Serv ...

  7. paas容器云

  8. Servlet----------在 Servlet 中的xml配置

    今天弄了大半天,才弄好了,还是请教了别人,主要原因在于把web.xml文件放在了WEB-INF文件夹下面了,正常的情况是在WebRoot下面的. 还有一个,我是在MyEclipse中操作的,起初不知道 ...

  9. 高性能MySQL中的三星索引

    高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星 ...

  10. Javascript核心对象

    JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方法和接口 3)浏览器对象模型(BOM):与浏 ...