• 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输入表单,提交,如下图所示:

  • 相关阅读:
    Python for Infomatics 第14章 数据库和SQL应用四(译)
    展望2017
    bing的简单英文字典工具
    自我安慰
    Python for Infomatics 第14章 数据库和SQL应用三(译)
    Python for Infomatics 第14章 数据库和SQL应用二(译)
    Python for Infomatics 第14章 数据库和SQL应用一(译)
    希望父亲早日恢复
    Python for Infomatics 第13章 网页服务四(译)
    Python for Infomatics 第13章 网页服务三(译)
  • 原文地址:https://www.cnblogs.com/zf011/p/9103915.html
Copyright © 2020-2023  润新知