20145211黄志远《网络对抗》Exp9 Web安全基础实践

20145211黄志远《网络对抗》Exp9 Web安全基础实践

基础问题回答

  1. SQL注入攻击原理,如何防护?
    • SQL注入攻击就是利用输入的机会构造本身指望的请求,好比破坏掉用户名或者密码验证进行登陆,还有对数据库增删查改的基本操做。
    • 对于SQL注入攻击的防范:
      • 利用输入规则限制进行防护,不容许特殊字符输入
      • 使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;
      • 采用字符串过滤的方法;
      • jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。
  2. XSS攻击的原理,如何防护?
    • XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,XSS攻击相似于SQL注入攻击,将攻击代码写在url或者数据库存储里面,诱使别人访问从而运行代码。
    • XSS的防护能够从如下两方面来进行:
      • 对用户的输入进行处理,只容许输入合法的值,其它值一律过滤掉。
  3. CSRF攻击原理,如何防护?
    • 咱们知道XSS是是一种对网站的恶意利用,CSRF比XSS更具危险性。CSRF能够劫持会话和cookie来冒名进行 一些操做,好比实验中的转帐。
    • 对于CSRF的防护也能够从如下几个方面入手:
      • 经过referer、token或者验证码来检测用户提交;
      • 尽可能不要在页面的连接中暴露用户隐私信息,对于用户修改删除等操做最好都使用post操做;
      • 避免全站通用的cookie,严格设置cookie的域。

实践总结与体会

  • 写着,写着,就到了最后一次,也许之后,也会说一声,很久不见,甚是想念。

关于WebGoat

  • WebGoat的安装使用再也不赘述,开启以下

     

  1. WebGoat使用8080端口,因此在浏览器上访问localhost:8080/WebGoat,进入WebGoat以后,能够看到有不少题目来让咱们进行练习。web

 

Cross-Site Scripting(XSS)练习

Stored XSS Attacks

  • title无所谓,message输入一段代码便可(忘了截图了)

Reflected XSS Attacks

  1. 将带有攻击性的URL做为输入源,例如输入<script>alert("hzy attack succeed!");</script>,就会弹出对话框:正则表达式

  2.  虽然这个效果和上一个存储型XSS实验的效果相似,可是二者所用的原理不同,存储型XSS是持久化的,代码是存储在服务器中。sql

Cross Site Request Forgery(CSRF)

  1. 这个实践是利用cookie冒名登陆,用代码伪造请求
  2. 咱们在message框中输入这样一串代码:<img src="http://localhost:8080/WebGoat/attack?Screen=283&menu=900&transferFunds=4000"/>,注意这里面的Screen和menu的值每一个人的电脑可能不同,能够在当前页面的右边有个Parameters进行查看:
    数据库

     

  3. 提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4000元,从而达到CSRF攻击的目的。浏览器

     

CSRF Prompt By-Pass

  1. 咱们依旧和上一个同样要构造CSRF攻击,不过此次其包括了两个请求,一是转帐请求,二是确认转帐成功请求,即须要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)
  2. 在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=5000进入确认转帐请求页面:
    安全

     

  3. 以后看了一下网页的源代码,发现transferFunds的值变成了CONFIRM
    服务器

     

  4. 因而点击了CONFIRM按钮以后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=CONFIRM,成功转走了5000元:
    cookie

     

 

 

 

 

 

 

Injection Flaws练习

 

 

Command Injection

  1. 这个题是要求可以在目标主机上执行系统命令,咱们能够经过火狐浏览器下的一个扩展Firebug(就是右上角的小虫的标志)对源代码进行修改,例如在BackDoors.help旁边加上"& netstat -an & ipconfig"
    网络

     

     

  2. 以后在下拉菜单中能看到咱们修改后的值:
    xss

     

     

  3. 选中修改后的值再点view,能够看到命令被执行,出现系统网络链接状况:

     

 

Numeric SQL Injection

  1. 关键是构造一个永真式:

     

     

 

Log Spoofing

  1. 利用换行符伪造一个假的日志信息,在User Name文本框中输入lxm%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符:

     

  2. 如图所示,攻击成功:

     

String SQL Injection

  1. 仍是和以前同样,在文本框中输入' or 1=1 --

     

  2. Go,攻击成功,全部用户信息都被显示出来:

     

LAB:SQL Injection(Stage 1:String SQL Injection)

  1. 以用户Neville登陆,在密码栏中输入' or 1=1 --进行SQL注入,可是登陆失败:

     

  2. 后面查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只容许输入8个字符:

     

  3. 对字符长度进行修改,而后从新登陆,登陆成功:

     

LAB:SQL Injection(Stage 3:Numeric SQL Injection)

  1. 咱们仍是用上一题的办法先以用户名Larry登陆,登陆以后看到浏览员工信息的按钮是ViewProfile

     



  2. 在网页代码中分析一下这个按钮,发现这个地方是以员工ID做为索引传递参数的,咱们要达到经过Larry来浏览老板帐户信息的目的,通常来讲老板的工资都应该是最高的,因此把其中的value值改成101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个:

Database Backdoors

  1. 先获得该用户的信息:

     

  2. 能够发现输入的语句没有验证,很容易进行SQL注入,输入注入语句:101; update employee set salary=10000,成功把该用户的工资涨到了10000:

     

  3. 接下来使用语句101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145211@163.com' WHERE userid = NEW.userid建立一个后门,把表中全部的邮箱和用户ID都设为个人:

     

 

Blind Numeric SQL Injection

  1. 输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );查看pin数值是否大于10000:

     

  2. 以后慢慢缩小范围,设置好代理,选好攻击位置后要设置载荷,因为咱们要进行数字类型的暴力破解,因此选择载荷类型为Numbers,步长为1,再设置从2000到2500进行,设置完成后开始攻击:会发现2364的报文长度明显和其余不同,那这个值就应该就是2364
  3. 将这个值输入到网页中,成功:

相关文章
相关标签/搜索