Exp9 Web安全基础

一、实践目标

  1. 理解常用网络攻击技术的基本原理。
  2. 在Webgoat,实践相关实验。
  • SQL注入攻击
  • XSS攻击
  • CSRF攻击

二、实践过程

  环境配置:

  下好jar包然后放在根目录下

  使用:java -jar *.jar就可以解压运行webgoat了!

  使用webgoat:

  打开Firefox,输入http://127.0.0.1:8080/WebGoat/login.mvc访问webgoat

  我使用的是7.1版本,直接使用网页下的两个用户密码就行,我使用的管理员登陆的。

  sql注入:

  Numeric SQL Injection:

  要求注入字符串然后可以访问所有的天气情况:

  这里修改一下网页源代码就好了,随便选个城市然后修改他的value值,添加or 1=1 即可;

  

  String SQL Injection:

  要求作为smitn然后查看所有的信用卡信息:

  输入or 1=1 --

  --是注释掉后面的代码。

  

  

  LAB: SQL Injection:

  第一步:

  字符串注入:要求不使用正确密码就可以登陆管理员的账户,和前面一样,但是我们要先修改网站源代码

  使其在password一项中可以输入足够长:

  

  然后构造真式即可

  第三步:

  Numeric SQL Injection:

  先使用第一步的办法登陆员工的账户,然后再员工账户里点击查看按钮时查看管理员用户的信息

  我们先看看这个老板账户的值是排在表的最后:

  

  然后就可以通过修改id为101 or 1=1order by salary desc这个语句来倒序查询下一个用户信息;

  下图就是修改位置,本来一开始想直接修改成老板的id但是不成功;

  

  成功图:

  

  

  Blind Numeric SQL Injection:

  

  数字盲注:要求就是通过输入框输入语句去查找到pins表里pin的值是多少:

  因为这里在输入框里输入语句可以进行判断,会给出判断结果,所以使用

  101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500);

  然后慢慢缩小范围即可:

  

  找到最后的结果为2364:

  

  Blind String SQL Injection:

  和数字盲注差不多,这里是找字符串,语句就有所变化:

  101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );

  意思是查找这个name的第一个字符的值是不是h

  这里有大小写区分,然后改变第一个1所在位置的值就是改变查找的字符串的字符位置;

  第一个字符为J

  

  第二个为i

  

  

   XSS:

  

  Phishing with XSS:

   要求使用XSS和HTML插入,将html插入到该请求凭证中,添加javascript来实际收集凭证

  就是在输入框里输入一段攻击html代码,然后会运行脚本实施钓鱼攻击,会给原网页添加一些输入框,比如用户名和密码

  这样原本不需要输入的东西就被要求输入然后就可以窃取到了!

  这里就是在search框里加入了代码,然后提交,就会出现新的输入框,然后输入用户名密码,用javascript弹框出来就完了:

  

  Stored XSS Attacks:

  这里就是相当于有人放了一段恶意的脚本放在别人可以浏览的地方,比如微博评论,留言等等,然后只要有人打开这个留言就会

  执行脚本实施攻击:

  标题随便取,内容就是简单的弹框:

  

  LAB: Cross Site Scripting:

  第一步:

  就是编辑员工信息页面,然后在里面能写下最够长的选项里,这里选的地址一栏,还可以是地区一栏,

  往里面写下脚本,然后别人来查看就会运行脚本。

  

  第三步:

  和上一步一样就是查看别的账户信息然后被攻击:

  第五步:

  执行反射的xss:这里应该是要求执行一段带有url,也就是能连接到另一个站点的脚本,但是我看大家好像都只是随便执行了一段脚本,

  这个带url我也是不太清楚,先通关再说:

  

  

  Reflected XSS Attacks:

  和上面一样,要求当未验证的用户输入用在HTTP响应时会发生XSS。在一个反射XSS攻击中,

  攻击者可以使用攻击脚本制造一个URL,然后提交到另一个网站、发邮件或让受害者点击。

  主要就是这个脚本代码方面。

  

  Cross Site Request Forgery (CSRF):

  要求:给新闻组发邮件。电子邮件包含一个URL指向恶意请求的图像。在这节课中,URL应该指向“攻击”servlet,

  其中包含了“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,它具有任意的数值。

  这里其实就说明了编写规则,只要查看网页上给出的scr和menu的值即可:

  标题随便,在内容里写<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>

  然后提交,打开消息就行了:

  

  

  CSRF Prompt By-Pass:

  要求:输入代码,第一个为转帐的请求,第二个请求确认第一个请求触发的提示

  根据提示来编写,也是需要查看网页的几个值:

  然后编写成下面的代码即可:

  <img src="attack?Screen=1471017872&menu=900&transferFunds=6000"
  width="1" height="1">
  <img src="attack?Screen=1471017872&menu=900&transferFunds=confirm"
  width="1" height="1">

  

  CSRF Token By-Pass:

  也是要求编写代码,构造好了,然后发送,点击即可

  

  

三、实验总结:

  最后一次实验了,这种闯关的感觉还不错,再就是确实这么课可以说是大学这几年里最有乐趣的一门课了。

  

原文地址:https://www.cnblogs.com/20154317wuhan/p/9136059.html