zoukankan      html  css  js  c++  java
  • 20155206《网络对抗》Web安全基础实践

    20155206《网络对抗》Web安全基础实践

    实验后问题回答

    (1)SQL注入攻击原理,如何防御
    攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的
    防御手段:利用输入规则限制进行防御,不允许特殊字符输入

    (2)XSS攻击的原理,如何防御
    攻击原理:跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码会被执行,从而被攻击,其他用户在观看网页时就会受到影响。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。
    防御手段:过滤特征字符,限制用户输入,拒绝网页的可执行代码输入。

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

    攻击原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
    防御手段:通过referer、token或者验证码来检测用户提交在form中包含秘密信息、用户指定的代号作为cookie之外的验证、定期清理保存的cookie

    实验过程

    、 在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat

    、打开浏览器,在地址栏输入localhost:8080/WebGoat打开WebGoat,选择默认账号、密码即可登陆成功。

    XSS攻击

    1、Phishing with XSS 跨站脚本钓鱼攻击

    、跨站脚本攻击最大的魅力是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作。实验的是一种获取用户名和密码的攻击

    、 在webgoat找到xss攻击打开Phishing with XSS

    、 编写一个包含用户名、密码的前端代码:
    `




    This feature requires account login:



    Enter Username:

    Enter Password:




    ` 、 将这段代码输入到输入框中 ![](https://images2018.cnblogs.com/blog/1072276/201805/1072276-20180529101521499-164075335.png) 、 点击`search`出现如下登录框: ![](https://images2018.cnblogs.com/blog/1072276/201805/1072276-20180529101548402-32608387.png) 、 在登录框中输入用户名、密码(随意输入,目的是获取输入的信息): ![](https://images2018.cnblogs.com/blog/1072276/201805/1072276-20180529101637366-202241245.png) 、 点击登录后跳出弹框,其中包含用户输入的用户名、密码。攻击成功!

    2、Stored XSS Attacks 存储型XSS攻击
    、 存储型XSS的攻击基本流程:

    a. 比如在某个论坛提供留言板功能,黑客在留言板内插入恶意的html或者Javascript代码,并且提交。
    b. 网站后台程序将留言内容存储在数据中
    c. 然后一个用户也访问这个论坛,并刷新了留言板,这时网站后台从数据库中读取了之前黑客的留言内容,并且直接插入在html页面中,这就可能导致了:黑客留言的脚本本身应该作为内容显示在留言板的,然后此时可能黑客的留言脚本被浏览器解释执行了。
    那么黑客的脚本可以用来做哪些坏事儿呢?比如:

    通过javascript获取用户的cookie,根据这个cookie窃取用户信息
    重定向网站到一个钓鱼网站
    重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服务器

    、 打开Stored XSS Attacks
    、 在Message框中输入<script>alert("I am 20155206");</script>

    、 点击提交后弹出对话框,显示I am 20155206。攻击成功!

    3、Reflected XSS Attacks 反射型XSS攻击

    、 我们在访问一个网页的时候,在URL后面加上参数,服务器根据请求的参数值构造不同的HTML返回。
    、 value可能出现在返回的HTML(可能是JS,HTML某元素的内容或者属性)中,
    、 如果将value改成可以在浏览器中被解释执行的东西,就形成了反射型XSS.
    、 有人会问,我怎么可能自己去把value改成可以执行的恶意代码呢?这不是自己坑自己吗.
    、 但是一种情况是别人可能修改这个value值,然后将这个恶意的URL发送给你,或者别人,当URL地址被打开时,
    、 特有的恶意代码参数被HTML解析,执行.它的特点是非持久化,必须用户点击带有特定参数的链接才能引起

    、 打开Reflected XSS Attacks
    、 在code框中输入<script>alert("I am 20155206");</script>

    、点击Purchase出现对话框,攻击成功!

    CSRF攻击

    跨站请求伪造,尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

    4、Cross Site Request Forgery(CSRF)
    、查看页面右边Parameters中的srcmenu值。

    、在title框中输入学号,message框中输入代码:<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>

    、提交后生成一个链接20155206
    、点击学号名即可查看用户操作的信息,攻击成功

    5、CSRF Prompt By-Pass

    、 查看页面右边Parameters中的srcmenu值,并在title框中输入学号,message框中输入代码:

    `

    ` ![](https://images2018.cnblogs.com/blog/1072276/201805/1072276-20180529102906309-1921046500.png) 、提交后生成一个链接 、 点击学号名即可查看用户操作的信息,攻击成功 ![](https://images2018.cnblogs.com/blog/1072276/201805/1072276-20180529102956234-485510094.png)

    SQL注入攻击

    SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

    6、String SQL Injection

    、我们可以通过控制在输入框中输入的字符串,达到控制select语句的目的。
    、 输入'or 1='1,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1',这句的意思就是查询lastname='' OR(或者)1='1' ,这里的1='1'永远为真,所以成功通过。

    7、Log Spoofing

    、 利用日志的格式,使用换行等字符,欺骗管理员:Use CR (%0d) and LF (%0a) for a new line。
    、 比如输入zf%0d%0aLogin Succeeded for username: admin

    8、Numeric SQL Injection

    、题目大意是这个表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据
    、和之前的实验类似,只要加上一个1=1这种永真式即可达到我们的目的
    、使用inspect Element对源代码进行修改,在任意一个值比如101旁边加上or 1=1
    、 使用FIERFOX的inspect Element对其修改,可以右键Columbia选择inspect Element直接对这段代码修改

    、 修改后成功

    9、.Stage 1:String SQL Injection
    、题目要求使用字符串SQL注入在没有正确密码的情况下登录账号boss
    、用老套路,以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,发现登录失败
    、查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只允许输入8个字符
    、对字符长度进行修改

    、重新登录,登录成功

    10、XPATH Injection
    、题目要求是使用帐户Mik/Test123,目标是试着去查看其他员工的数据。
    、使用一个普通的用户名和密码,XPath会起作用,但是攻击者可能会发送一个坏用户名和密码,并在不知道用户名或密码的情况下,选择一个XML节点,如下所示:

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


    11、Blind String SQL Injection
    、使用盲注进行爆破,在“Enter your Account Number”输入
    101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='5206520652065206'), 1, 1) = 'h' );
    、根据返回的提示来判断name的范围,直至返回成功,然后把Jill输入表单,提交,如下图所示:

  • 相关阅读:
    使用定时器实现获取手机验证码倒计时
    搜索历史管理
    利用vue和jQuery实现中国主要城市搜索与选择
    使用vue、jQuery生成带有logo的二维码
    使用vue-cli脚手架搭建Vue项目
    postcss-px-to-viewport
    git命令操作篇
    小程序中live-player
    对于常用数组的方法总结
    css的加载中动画
  • 原文地址:https://www.cnblogs.com/zf011/p/9103915.html
Copyright © 2011-2022 走看看