标签:document 结果 混淆 alert back repeater 动态sql drop ted
- 1.使用XSSFilter。输入过滤,对用户提交的数据进行有效性验证,仅接受指定长度范围内并符合我们期望格式的的内容提交,阻止或者忽略除此外的其他任何数据。比如:电话号码必须是数字和中划线组成,而且要设定长度上限。过滤一些些常见的敏感字符,例如:```< > ‘ “ & # \ javascript expression "onclick=" "onfocus"```;过滤或移除特殊的Html标签, 例如: ```<script>, <iframe> , < for <, > for >, " for```;过滤JavaScript 事件的标签,例如``` "onclick=", "onfocus" ```等等。输出编码,当需要将一个字符串输出到Web网页时,同时又不确定这个字符串中是否包括XSS特殊字符(如< > &‘”等),为了确保输出内容的完整性和正确性,可以使用编码(HTMLEncode)进行处理。
- 2.DOM型的XSS攻击防御。把变量输出到页面时要做好相关的编码转义工作,如要输出到 <script>中,可以进行JS编码;要输出到HTML内容或属性,则进行HTML编码处理。根据不同的语境采用不同的编码处理方式。
- 3.HttpOnly Cookie将重要的cookie标记为http only, 这样的话当浏览器向Web服务器发起请求的时就会带上cookie字段,但是在脚本中却不能访问这个cookie,这样就避免了XSS攻击利用JavaScript的document.cookie获取cookie:
- CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
- 通过 referer、token 或者 验证码来检测用户提交。
- 尽量不要在页面的链接中暴露用户隐私信息。
- 对于用户修改删除等操作最好都使用post 操作 。
- 避免全站通用的cookie,严格设置cookie的域。
这是最后一个实验了,基于这个webgoat的实验平台做了很多实验,按着步骤来,也不算难操作,难在理解每一句指令,每一个攻击方式,每一个漏洞,这也是我们做这么多实验的目的吧,直观的先认识到,怎么样会成功,然后再推敲,是怎么成功的。网络对抗的实验确实是最有趣的,也是我做过最能调动人学习兴趣的实验。
通过java -jar webgoat-container-7.0.1-war-exec.jar
打开webgoat。(这个实际安装真的好费事。。最后还是选择了老师的kali)
在kali浏览器中输入localhost:8080/WebGoat,用默认账户密码登录webgoat。
如果一个未经验证的用户输入一个 HTTP 响应时, XSS 很有可能发生,利用它就可以进行钓鱼攻击,在一个页面内添加一个伪官方网页就可以骗取用户的账号和口令。注意这里强调的是在 HTTP 响应时攻击,而不是请求,要知道如果是请求的话,那么就相当于是自己黑自己,多没意思,可如果是响应的话就意味着,别人发送请求,而你响应他虚假的页面,这样就可以用来对其进行欺骗。
- 然后在webgoat找到xss攻击打开Phishing with XSS,将这段代码输入到输入框中,点击search出现如下登录框:
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230250235-1868497484.png)
- 在登录框中输入用户名、密码:
- 点击登录后跳出弹框,其中包含用户输入的用户名、密码。攻击成功!
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230257163-183396322.png)
### 3.XSS:Stored XSS Attacks 存储型XSS攻击
- 简单来说明一下存储型XSS的攻击基本流程:比如在某个论坛提供留言板功能,黑客在留言板内插入恶意的html或者Javascript代码,并且提交。网站后台程序将留言内容存储在数据中。然后一个用户也访问这个论坛,并刷新了留言板,这时网站后台从数据库中读取了之前黑客的留言内容,并且直接插入在html页面中,这就可能导致了:黑客留言的脚本本身应该作为内容显示在留言板的,然后此时可能黑客的留言脚本被浏览器解释执行了。然后黑客就可以:通过javascript获取用户的cookie,根据这个cookie窃取用户信息;重定向网站到一个钓鱼网站;重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服务器等等。
- 打开Stored XSS Attacks
- 在Message框中输入<script>alert("你想加在弹框里的内容");</script>
- 点击提交就可以看到弹窗了。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230359666-2086177604.png)
### 4.XSS:Reflected XSS Attacks 反射型XSS攻击
- 反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
- 在第二个code框中输入```<script>alert("20155204wh");</script>```
- 点击purchase后攻击成功。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230422678-678387519.png)
### 5.Cross Site Request Forgery(CSRF)
- CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
- 注意留心页面右边Parameters中的src和menu值
- 在title框中输入学号,message框中输入代码:<img src=‘attack?Screen=src值&menu=menu值&transferFunds=转账数额‘ width=‘1‘ height=‘1‘>
- 点提交按钮,再点击生成的连接,即可看到结果。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230612184-1760972856.png)
### 6.CSRF Prompt By-Pass
- 跟上一个一样的操作,留意页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额">
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM">
- 还是点击学号链接,跳转到攻击成功的页面。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230622705-1580751470.png)
### 7.SQL:Numeric SQL Injection
- 这里开始的都是SQL攻击,所谓SQL注入式攻击,就是输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
- 我们在kali中打开```BurpSuite```这个软件。
- 选择Proxy->Options->Add添加一个端口,修改端口号为5204,并选中这个端口。
- 然后配置Firefox,```preference-->advanced-->network-->connection-->settings```,设置代理服务器和端口,要与刚刚BurpSuite中绑定的一致。
- 设置好代理后回到题目页面,点击Go,然后进入BurpSuite中依次选择Proxy->Intercept,可以看到已经抓到了包。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230653833-547779522.png)
- 然后右键这个包,把它send to repeater,再进入repeater页标签,选择Params将其中station的值改为101 or 1=1,点击Go运行,查看右侧代码可以看到包中的SQL语句为
SELECT * FROM weather_data WHERE station = 101 or 1=1
- 回到Proxy中点击Intercept is on 改为 off 停止抓包,回到火狐发现已经成功。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230710713-1077607454.png)
### 8.SQL:Command Injection
- 还是用BurpSuite抓包。
- 在webgoat中点击view,BurpSuite的proxy已经抓到了包,同样send到repeater,在其中的Params选项中先运行一次,查看数据都提交的位置。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230722288-1228035494.png)
- 然后修改HelpFile的值为```AccessControlMatrix.help"&&ifconfig"```,点击GO发现执行了ifconfig语句。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230732912-924984692.png)
- 回到webgoat发现攻击成功。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230749978-1607675256.jpg)
### 8.SQL:Log Spoofing
- 在User Name文本框中输入```%0d%0aLogin succeeded !admin```可以欺骗登录。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230758728-1555840619.png)
### 9.LAB:SQL Injection(Stage 1:String SQL Injection)
- 使用Firefox浏览器上方的插件firebug,可以修改当前页面的源码。
- 利用firebug对长度maxlength值进行扩大(原本是8),然后使用用户Neville进行登录,在密码栏中再次输入‘ or 1=1 --,点击登录就OK。这里firebug要一直开着,不然改过的网页源码就无效了。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230812262-489408161.png)
### 9.LAB:SQL Injection(Stage 3:Numeric SQL Injection)
- 还是用上一个的办法登录。
- 还是用firebug修改viewprofile部分的代码,找到一行用员工id作为索引来传送数据的代码,双击这行代码就可以出现value的值,因为我们想要用员工的账户浏览老板信息,而大多数企业公司里老板的工资应该是最高的,所以我们就把其中的value值由101改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个让我们看到。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230816861-842379057.png)
### 10.String SQL Injection
- 构造永真式‘or 1=‘1,输入第一个分号用来闭合原输入语句的前一个分号,而第二个分号用来闭合原输入语句的后一个分号,使这条语句被强行拆分成为两条语句。然后我们就可以看到全部信息了。
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230827042-930917038.png)
### 11.Database Backdoors
- 输入语句```101; update employee set salary=8888888```成功将该用户的工资变成8888888,攻击成功:
![](https://images2018.cnblogs.com/blog/1071529/201805/1071529-20180529230846407-2120488470.png)
- 下一步,输入语句
101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘20155204@hackme.com‘ WHERE userid = NEW.userid
```
使得表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。
标签:document 结果 混淆 alert back repeater 动态sql drop ted
原文地址:https://www.cnblogs.com/20155204wh/p/9108500.html