20155318 《网络攻防》 Exp9 Web基础

20155318 《网络攻防》 Exp9 Web基础

基础问题

  • SQL注入攻击原理,如何防御
  • 就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
  • 预防:可以在后台控制输入的长度,对于一些特殊符号禁止用户输入
  • XSS攻击的原理,如何防御
  • XSS跨站脚本攻击,是Web程序中常见的漏洞,分三类,存储型XSS、反射型XSS、DOM-XSS.XSS属于被动式且用于客户端的攻击方式,攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
  • 预防:对用户提交的的内容进行可靠的输入验证,在输入到输出的过程中进行过滤、转义
  • CSRF攻击原理,如何防御
  • CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器
  • 对于表单的提交这类操作使用post方法代替get方法,避免使用全站通用的cookie,用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

实验过程

开启WebGoat

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

  • 在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat

  • 出现如下信息表示成功

  • 20155318 《网络攻防》 Exp9 Web基础

  • 此时不要关闭命令行,打开浏览器访问localhost:8080/WebGoat,登录成功后可进行练习。

  • 20155318 《网络攻防》 Exp9 Web基础

XSS注入攻击

  • 1.Phishing with XSS

  • 该实验的目的是读取登录用户的用户名和密码。修改html的源代码,生成一个包含form的html,写一个js将form提交的内容发送给攻击者,用弹窗alert做示例

  • 首先输入编辑的XSS攻击的代码,将这段代码输入到输入框中,点击search出现如下登录框,会显示如登陆框:

  • 20155318 《网络攻防》 Exp9 Web基础

  • 在登录框中输入用户名、密码,点击登录后跳出弹框,其中包含用户输入的用户名、密码。

  • 20155318 《网络攻防》 Exp9 Web基础

  • 2.Stored XSS Attacks

  • 通过在title中输入代码使用户访问时弹出非预期的内容。在这里我们在title中输入代码<script>alert("你想在页面中显示的内容");</script>

  • 20155318 《网络攻防》 Exp9 Web基础

  • 3.Reflected XSS Attacks

  • 将带有攻击性的URL作为输入源,例如依旧输入<script>alert("想要显示的内容");</script>,就会弹出对话框:

  • 20155318 《网络攻防》 Exp9 Web基础

  • 这个和上个实验效果类似,但是两者所用的原理不一样,上一例存储型XSS是持久化的,代码是存储在服务器中,而这个实验中用的是反射型XSS攻击是非持久化的,一般来说存储型XSS攻击危害更大。

CSRF攻击

  • 4.CSRF攻击

  • 跨站请求伪造这个实验的目的是通过邮件的方式伪造一个转账请求。我们需根据题目里给出的数值参数来输入代码,在文本框中写入<iframe src="attack?Screen=题中给出的scr&menu=题中给出的menu&transferFunds=转账金额"></iframe>

  • 具体的参数可以参照右边的参数栏

  • 20155318 《网络攻防》 Exp9 Web基础

  • 20155318 《网络攻防》 Exp9 Web基础

  • 提交后,会看到一个新的消息。点击它,用户的5000元就会被转走

  • 20155318 《网络攻防》 Exp9 Web基础

  • 5.绕过CSRF确认(CSRF Prompt By‐Pass)

  • 网页中所有手动发起的请求操作,其实质是通过 HTML+JavaScript 向服务器发起请求。

    我们的目标是给新闻组发送一封带有多个威胁请求的 Email

  • 查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 查看用户操作的信息,攻击成功
  • 20155318 《网络攻防》 Exp9 Web基础

SQL注入攻击

  • 6.命令注入(Command Injection)

  • 在正常的参数提交过程中,添加恶意的代码,往往能够得到以外的收获,比如执行系统命令。

  • 点击firebug,调试网页源代码。在所请求的页面源代码中添加"& netstat -an & ipconfig"

  • 20155318 《网络攻防》 Exp9 Web基础

  • 点result后出现了网络端口使用情况和IP地址。

  • 20155318 《网络攻防》 Exp9 Web基础

  • 7.日志伪造(Log Spoofing)

  • 通过注入恶意字符串,按照规则伪造出一条日志,目的是使用户名为“admin” 的用户在日志中显示“成功登录”。在Username输入```lxy%0d%0aLogin Succeeded for username: admin``,其中%0d是回车,%0a是换行符。

  • 20155318 《网络攻防》 Exp9 Web基础

  • 8.String SQL Injection

  • 先随意输入一个用户进行查询

  • 20155318 《网络攻防》 Exp9 Web基础

  • 和数字sql注入相同,输入' OR '1'='1,也就是当1=1时输出信息,又由于1=1为恒等式,所以所有的用户信息都会被输出。

  • 20155318 《网络攻防》 Exp9 Web基础

  • 9.Numeric SQL Injection

  • 先查询一下不攻击的情况

  • 20155318 《网络攻防》 Exp9 Web基础

  • 需要尝试追加一个总是解析为true的SQL语句,拦截POST请求,用101 or 1=1替换101,将语句替换为SELECT * FROM weather_data WHERE station = 101 OR 1=1,即在查看器中更改代码如下图所示:

  • 20155318 《网络攻防》 Exp9 Web基础

  • 攻击后即可查询全部城市天气

  • 20155318 《网络攻防》 Exp9 Web基础

  • 10.Blind Numeric SQL Injection

  • 在输入框随意输入一个数字,运行后发现返回Account number is valid,说明这个数是合法的

  • 20155318 《网络攻防》 Exp9 Web基础

  • 构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );根据返回结果判定合法范围

  • 20155318 《网络攻防》 Exp9 Web基础

  • 判断2363

  • 20155318 《网络攻防》 Exp9 Web基础

  • 判断2364

  • 20155318 《网络攻防》 Exp9 Web基础

  • 使用二分法进行测试,确定值是2364,输入2364后破解成功

  • 20155318 《网络攻防》 Exp9 Web基础

实验总结

  • 本次实验在Webgoat平台上完成,通过命令注入、日志欺骗、数据库后门等方式,进行网络攻击。本次实验较为简单,选取了10个进行记录,在实验过程中遇到的问题,通过查询网上资料和参考其他同学的博客都得到一一解决。这次实践加深了我对这门课的认识,有很强的实用性~
上一篇:【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode


下一篇:Android学习笔记进阶18之画图并保存图片到本地