zoukankan      html  css  js  c++  java
  • 20145307陈俊达《网络对抗》Exp9 Web安全基础实践

    20145307陈俊达《网络对抗》Exp9 Web安全基础实践

    基础问题回答

    1.SQL注入攻击原理,如何防御?

    SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。

    对于SQL注入攻击的防范,我觉得主要还是应该从代码上入手:

    采用预编译语句集PreparedStatement,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。它的原理就是sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析准备,因此也就避免了sql注入问题;

    使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;

    采用字符串过滤的方法;

    jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。

    2.XSS攻击的原理,如何防御?

    XSS是代码注入的一种,它允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。

    XSS的防御可以从以下两方面来进行:

    一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤;

    检查用户输入的内容中是否有非法内容,如尖括号、引号等,严格控制输出。

    3.CSRF攻击原理,如何防御?

    我们知道XSS是跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息。而CSRF是借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。

    对于CSRF的防御也可以从以下几个方面入手:

    通过referer、token或者验证码来检测用户提交;

    尽量不要在页面的链接中暴露用户隐私信息,对于用户修改删除等操作最好都使用post操作;

    避免全站通用的cookie,严格设置cookie的域。

    实践内容

    关于WebGoat

    Cross-Site Scripting(XSS)练习

    Injection Flaws练习

    简介WebGoat

    WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入等。

    启动启动:WebGoat使用8080端口,所以在浏览器上访问localhost:8080/WebGoat,进入WebGoat

    Cross-Site Scripting(XSS)练习

    Phishing with XSS

    tips: 先创建一个form,让受害人在我们创建的form中填写用户名和密码,读取受害人输入的用户名和密码,发送给 http://localhost:8080/WebGoat/catcher?PROPERTY=yes... 在搜索框中输入攻击代码后点击搜索

    Stored XSS Attacks

    tips: 导致其他用户访问时载入非预期的页面或内容,message中输入一串代码:

    Reflected XSS Attacks

    将带有攻击性的URL作为输入源,输入

    Cross Site Request Forgery(CSRF)

    我们写一个URL诱使用户点击触发CSRF攻击,在message框中输入这样一串代码:

    CSRF Prompt By-Pass

    在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000 进入确认转账请求页面,点击CONFIRM按钮之后,在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=CONFIRM,成功转走了5000元:

    Injection Flaws练习

    Command Injection

    在下拉菜单中能看到修改后的值,选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况:

    Numeric SQL Injection

    注入SQL字符串的方式查看所有的天气数据,加上一个1=1这种永真式即可,选中Columbia,点Go,可以看到所有天气数据:

    Log Spoofing

    在User Name文本框中输入jc1%0d%0aLogin Succeeded for username: admin

    String SQL Injection

    在文本框中输入' or 1=1 --

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

    以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,对字符长度进行修改:

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

    把的value值改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个

    Database Backdoors

    输入注入语句:101; update employee set salary=10000,成功把该用户的工资涨到了10000,使用语句101;CREATE TRIGGER BackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='1234@163.com' WHERE userid = NEW.userid创建一个后门

    Blind Numeric SQL Injection

    先输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );查看pin数值是否大于10000,之后慢慢缩小范围,最终可以确定pin的值在2000到2500之间,然后打开BurpSuite,抓包然后send to intruder进行暴力破解,选好攻击位置后要设置载荷

    实验总结与体会

    最后一次实验了,感觉跟自己以前做的很多ctf的题很多相同之处,用网页源码分析,用burp分析,很多思路相似之处。多做一些就会又一个大致的思想来把控了。

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/Jclemo/p/6854337.html
Copyright © 2011-2022 走看看