成为一个破坏者的第一部分:Web安全 已翻译 100%

无踢 投递于 2013/03/18 10:29 (共 15 段, 翻译完成于 03-18)
阅读 2881
收藏 144
14
加载中

在我看来,没有什么比挑战安全领域更有挑战性。当强大的软件一个接一个接踵而至,你所需要做的就是破解他,这好比是一场围棋游戏。当你每下一步棋,你的对手——软件的设计者和开发者,通过代理——作出相应的回应。正如你所知的,赢的途径只有一条,你将会利用大脑的每一部分,找出链条中的弱点。

当我找到正确的击破点,并且整个系统崩溃的时候,我觉得我找到了自己。你也会的。

enixyu
enixyu
翻译于 2013/03/18 19:55
2

序言

这篇博客的目的并不是要全面地去讨论;实际上,它是相反的。我的目的是教会你关于安全上足够的东西——尤其是软件安全——你可以自己去深入学习其他东西。为了轻松去学习,我会在通篇博客中放置各种资源的链接;在这里,Google也是你最好的朋友,它在这个主题上有上百万的资源。

在你读了正文部分后,你可以跳去其他的你认为合适的任何部分(包括其他由之而来的博客),因为它们是独立编写的。

这篇博客主要关注Web安全。对于底层安全和加密的博客即将发布。

excepiton
excepiton
翻译于 2013/03/18 21:48
2

正文

预备知识

要想出一些安全领域的预备知识是比较难的,这知识由于这领域的涉及面太广。然而,下面的东西还是必需要有的:

  • 熟悉一种或多种编程语言(没有人会让你用你不会的语言来写小说)。如果你感兴趣的是底层的安全,那就必需要会一种底层语言;C是最好的。
  • 了解计算机的原理和它是怎样工作的。不要求你能够用用铁罐和线组装层一个CPU,但你要能够解析:
    • (Web) HTML是怎样转换的以及JS是怎样在页面上交互的。
    • (Web) HTTP协议是怎样工作的。
      • 实际上,写一个代理。你最后就做了很多这些东西。(这实际上是足够重要的,某天我可能会写一个关于这个的博客。)
    • (底层) 指针是怎样工作的,栈是怎样布局的,堆是什么东西,以及(附加要点)系统调用是怎样工作的。

在需要的地方,我会讲下更多的特殊预备知识。

excepiton
excepiton
翻译于 2013/03/18 19:55
2

心态

在我继续之前,我需要触摸一下破坏这的心态。你的目标并不是保存用户交互,或是程序的数据流。你的目标是回答一个简单的问题:在什么情况下,程序无法完成其既定目标?

或许对此最好的例子就是网络应用中存在的跨站脚本攻击;攻击者可以在页面之外输出未经过滤的内容,允许其在页面中插入任意的HTML代码。正常的数据流存留——从用户到页面的数据——但由于数据中含有HTML代码,页面被完全损坏了》

预期和实际行为的区别在于你对所有可能性的探寻——无论是下节中描述的标准bug,还是你正测试的问题域的特有逻辑缺陷。

K6F
K6F
翻译于 2013/03/18 17:00
1

网络安全

必用工具

下面是一个你的兵器库中必备工具的列表。其中一些是很多工具的集合——除非特别提及,它们大多是可以相互替换的。

  • HTTP(S) 代理——你会经常用到,它将允许你在传输过程中分行和修改数据。
  • DirBuster —— 对查找“隐藏”的文件/目录很有用。
  • PadBuster —— 侦查填充溢出漏洞很有用。
  • Python or Ruby —— 对任务进行自动化处理。

K6F
K6F
翻译于 2013/03/18 16:35
1

跨站脚本漏洞(XSS)

跨站脚本是网站最常见的漏洞。这个概念很简单:攻击者的数据发送到页面没有经过合适的过滤,使攻击者的代码可以在页面上下文内执行。

反射XSS(Reflected XSS)是攻击者的注入(比如查询字符串)后页面直接显示攻击结果。这是最常用的也是使用最多的CSRF攻击方式(见下一节)。他们可以被许多现代Web框架默认防御掉。

傅小黑
傅小黑
翻译于 2013/03/18 11:30
1

存储XSS(Stored XSS)是攻击者把数据注入到存储单元中——一般是数据库——在此后的某个时段无过滤的输出结果。这种XSS没有反射XSS普遍,但是杀伤力更大,因为很容易影响到大量用户。和反射XSS一样,许多框架默认也可以防御。

基于DOM的XSS(DOM-based XSS)是注入到JavaScript中,浏览器无过滤的输出结果。这种XSS相当罕见但是无法被框架防御。因而相对别的XSS形式,基于DOM的XSS在逐渐增多。

在所有情况下,他们都可以被输出前的数据过滤阻止,但重要的是正确地编码数据。例如HTML编码没办法防御数据中script标签中的代码;这样JS字符串也需要编码。

傅小黑
傅小黑
翻译于 2013/03/18 11:39
1

跨站请求伪造(CSRF)

CSRF攻击很简单,但很常见很有效。基本的原理是攻击者把受害者引导(重定向或Email中的链接)到目标网站上。这个页面带有执行请求的数据,比如银行事务。从后端看,就像是用户自己做的一个正常的请求。

防御CSRF的方法是在表单数据中加入随机令牌(token)。每次请求后端都验证token,确定用户会话token和表单数据token相同,否则拒绝请求。尽管主流框架都内置CSRF防御,但CSRF仍然是常见的攻击方式。

傅小黑
傅小黑
翻译于 2013/03/18 11:53
1

SQL注入

SQL注入是目前Web应用中最著名最普遍的漏洞。它是利用SQL查询时没有合适的转义,攻击者可以阻断原有查询并添加自己的查询代码。

根据代码和数据库配置情况,他可以造成从较大(盲注入查询数据)到在灾难级(任意代码执行,文件访问权限和数据破坏等)的破坏。主流的框架使用自带的ORM防御SQL注入:所有都用预备参数查询。当原生查询和攻击数据混合时,必须进行合适的转义。

傅小黑
傅小黑
翻译于 2013/03/18 12:05
1

Shell注入

Shell注入非常罕见,但非常严重。如果用户无过滤的传递shell命令,有可能——通过引号,分号或其他符号——同时执行其他命令。

使用用户数据调用shell命令最好把命令打包数组里(这是自然免疫)提供给程序,而且对原始命令字符串拼接的命令恰当的转义。

傅小黑
傅小黑
翻译于 2013/03/18 12:09
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(11)

大师兄悟空
大师兄悟空

引用来自“猫に小判”的评论

引用来自“枸杞灌篮大”的评论

引用来自“叫我大师兄”的评论

引用来自“枸杞灌篮大”的评论

好好的一篇文章被分割的乱七八糟, 看个毛线啊。。。。。。

没人叫你看。

二师兄的要求是不高, 啥都行。。。。

如果你觉得不好,请你先写出来一篇更好的。如果你只会伸手,那么请学会感激别人。

这是osc排版的问题, 与文章无关,与作者无关。。。
AUV
AUV

引用来自“枸杞灌篮大”的评论

引用来自“叫我大师兄”的评论

引用来自“枸杞灌篮大”的评论

好好的一篇文章被分割的乱七八糟, 看个毛线啊。。。。。。

没人叫你看。

二师兄的要求是不高, 啥都行。。。。

如果你觉得不好,请你先写出来一篇更好的。如果你只会伸手,那么请学会感激别人。
丫没碟
丫没碟
还有些错别字:
“组装层一个CPU”
“破坏这的心态”
大师兄悟空
大师兄悟空

引用来自“叫我大师兄”的评论

引用来自“枸杞灌篮大”的评论

好好的一篇文章被分割的乱七八糟, 看个毛线啊。。。。。。

没人叫你看。

二师兄的要求是不高, 啥都行。。。。
叫我大师兄
叫我大师兄

引用来自“枸杞灌篮大”的评论

好好的一篇文章被分割的乱七八糟, 看个毛线啊。。。。。。

没人叫你看。
大师兄悟空
大师兄悟空
好好的一篇文章被分割的乱七八糟, 看个毛线啊。。。。。。
傅小黑
傅小黑

引用来自“苏翰”的评论

有没有具体的手段防御xss,csrf,求相关链接

随便找一个复杂一些的框架,看他怎么防御的就可以了
兴哥
兴哥
还是看看 , 白冒讲 web 安全吧...
苏生不惑
苏生不惑
有没有具体的手段防御xss,csrf,求相关链接
帖子列表
帖子列表
就是个提纲
返回顶部
顶部