作为安全专家如何提高

信息安全 Web应用程序 渗透测试 职业教育
2021-09-06 22:49:45

我是一名专业的软件开发人员,对 Web 应用程序的安全性非常感兴趣。我想说我可能比普通开发人员更了解 Web 应用程序的安全性。我的问题是,我的知识主要集中在网络安全的理论部分——也就是说,我读过很多书,我关注博客和邮件列表,但我的实践经验有限。

我知道漏洞的根本原因,我知道它们是如何工作的以及如何阻止它们。我想做的是把我的知识带到下一步——我想要那种实践经验。我知道我可能最终会在我职业生涯的某个阶段从事与安全相关的工作,但还不是现在——至少不是全职。同时,我想积累自己的Web应用安全知识,积累更多经验,尤其是在渗透测试等领域。

亲爱的安全专家,我向您提出的问题是,您对我获得我如此渴望的实践经验有什么建议?您可以推荐哪些资源来了解渗透测试中使用的不同工具和技术?

一种选择是,在本地安装一个易受攻击的 Web 应用程序(我知道至少有一个在 google 代码上,不记得它的名称),然后使用诸如 OWASP 的测试指南之类的指南来尝试不同的技术。但是,我可能正在寻找一种更有指导性的学习方式,意思是,我想知道我应该按什么顺序做事,确保我以正确的方式和正确的顺序做事——婴儿步骤,所以说。

任何和所有的建议都非常受欢迎。

4个回答

你自己做了这么多的学习,这真是太好了。你在正确的轨道上。您自学的热情将使您在许多竞争对手中领先一步。荣誉。

我的主要建议是:不要太担心通过你想学习的所有材料规划一条路径。您不需要经过深思熟虑的计划。相反,弄脏你的手,四处玩耍,不要害怕探索。当你看到一些看起来很酷的东西时,机会主义地跟进它。一开始你可能会不知所措,但从长远来看,我认为你会发现这是一次宝贵的经历。

我认为一个很好的经验是从事软件系统的安全评估。这对您来说将是一次有趣的体验。您可以选择一个开源 Web 应用程序或 Web 编程框架并对其进行安全评估:进行架构风险评估(Microsoft 称之为“威胁建模”,使用 STRIDE 等),阅读代码并进行安全代码审查,尝试一些静态分析工具。然后,写下你的结果,并在博客上发表你的评价。这样做几次,我认为这种体验会对你非常有帮助。

另一个对您来说非常好的体验是构建一个或两个非平凡的 Web 应用程序。我喜欢 web2py 作为一个 web 编程框架,因为它易于学习,但或者选择更流行的东西(例如,Ruby on Rails、PHP 或其框架之一)可能是了解常见框架存在什么问题的好经验。使用一些客户端 JavaScript 代码编写一个 Web 应用程序。玩转学习如何使用 jQuery 等。也许尝试使用 Node.js。我认为这将是接触 Web 开发人员可能面临的一些挑战和心态的绝佳方式。

根据您的个性,您可能会发现创建博客并在学习过程中写下您学到的有趣事物很有趣。对许多人来说,写出一些东西的行为会在你的大脑中巩固它,并迫使你更好地理解它。

您提到练习破解 Web 应用程序。学习如何破解 Web 应用程序很有趣,而且在一定程度上是值得的。有一些动手破解 Web 应用程序的经验是很好的,可以帮助您考虑风险并使概念具体化。但是,我不会将其作为您学习的主要重点。如今,Web 渗透测试是一项低端活动,职业机会不大,因此我不建议您将精力集中在学习成为 Web 渗透测试者上。这不是我建议你定位自己的方式,如果你有选择的话(听起来你这样做)。

我可以确定您的情况 :-)
我已经在信息安全社区中嗡嗡作响了一段时间,基本上也尝试着手处理您想做的事情。这些是我收集到的一些关于如何弄脏你的手的建议。

eLearnSecurity
就我个人而言,我决定继续学习 eLearnSecurity 的课程。

http://www.elearnsecurity.com/course/penetration_testing/

由于非常实用,它在安全社区中获得了很大的关注。他们还有一个他们称之为“斗兽场”的设置,在那里你可以使用易受攻击的网络应用程序。

这不是那些“为了人力资源而获得的认证”之一。它非常有用。

DVWA
你也可以看看 Damn Vulnerable Web App,它是由我的一个叫 Ryan Dewhurst 的伙伴创建的:http ://www.dvwa.co.uk/ - 有点像 Owasp 的 WebGoat,但在我看来更好。例如:它向您展示了漏洞,然后是关于如何防止这种情况的 PHP 代码。
与其他类似的列表:https ://web.archive.org/web/20160527115615/http://punter-infosec.com/vulnerable-web-applications-to-learn-web-application-testing-skills

Agnitio
这是一个基于清单的安全代码审查工具。你可以从中学到很多东西。总的来说,看看 SecurityNinja (David Rook) 的博客,里面有很多好东西。

https://web.archive.org/web/20160427080011/http://www.securityninja.co.uk/application-security/agnitio-v1-2-released-today/

EH-NET
查看http://www.ethicalhacker.net,那里有很多好的指针。

挑战/兵棋推演
这些都是好的原因显而易见:练习、练习、练习。其中有很多,而且好的有适合初学者和其他人的水平。

http://www.thehexfactor.org/
https://web.archive.org/web/20160406111843/http://www.iriss.ie/iriss/hackeire.htm

我希望其中一些可以对你有用。干杯!

PS:抱歉链接不是链接,显然我不允许很多链接,因为我的声誉不够高(这是我的第一个答案)。

http://google-gruyere.appspot.com/提供了一些您可以解决的实际问题。

此 Codelab 展示了如何利用 Web 应用程序漏洞以及如何防御这些攻击。学习事物的最佳方式是边做边学,这样您将有机会进行一些真正的渗透测试,实际开发一个真正的应用程序。具体来说,您将学习以下内容:

  1. 如何使用常见的 Web 安全漏洞攻击应用程序,例如跨站点脚本漏洞 (XSS) 和跨站点请求伪造 (XSRF)。
  2. 如何查找、修复和避免这些常见漏洞和其他具有安全影响的漏洞,例如拒绝服务、信息泄露或远程代码执行。

遵循 Rory Alsop 的建议(上图):

如果您的雇主/组织定期聘请外部公司执行漏洞测试,请要求/乞求/斗争/争取参与其中,也许是作为网络/应用程序开发人员。

这将使您能够与从事动手工作的人取得联系(询问他们是如何闯入游戏的)。

您可以利用您的理论知识来指导您的雇主。虽然您可能没有实际使用过所使用的测试工具,但了解这些工具在基本层面上的作用以及这些工具打算披露的内容将对您有所帮助。

审查外部公司提交的书面工作建议很有用,您也可以就他们的意图提出建设性的建议。我已经能够与我现在的雇主一起审查这些文件,并指出“样板”与真正有意义的东西。我能够看到要执行的此类工作的报价。哇!

最后,测试结果的书面报告对某些人来说可能看起来很悲观和厄运,但这可能是您自愿参与任何后续风险评估或缓解工作的机会。

说到风险评估,DW 建议针对网络应用执行风险评估是一个很好的建议。您可以从 MS 下载 STRIDE 模板/工具(我上次使用它时需要 Visio)并使用它来创建您的成品。您还可以使用 MS DREAD 量表来衡量潜在风险。作为联邦风险评估框架的 NIST 800-30 文件是流程步骤和报告框架的另一个很好的来源。STRIDE、DREAD、NIST 出版物等模型都成为您展示的任何文章中“最佳实践”引用的坚实点。

最终,管理层将成为您创建的任何输出的消费者。给他们一些他们理解和有用的东西会给你后续安全任务所需的曝光。