标签:tables 综合 SM min sql 版本 用户名 project 博客
终于来到Web安全这一方向了,这也是课程的最后一次实验。
我还只是个Web安全的小白,对这一领域不了解。我希望通过这次实验,学习Web安全中基本的漏洞点,以及基本的漏洞利用技巧,增加了解。
当然,基础知识一定要补齐,以后学习过程中应该缺啥补啥。
WebGoat 8.0教学的第一部分就是学习HTTP协议,已经设置HTTP代理,修改HTTP数据包。
当然啦,作为OWASP项目,使用的工具是OWASP ZAP这个开源扫描器。
首先设置HTTP代理服务器的端口
然后再浏览器中配置HTTP代理,这里我用的是firefox
一定要注意,把localhost和127.0.0.1
WebGoat有一个修改过HTTP数据包的练习,要求是:
点击ZAP的绿色小圆钮拦截请求,然后我们按要求修改、发送即可。
注意,将POST方法给为GET方法时,参数就不在HTTP数据包中了,而是变成了URL参数。
WebGoat中提供了这样一个练习,我们要重置password,需要回答密保问题。
但是我们不知道要问题的答案,我们通过ZAP修改HTTP请求包欺骗系统,从而重置password
随便在表单中输入数据,然后用ZAP把HTTP请求截获下来。
一开始我无论怎么修改,都没办法通过验证。后来我在YouTube上看到了解决方法
把secQuestion0该为secQuestion00,把secQuestion1改为secQuestion01,然后提交就可以了。
为啥这样就能成功呢?我到现在也没弄明白。
webgoat中的这个教程是告诉我们传输未加密的敏感信息是非常危险的。
练习题的要求就是嗅探提交数据,得到用户名和password。
我们用ZAP直接查看HTTP请求包就可以发现username和password了。
提交上面的数据就完成了这个练习。
这个练习告诉我们向客户端发送过多的信息会导致严重的 访问控制问题
我们在这个练习中的目标是获取更高权限才能获得的信息。
该练习的要求是拿到CEO的薪水信息,CEO的名字是Nevile Bartholomew。
以我的权限是无法在页面看到CEO的信息的。
但是HTML源码却泄露了CEO的信息。
我们轻松拿到了该练习的答案——CEO的薪水为450000
这道题还是相当简单的。
这部分教学有四项内容,SQL Injection、SQL Injection(advanced)、SQL Injection(mitigations)、XXE
先是基本的SQL注入教学,webgoat会介绍string SQL injection(字符串型的SQL注入)和numberirc SQL Injection(数字型SQL注入)
一个成功的SQL注入可以:
可能的字符串型注入有:
"select * from users where name ='" + userName + "'";
可能的字符型注入有:
"select * from users where employee_id = " + userID;
攻击者可以提供的输入有
Web应用程序会执行
这样,所有的记录会从数据库中返回
直接使用webgoat教程中给出的技巧即可。
使用数字型SQL注入的技巧即可。
接着我们探索更高级的SQL注入话题。我们在这里需要了解
虽然Webgoat中说这些技巧是advanced,但放到现在,也只是基本技术。
Webgoat给出了特殊的字符
/* */ 是内联注释(inline comments)
--, # 是行注销(line comments)
举例:Select * from users where name = 'admin' -- and pass = 'pass'
; 允许执行多个查询(query chaining)
举例:Select * from users; drop table users;
', +, || 允许字符串的
Char() 无引号的字符串
举例:Select * from users where name = '+char(27) or 1=1
不过,不同的数据库也细微的差别。
一些特殊的语句在SQL注入中也起到关键的作用:
Webgoat在这一部分的第一个练习,目的是找到Dave用户的password。
由于要用到union查询,我们必须知道select语句选择的列数。
我看别人的博客,好像是要用 order by排序来判断列数的。
其实在这里可以直接输入‘ or 1=1 --
把表格全部脱出来的,很容易就知道列数了
dave不在这张表格里,需要用union语句把user_data_system表格显示出来
我们构造的字符串是
' union null, username, password, null, null, null, null from user_data_system --
发现了!!dave的password就是dave。
但不知道为什么,完成后WebGoat没有点亮这个图标。可能是输入的攻击字符串不是标准答案吧。
事实上,这个SQL注入点非常脆弱,只要输入
'; select * from user_daa_system; --
同样可以达到相同的效果。
接下来的题目我还没有做出来,不过作为一个Web萌新,这是正常的。
这是一道需要综合SQL注入技术的题目,可能还需要结合SQL盲注,等我研究一下,后面再攻克这个题目。
这一部分介绍了SQL注入的缓解措施。
比如:不可变的查询语句、静态查询语句、参数化语句、存储过程等。
而且给出了许多例子,有兴趣的同学自己在WebGoat 8.0上浏览即可。
webgoat在这一部分只有一道习题。
这里WebGoat给出的提示是通过order by,找到webgoat-prd服务器的IP地址。
而且这里的表单并不是一个脆弱的SQL注入点。
YouTube上的一个视频展示了这道题的做法,这道题应该是截获HTTP响应包,然后进行修改。
????我没有明白这道题在这一模块的作用是啥。因为只要输入表单上存在的IP地址,WebGoat都会提示你通过了。
现在我们看到表单中出现了webgoat-prd了。
暂时就当这道题是这么做的吧,虽然和SQL注入技巧关系不大,不过好歹也学会了修改HTTP响应中的JSON数据了。
我们在实践中,应该注意最小权限原则,尤其是要在数据库连接池中注意读写权限的分配。
在注入漏洞(Injection Flaws)这一教学模块中,我有一道综合的SQL注入练习没有完成。
由于我对XML不是很了解(虽然在java web课程中接触过),没有完成XXE部分的教学练习。
如果我想成为一个技术大牛的话,这些技巧必须要掌握的。
但由于咱们只是玩票的性质,暂时放一放吧。
XSS的可以分为三类:反射型、存储型、基于DOM的XSS。
第一个练习是获取当前页面的cookie,这里需要用chrome或者firefox浏览器
新开一个标签页,并在地址栏输入一下内容
javascript:alert("XSS Test");
javascript:alert(document.cookie);
然后比较两个标签页的cookie是否一致。
我们可以发现,这两个标签页的cookie都是JSESSIONID=D0913650405F1FEBC6B4457F52193892
在服务器端检查用户的所有输入是一个好的实践。反射型XSS中,攻击者让用户“点击”带有攻击脚本的恶意URL。
在这个练习中,要求我们的攻击载荷包含<script>alert(‘my javascript here‘)</script>
我们的任务是找到一个哪一个表单元素是可以执行XSS。
随便选一个输入框输入攻击载荷,在按下UpdateCart
按钮
WebGoat给出了通过的提示,也就是说我们尝试的注入点是对的。
(虽然我做这个练习的时候感觉莫名其妙……这是啥效果???)
基于DOM的XSS是另一种形式的反射型XSS,它们都是通过链接触犯并在浏览器上作用的。不同的是,基于DOM的XSS不会跑的服务器上,它只会在客户端上执行,攻击者的恶意代码以本地账号的权限执行。
用户不会知道发生了攻击行为……恶意攻击者不会使用<script>alert(‘xss‘)</script>
这个练习里面,需要寻找一些“测试”代码(WebGoat使用backbone作为其主要的JavaScript库)。 有时候,测试代码会在生产中遗留下来(通常测试代码非常简单,缺乏安全性或任何质量控制!)。
你的目标是找到路径并利用它。这里需要找到测试代码的位置。
根据提示,我们要检查GoatRouter.js文件,通过firefox浏览器的开发者工具就可以查看。
我们很轻松的发现,Backbone库中,测试代码的路径
然后填写答案,并提交
下一步应该是进行真正的基于DOM的XSS攻击。
webgoat的XSS课程还有两个练习我没有完成。
一个就是尝试基于DOM的XSS攻击,通过URL执行webgoat.customjs.phoneHome(),然后会获取一个随机数,提交这个随机数后就完成了这个练习。
最后一个练习给出了一个场景,完成的目标和上一题一样。
我暂时还没解决这些问题,先放一放。
即便做了XSS部分的三个教学练习,我对XSS还是一头雾水。
WebGoat 8.0 给出的提示和教学非常少,还得有一定的基础才能玩的开心呀。
(1)SQL注入攻击原理,如何防御
(2)XXS攻击原理,如何防御
(3)CSRF攻击原理,如何防御
课程结束了,而技术之路是没有止境的。
我在这门课程中玩了后门和木马、用了各种工具、尝试了一些漏洞、在虚拟环境里面各种捣鼓,虽然连脚本小子都算不上,但也体会到了入侵带来的快感。
不过,就算工具玩得再花,扫描器用的再熟,技术依然是浮于表面的,缺乏深入研究的,离真正的“黑客”还差的很远。
人的精力是有限的,即便是专业人士,也只是在某些细分领域略有所得。
成为公务员之后,我应该没有机会接触这些技术了。
但是,足够耐心、乐于钻研、不断学习、勇于挑战、崇尚自由甚至略微叛逆的极客精神,是我得到的最大精神财富。
标签:tables 综合 SM min sql 版本 用户名 project 博客
原文地址:https://www.cnblogs.com/wyf12138/p/9074566.html