首页 > 代码库 > 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践
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标签的事件处理属性(例如 onm ouseover)里插入数据的时候,本条原则不适用,应该用下面介绍的原则4对其进行JavaScript编码。
- HttpOnly防止劫取Cookie
(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,可以看到命令被执行,出现系统网络连接情况:
20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践