20154319 实验九web安全基础实践

 

一、实验内容

(1)webgoat开启;

(2)SQL、XSS、CSRF练习。

二、实验后问题回答

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

答:原理:SQL注入攻击是指攻击者利用Web应用程序无法对用户输入的数据进行合法性判断,通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,从而使非法数据侵入系统。

防御 :对所有用户提交的数据进行验证;更新和补丁,通常程序和数据库中都存在黑客可以通过SQL注入而利用的漏洞,因此非常有必要使用程序补丁和更新。经常更改应用帐户的密码;使用管理员级别权限的时候不要连接你的数据库。

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

答:原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。通过在网站接受正常文本输入的地方,输入Javascript脚本,用户的浏览器因为没有办法知道这段脚本是不可信的,所以依然会执行它。

防御:千万不要引入任何不可信的第三方JavaScript到页面里,一旦引入了,这些脚本就能够操纵你的HTML页面,窃取敏感信息或者发起钓鱼攻击等等;传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。

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

原理:CSRF(Cross site request forgery),即跨站请求伪造,借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。

CSRF一般的攻击过程是,攻击者向目标网站注入一个恶意的CSRF攻击URL地址(跨站url),当用户访问某特定网页时,如果用户点击了该URL,那么攻击就触发了,我们可以在该恶意的url对应的网页中,利用 <img src="" /> 来向目标网站发生一个get请求,该请求会携带cookie信息,所以也就借用了用户的身份,也就是伪造了一个请求,该请求可以是目标网站中的用户有权限访问的任意请求。也可以使用javascript构造一个提交表单的post请求。

防御: 使用验证码,每一个重要的post提交页面,使用一个验证码,因为第三方网站是无法获得验证码的;使用token

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

三、实践过程

(一)webgoat开启

1.在kali端输入 java -jar webgoat-container-7.0.1-war-exec.jar ,开启webgoat:

 

在一段不长的等待之后,看到下面这个提示,就可以进行下一步了

2.在kali的浏览器中输入: localhost:8080/WebGoat  打开网页,然后使用默认用户名和密码进入,一般是都是WebGoat

(二)SQL练习

一、String SQL Injection(SQL字符串注入)

题目解读:这个表单允许用户查看他们的信用卡号码。尝试注入一个SQL字符串,使其显示所有的信用卡号。

 

根据提示,先输入Smith,发现Smith出现在语句中的两个单引号之间。

为了达到目的,则使WHERE语句失效即可,通过上次实验中构造一个永真式 'or 1=1 就可以实现,成功得到了全部的信用卡号。

 

二、Database Backdoors(数据库后门)

题目解读:使用多条语句的SQL注入,更新数据表。

根据提示中的101,设置如下SQL语句: 101; update employee set salary=5000 

提交,发现数据表所有人员工资都等于5000已经更新。

 

第2步:使用字符串SQL注入,注入后门,是创建新用户的时候会自动修改邮箱为设置的邮箱[email protected]

因为当前的基础DB不支持触发器,所以实际上不会执行任何操作。

注入语句 101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='[email protected]'WHEREuserid = NEW.userid 

 

三、Log Spoofing(日志欺骗)

题目解读:利用换行符伪造一个假的日志信息,登陆欺骗。

使得用户名为“admin”的用户,在日志中显示“成功登录”。

在User Name文本框中输入 4319%0d%0aLogin Succeeded for username: admin ,其中%0d是回车,%0a是换行符。

下方提示框是错误的uesrname为4319,但是同时有成功的用户名为admin

四、LAB:SQL Injection    Stage 1 String SQL Injection

题目解读:使用字符串SQL注入在没有正确密码的情况下登录BOSS账号。

(1) 以用户Neville登录,按照之前的想法,在密码栏中注入永真式 ' or 1=1 -- ,但是登录失败。

(2) 由之前学姐学长的经验,查看网页源码,发现输入框对输入的字符长度进行了限制,最多只允许输入8个字符,于是修改代码,将长度限制改为30.

                            

(3) 再重新使用永真式登录,登录成功。

五、Stage 3Numeric SQL Injection

题目要求:通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户larry,浏览其BOSS的账户信息。

(1) 先用上一题的办法登录Larry的账号。在密码框里输入 ' or 1=1 -- ,登录后点击ViewProfile浏览员工的信息,发现我们只能看见Larry一个人的工资信息。

 

(2) 在网页代码中分析一下ViewProfile按钮,发现这个地方是以员工ID(Larry的ID是101)作为索引传递参数的。而要实现通过一个普通员工就能来浏览老板账户信息,则需要永真式加入都ID中。

则把其中的Larry的代码中的value值改为 101 or 1=1 order by salary desc -- ,这样在查看Larry时老板的信息也会显示。

(3)可以看到是welcome back Larry的,说明是Larry的账户,但是首先显示的是Nevile,说明是成功查看到老板的了。 

 

(二)XSS练习

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

题目解读:需要我们在搜索框中输入XSS攻击代码

(1) 编写前端代码并在输入框中注入这段前端代码。(代码是参考的学姐学长的)

 

将上面的代码输入到搜索框中

(2) 点击搜索,会看到一个要求输入用户名密码的表单,然后输入用户名密码。

 缺图

(3) 点击登录,WebGoat会将刚刚输入的信息在提示框中显示。

 缺图

(4) 攻击成功

 

七、Stored XSS Attacks(存储型XSS攻击)

题目解读:要创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。

(1)   输入标题hello,然后在message中输入一串代码: <script>alert("i am 4319");</script>  

(2)   再次点击刚刚创建的标题,成功弹出窗口,攻击成功。

 

八、Reflected XSS Attacks

当我们输入错误的用户信息后,服务器校验输入有误,会返回错误页面并将错误内容展示出来,利用这一点,将带有攻击性的URL作为输入源

输入代码 <script>alert("4319");</script> ,就会弹出对话框:

(三)CSRF练习

九、CSRF

题目解读:

(1) 查看自己电脑的Screen和menu的值:

(2)

(3)

十、CSRF Prompt By-Pass

题目解读:这个就是利用CSRF进行冒名操作转账,不过这次包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器。

(1)直接在message中写入攻击代码:

(2)点击了CONFIRM按钮,成功:

四、实验体会

这是最后一个实验了,我一共做了十个小实验。

猜你喜欢

转载自www.cnblogs.com/zwl154319/p/9073781.html
今日推荐