20175104 李屹哲 exp9 web安全基础实践

目录

1. 实验内容

启动webgoat

(一)SQL注入攻击

(二)XSS攻击

(三)CSRF攻击

2. 实验问题回答

3. 实验体会

启动webgoat

  • 下载webgoat:网站https://github.com/WebGoat/WebGoat/releases/tag/7.0.1,下载webgoat-container-7.0.1-war-exec.jar(这里多说一句8.0.0版本的有问题,有点头秃,看到之前的学长学姐用的都是7.0.1,那就也用这个版本吧)

  • 再有该文件的在命令行输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启WebGoat

  • 运行一段时间之后命令行出现Starting ProtocolHandler证明开启成功

  • 打开浏览器访问localhost:8080/WebGoat 

  • 如果右侧未出现课程则重新下载jdk(一开始左边只有一栏,忘记截图)看了学姐的博客知道是编译后的java程序与Linux上的java Se版本不一致而产生的错误,我服了,真是啥问题都给遇上;不过直接下载个jdk1-8,然后按这篇链接做就行。

  • 现在好了,建议直接登录root用户进行实验,否则我再普通用户开启服务时会显示java接口调取权限不够

回到顶部

SQL注入攻击

1. Numeric SQL Injection

  • 目的:允许用户查看天气数据,通过注入一条SQL语句来显示全部天气信息

  • 原理:通过选择不同地点,可以选择查看相应城市的信息。每选择一个城市,就会把该城市对应的station字段填入SELECT * FROM weather_data WHERE station = ?这条语句中,在数据库后台执行,并将从数据库中得到的搜索结果打印在屏幕上

  • 然后右键选择inspter....,这里找sql语句的values加上 or 1=1 永真以显示其他城市,这里找sql语句时候要耐心

  • 然后这里再选哥伦比亚->GO就会惊喜的发现这里所有的城市都显示了

2. Log Spoofing

  • 日志欺骗就是通过添加假的日志文件以实现登录,在User Name输入 lyz%0d%0aLogin Succeeded for username: admin ,%0d表示空格,%0a表示换行;接下来点击登录会显示两行信息,第二行显示admin登陆成功,证明登陆成功

3. String SQL Injection

  • 题目中 SELECT * FROM user_data WHERE last_name = 'Your name' ,我们知道他是一个查询语句,所以真正需要修改的就是查询名字那里

  • 而我们需要显示所有用户的信息,所以这里在查询时加入用永真式语句'or 1 = 1',将查询语句变为 SELECT * FROM user_data WHERE last_name = ''or 1 = 1 ,由于有一个条件永远为真,因此会查询所有用户的信息(其实感觉这里原理和数字注入原理差不多)

  • 这里其实直接输入指令‘or 1=1 --就行,即可实现永真了

4. Database Backdoors

  • 这个就是数据库后门攻击
  • 题目要求是提高下自己的工资,这个还是比较简单的用一下update语句就行了,具体指令为 101; update employee set salary=8000 

  • 惊喜的发现还有步骤二,就是让你设置一个tigger,达到目的:只要添加了新员工,就把他邮箱设置成john@hackme.com

  • 那就设置吧,要输入的指令如下,我们尝试一下
101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid;

  • 完成

回到顶部

XSS攻击

1. Phishing with XSS

在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JS代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/WebGoat/catcher?PROPERTY=yes...

  • 源码可以通过solution找到
  • 可以发现下方多了一个登录页面

  • 输入登录信息之后就可以了,之后会弹出一个页面提示信息被获取了

2.Stored XSS Attacks

存储型XSS攻击,通过输入代码使用户访问时弹出非预期的内容。

  • 存储型XSS多用于贴吧等场所;如果你在留言板加入XSS代码,那么如果有人点击了你的帖子,就会调用你加入的恶意XSS
  • 我们这里加入一个警告 <script>alert("blackmailed");</script> ,如果点击发到帖子,就会显示该代码

3. Reflected XSS Attacks

 

反射型XSS是最常见的Web应用程序安全漏洞之一;
指:攻击者在网页嵌入客户端脚本,通常是JavaScript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的;

 

  • 在上一次的实验八中实际上做的就是反射型XSS,这里在文本框加入和上文一样的警告,发现结果一样,证明攻击成功

CSRF攻击

1. Cross Site Request Forgery

实验要求目标是发一个电子邮件给newsgroup,内容包括一个有恶意请求的图片URL。这个URL指向“attack”(包含参数“Screen”和“Menu”,还有一个参数“transferFunds”(转账))。如果收到含有CSRF页面的邮件时,就会执行transferFunds。 在框中输入代码 ,当受害者浏览这个网页时,会发送一个transferFunds的请求,浏览器认为是正常的打开图片请求,但实际执行了恶意转账请求。

  • 在文本框中提交一个含有转账恶意请求的代码,<img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=104"/>  

  • 成功后旁边会有对勾

2. CSRF Prompt By-Pass

网页上的手动发起的请求,通过HTML+JavaScript向服务器请求;这道题的要求我们确认用户转账,也就是说url需要使用下面两个参数:transferfunds=数额 和transferfunds=CONFIRM

  • 文本框代码为
<iframe src="attack?Screen=279&menu=533&transferFunds=5104">
</
iframe>
 <iframe src="attack?Screen=279&menu=533&transferFunds=confirm" >
</iframe>
  • 结果显示攻击成功(有绿勾),底下文本框有转账confirme信息

回到顶部

问题回答

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

sql注入原理:就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,来获取一些隐私信息甚至越权登录。

防御手段:

1、使用参数化筛选语句,为了防止SQL注入,用户输入不能直接嵌入到SQL语句中。

2、避免使用解释程序,这是黑客用来执行非法命令的手段。

3、防止SQL注入,但也避免一些详细的错误消息,因为黑客可以使用这些消息。标准的输入验证机制用于验证所有输入数据的长度、类型、语句和企业规则。

4、使用专业的漏洞扫描工具。

5、最后,企业在Web应用程序开发过程的所有阶段执行代码安全检查。首先,安全测试应该在部署Web应用程序之前实现,这比以前更重要、更深远。企业还应在部署后使用漏洞扫描工具和站点监控工具测试网站。

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

XSS攻击原理:利用网页开发时留下的漏洞,将恶意代码植入网页,使用户加载并执行攻击者恶意制造的网页程序。攻击成功后,可以进行越权操作、获取私密网页内容、会话和cookie等各种内容

防御手段:

1.对输入和URL参数进行过滤(白名单和黑名单)

2.对输出内容进行编码

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

CSRF攻击原理:利用你关闭网站但未结束的会话,盗取你的身份以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......

防御手段:

1.客户端页面增加伪随机数(验证码)

2.定期清理cookie

回到顶部

实验感想

  本次实验实际上本质是利用教学软件webgoat进行了一系列的的sql、xss、crsf攻击以用来达到更加了解网络安全的目的,在平时也能更好的防范这几种攻击;感觉实验八和实验九弥补了上学期的很多欠缺的知识点;这次试验是本学期的最后一次是实验,虽然很多实验做起来很艰辛;但整体来说还是受益匪浅的

回到顶部

posted @ 2020-05-18 23:07  20175104李屹哲  阅读(186)  评论(0编辑  收藏