20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践

20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践

实验后回答问题

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

  • SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL注入是一种通过操作输入来修改后台SQL语句达到代码执行进行攻击目的的技术。通过构建特殊的输入作为参数传入web应用程序,通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统。
  • SQL注入式攻击的主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。
  • SQL注入防御方法:
    • 普通用户与系统管理员用户的权限要有严格的区分。
    • 强迫使用参数化语句。
      如果在编写SQL语句的时候,用户输入的变量不是直接嵌入到SQL语句。而是通过参数来传递这个变量的话,那么就可以有效的防治SQL注入式攻击。
    • 加强对用户输入的验证。
      加强对用户输入内容的检查与验证;要对输入的数据进行过滤,将常见的sql语句的关键词进行过滤。测试字符串变量的内容,只接受所需的值。拒绝包含二进制数据、转义序列和注释字符的输入内容。
    • 多多使用SQL Server数据库自带的安全参数。
      为了减少注入式攻击对于SQL Server数据库的不良影响,在SQLServer数据库专门设计了相对安全的SQL参数。在数据库设计过程中,工程师要尽量采用这些参数来杜绝恶意的SQL注入式攻击。

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

  • XSS攻击原理   

    • XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。为了和CSS层叠样式表区分所以取名XSS。  
    • XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站。
  • XSS防御措施
    • HttpOnly防止劫取Cookie
      HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。
    • 输入检查 进行过滤
      输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如<、>、‘、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。
    • 在将不可信数据插入到HTML属性里时,对这些数据进行HTML属性编码
      这条原则是指,当你要往HTML属性(例如width、name、value属性)的值部分(data value)插入不可信数据的时候,应该对数据进行HTML属性编码。不过需要注意的是,当要往HTML标签的事件处理属性(例如 onmouseover)里插入数据的时候,本条原则不适用,应该用下面介绍的原则4对其进行JavaScript编码。

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

  • CSRF的原理

    • cross-site request forgery(跨站点请求伪造),也称为CSRF,是一种常见的web攻击方式
    • 攻击形式描述如下:
      • 用户登录并访问一个正常的站点
      • 在同一个浏览器实例下,保持正常网站打开的情况下,用户打开了恶意网站 (恶意网站通过一些链接或者垃圾邮件等等形式诱骗用户点了某一个链接)
      • 恶意网站页面里包含恶意代码。
    • 要完成一次CSRF攻击,受害者必须依次完成两个步骤:1.登录受信任网站A,并在本地生成Cookie。 2.在不登出A的情况下,访问危险网站B。
  • XSRF的防御
    • 在进行一些改变系统数据的重要操作中(比如提交订单,修改密码,删除..等操作),加入一个供校验的action token。这个action token是由应用先前生成的(如绘制表单时),作为表单的一个hidden字段。
    • action token = F(K,C),其中K是一个只有应用服务器才知道的密钥,C是本次会话的标示,可以是图片验证码啊,或者是伪随机数值。
    • 应用在接受到请求时,首先校验action token是否合法,校验的方式是取出C,然后使用F(K,C)计算action token,如果计算的结果和表单提交过来的action token值一样,则认为安全

实验总结与体会

  • 这次实验是通过webgoat来进行测试和攻击,webgoat很适合用来进行教学和练手,安装也很方便,只需要JAVA的Jar包,有Java环境就可以使用。也可以对你的使用有个基本的检测,做对会显示对号。这次实验分别尝试了SQL、CSRF、XSS攻击,攻击的场景类型也较为丰富,但也相对简单,距离实战还有一定的距离,当然应该应付一些设计缺陷较大,安全防范不足的小网站还是足够了,也让我们更直观的体会到web的脆弱性。
  • 当然除了了解各类基本的攻击手段,也警示我们网站设计的不易,我们之前所学到的网站设计真的是皮毛中的皮毛,不仅是功能性、美观等直观问题。设计过程中如何避免留下可被攻击的漏洞,如何发现并改写更是一个值得深思研究的问题。只能感叹学校的课程真的只是带我们入门,起到引领指导的作用,之后还是要靠自己去学习探索,在失败中逐步前进。

实践过程记录

webgoat

  • 打开WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar(先要下载java包)
  • 到这里后不要关闭,最小化即可
  • 在浏览器输入localhost:8080/WebGoat,进入webgoat直接点登陆即可

SQL注入

Command Injection

    • 这个题是要求能够在目标主机上执行系统命令,我们可以通过火狐浏览器下的一个扩展Firebug直接对源代码进行修改,在CSRF.help旁边加上"& netstat -an & ipconfig":
    • 之后在下拉菜单中能看到我们修改后的值:
    • 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况:
时间: 2024-07-30 10:21:20

20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践的相关文章

20145225唐振远《网络对抗》 Web安全基础实践

20145225唐振远<网络对抗>Web安全基础实践 参考博客:20145215 卢肖明 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入. (2)XSS攻击的原理,如何防御? 跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码

20145326蔡馨熤《网络对抗》—— Web安全基础实践

20145326蔡馨熤<网络对抗>-- Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 根据相关技术原理,SQL注入可以分为平台层注入和代码层注入.前者由不安全的数据库配置或数据库平台的漏洞所致:后者主要是由于程序员对输入未进行细致地过滤,

20145216史婧瑶《网络对抗》Web安全基础实践

20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一些组合,程序通过执行SQL语句进而执行攻击者所要的操作.其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 防御方法: 对输入的数据进行过滤,将常见的sql语句的关键词:select or ' " 等字符进行过滤. 对在数据库中对密码进行加密,验证登陆的时

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

20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,由于在设计程序中忽略对可能构成攻击的特殊字符串的检查,所以通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统.后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果.

exp9《网络对抗》web安全基础实践201453331魏澍琛

201453331魏澍琛web安全基础实践 一.实验过程 1.webgoat开启 2.Injection Flaws练习 Command Injection 原网页中没有注入的地方,那就用burpsuite(设置的相关步骤别人的博客写的很详细,不累述了),分析第一个包看他的数据提交的位置,找到后进行命令的注入,成功. 我注入的命令是AccessControlMatrix.help"&&ifconfig",执行了ifconfig命令,鉴于这个可以证明是本人操作,就把他截了

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

20155331<网络对抗> Exp9 Web安全基础 实验过程 WebGoat 在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat. 打开浏览器,在地址栏输入localhost:8080/WebGoat打开WebGoat,使用默认的账号密码即可登陆. XSS攻击 Phishing with XSS 跨站脚本钓鱼攻击 任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作.这里实验的是一种获取用户名和密码的攻击 在

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

基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统. 防御: 1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等. 2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取. 3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接. 4.不要把机密信息直

20145301赵嘉鑫《网络对抗》Exp8 Web基础

20145301赵嘉鑫<网络对抗>Exp8 Web基础 基础问题回答 什么是表单? 表单是一个包含表单元素的区域,主要负责数据采集部分.表单元素允许用户在表单中输入信息.一个表单有三个基本组成部分:表单标签.表单域.表单按钮: 表单标签:包含处理表单数据所用的URL以及数据提交到服务器的方法: 表单域:包含了文本框.密码框.多行文本框.下拉选择框等等: 表单按钮:包括提交按钮.复位按钮和一般按钮. 浏览器可以解析运行什么语言? 支持HTML(超文本标记语言).XML(可扩展标记语言)以及Pyt

20145301赵嘉鑫《网络对抗》逆向及Bof基础

20145301赵嘉鑫<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段. 本次实践主要是学习两种方法: 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 手工修改可执