201453331魏澍琛web安全基础实践
一.实验过程
1、webgoat开启
2、Injection Flaws练习
Command Injection
原网页中没有注入的地方,那就用burpsuite(设置的相关步骤别人的博客写的很详细,不累述了),分析第一个包看他的数据提交的位置,找到后进行命令的注入,成功。 我注入的命令是AccessControlMatrix.help"&&ifconfig",执行了ifconfig命令,鉴于这个可以证明是本人操作,就把他截了一张图:
Numeric SQL Injection
和Command Injection步骤几乎一模一样,最后把我们修改station值从为101 为( 101 or 1 = 1),我们知道(x or 1),不管前面x的值是什么他的结果都是真,更改后成功
Log Spoofing
输入的用户名会被追加到日志文件中,所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,在User Name文本框中输入wsc%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符,成功。
String SQL Injection
永真式(x or 1)=1,再加上两个分号来闭合前后的分号作为输入,就成功了。
LAB:SQL Injection(Stage 1:String SQL Injection)
用上一个的输入进行输入发现失败了!按F12看下网页的源代码,找到密码输入框,会发现他对长度进行了限制(maxlenth=8),把他改成50,就成功了。
LAB:SQL Injection(Stage 3:Numeric SQL Injection)
先用上面的方法进行登陆,查看源代码,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,一般来说老板的工资都应该是最高的,所以把其中的value值改为“101 or 1=1 order by salary desc --”,这样老板的信息就会被排到第一个,然后就可以查看老板的信息。
Blind Numeric SQL Injection
先要发现返回的信息中只有两种:有效或无效,接着缩小范围,ok再接着在确定一个较小的范围里打开BurpSuite,设置好代理后,抓个包然后进行暴力破解(设置部分根据别人的博客完成),最终根据报文长度的区别找到该值。
3、Cross-Site Scripting(XSS)练习
Stored XSS Attacks
title随便输,message输入一段代码
Reflected XSS Attacks
输入相应代码,这个和上一个的区别主要在与上一个的是存在服务器中的,而这个不是。
Cross Site Request Forgery(CSRF)
设定一个URL,别的人一点,就触发CSRF攻击,可以把URL放到message框中;提交后,下面会有一条记录,你一点这个记录,就被攻击了。
二.实验后回答问题
(1)SQL注入攻击原理,如何防御
首先sql注入呢就是一种对数据库进行攻击的方式,一个编网页的程序员比较菜,那恶意用户就可以利用他编写代码时没有考虑到用户输入数据的合法性,使程序存在安全隐患。恶意用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL注入。
进行防御,首先就是这次试验中涉及到的设定字符串的长度,不过事实上证明他没有什么卵用;采用采用字符串过滤,过滤掉一些sql注入的的关键字;除此之外,可以对在数据库中对密码进行加密,验证登陆的时候先将 密码进行加密再与数据库中加密的密码进行对比,若此时一致则基本是安全的。
(2)XSS攻击的原理,如何防御
就是跨站脚本攻击,你将恶意代码注入到网页上,那么其他用户再看这个网页也就会受影响。这种攻击主要是获得目标网站的cookie,ok那什么是cookie?cookie就是存于本地用户的数据,某些网站为了辨别用户身份、进行session跟踪;ok那么获得了这些信息之后,就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。
进行防御,我看懂了别人的博客,感觉挺有道理的:第一就是当恶意代码值被作为某一标签的内容显示时,在不需要html输入的地方对html标签及一些特殊字符做过滤,这样就相当于这些字符没有用,因为他不被执行,那不执行不就是防御住了;第二就是当恶意代码被作为某一标签的属性显示时,通过用将属性截断来开辟新的属性或恶意方法:属性本身存在的单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。意思其实很简单,就是说原本的属性被转码了,用户新加的属性又会被过滤,这也是一种防御的方法。
(3)CSRF攻击原理,如何防御
就是跨站请求伪造,首先要注意,他和XSS攻击截然不同!看名字就知道,他是通过伪装来自受信任用户的请求来利用受信任的网站,而XSS可以说是一种利用站点内的信任用户来进行攻击。OK有了伪造这个概念,就可以看懂下面这张图:
这个图中有一点很关键,那就是C(有A的cookie)要在没有登出A的情况下登入B
进行防御,看了一些别人的博客并查看了一些资料:第一就是Cookie Hashing(所有表单都包含同一个伪随机值),简单的说就是攻击者不能获得第三方的Cookie,所以表单中的数据也就构造失败了:在表单里增加Hash值,以认证这确实是用户发送的请求。然后在服务器端进行Hash值验证;还有一种就是用验证码的方式保护:每次用户提交都需要用户在表单中填写一个图片上的随机字符串,这个比较常见,终于知道那些网站的验证码是用来干什么的了。反正总而言之,就是要验证这个用户的身份。
三.实验总结与体会
前两种攻击方法上次实验已经涉及到了,这次就是更加深入的进行学习,明白了这些攻击方法具体是怎么回事:为什么要以这样的格式进行输入,攻击的目标分别是什么,每种攻击的区别又是什么,实验过程还是很有意思的;还有就是要加强英语水平啊,每个题目看起来有点费劲啊;最后就是做这次实验总用一种偷鸡摸狗背着别人干坏事的感觉,挺奇怪的... PS:每次代理完记着调回来,不然火狐就连不上网。