博主新书:《代码审计:企业级web代码安全架构

  • A+
所属分类:Seay信息安全博客

显示不全请点击全屏阅读

※代码审计环境准备


※漏洞挖掘和修复方法


※功能怎么设计更安全


※应用整体安全体系建设

 

欢迎关注博主个人微信公众账号“互联网安全与创业”

Qrcode_for_gh_d44fe8bf5c2a_430

  2015年11月,在每天都被问到什么时候能买到的情况下,我的个人原著代码审计:企业级web代码安全架构终于开始预售(本文的目录更细,实书封面会是黑色这个),它是代码安全审计领域的第一本书,这本书从2014年5月开始动笔,时至今日,已经过去一年半之久。

  2014年4月的时候我在北京国际会议中心参加了qcon(全球软件开发者大会)并演讲了议题《移动APP背后的安全问题》,会后机械工业出版社编辑吴怡老师找到我,问我有没有想法写一本移动安全方面的书,当时移动安全正热,这方面的内容也比较少,我虽然拒绝了,不过心里还是一直有想法写一本书,一是可以提升自己的影响力,二来算是给自己的积累做一个总结,三来算给安全行业贡献一份力量。

  这本书本该在2014年年底就完成,14年9月我从创新工场安全宝离职加入到阿里巴巴之后,将近有一年的时间只字未动,导致了书的面世推迟。

一、为什么要写这本书?
   这本书真正意义在于它承载了我在安全行业的使命,“建设更安全的互联网”这是道哥一直在讲也一直在做的事,我从加入安全行业之后一直与他在共事,非常认同他的这个理念,本书请了道哥作序,同时也把这句话作为这本书的使命。

二、这本书有哪些亮点?
  这本书由浅入深讲解代码审计,比较有亮点的章节是第二部分的三、四、五、六、七、八章,主要讲漏洞的挖掘思路、技巧和修复方法,每种漏洞都有多个案例,站在攻击者的角度分析漏洞之后,再给出漏洞的修复方法。 另外一个比较有亮点的地方在第三部分的十一章【应用功能的安全设计】、十二章【应用安全体系建设】,所有的应用都是一个个功能堆砌起来的,在十一章详细介绍各种应用功能怎么样设计更加安全,从攻击者的角度详细分析常见功能通常会出现的安全问题,在分析出这些安全问题的利用方式后,再给出问题的解决方案,如果你是应用架构师或者研发工程师,这些能够帮助你在设计程序功能的时候避免这些安全问题。第十二章介绍应用安全体系建设中应该注意的点,比如用户密码策略、权限控制、敏感操作多因素验证等等,采用纵深防御和横向细化策略的防御原则,从应用程序本身的角度去考虑安全建设。

三、这本书有哪些内容?

第一部分 代码审计前的准备
  本书总共分为三个部分,第一部分为代码审计前的准备,而这一部分又分为第一章“PHP运行环境搭建”以及第二章“审计辅助与漏洞验证工具”两大章,第一章详细介绍我们在学习代码审计前需要了解的PHP核心配置文件以及PHP环境搭建的方法,第二章这是介绍学习PHP代码审计,我们需要准备的工具,以及这些工具的详细使用方法。

第二部分 漏洞发现与防范
  第二部分包括三、四、五、六、七、八章一共六章,将着重介绍PHP代码审计的中漏洞挖掘思路与防范方法。

  其中第三章详细介绍PHP代码审计的思路,包括根据关键字回溯参数、通读全文代码以及根据功能点定向挖掘漏洞的三个思路。

  第四、五、六章则是常见漏洞的审计方法,共分为基础篇、进阶篇以及深入篇,涵盖到SQL注入漏洞、XSS漏洞、文件操作漏洞、代码/命令执行漏洞、变量覆盖漏洞以及逻辑处理等等漏洞。

  第七章介绍二次漏洞的挖掘方法,二次漏洞在逻辑上比常规漏洞要复杂,所以我们需要单独拿出来,以实例来进行介绍。

  在经过前面几章的代码审计方法学习之后,相信大家已经能够挖掘不少有意思的漏洞,在第八章,将会介绍更多代码审计中的小技巧,利用这些小技巧可以挖掘到更多有意思的漏洞。

  每类漏洞都有多个真实漏洞案例的分析过程,可以真正帮助大家学习代码审计的经验,不过这章不仅仅是介绍了漏洞的挖掘方法,还详细介绍了这些漏洞的修复方法,对开发者来说是非常有用的一部分内容。

第三部分 安全编程的规范
  第三部分主要介绍的是PHP安全编程的规范,从攻击者的角度来告诉你应该怎么写出更安全的代码,这也是本书的核心价值,让代码没有漏洞,这部分包括第九、十、十一、十二 共四章。

  第九章主要介绍参数的安全过滤,所有的攻击都需要有输入,所以我们要阻止攻击,第一件要做的事情就是对输入的参数进行过滤,本章详细分析discuz的过滤类,用实例说明什么样的过滤更有效果。

  第十章主要介绍PHP中常用的加密算法,目前99%以上的知名网站都被拖过库,泄露了大量的用户数据,而在这一章,我们将详细的说明使用什么样的加密算法能够帮助你增强数据的安全性。

  第十一章是安全编程比较核心的一章,所有的应用都是一个个功能堆砌起来的,我们在这章从设计安全功能的角度出发,从攻击者的角度详细分析常见功能通常会出现的安全问题,在分析出这些安全问题的利用方式后,再给出问题的解决方案,如果你是应用架构师,这些能够帮助你在设计程序功能的时候避免这些安全问题。

  第十二章介绍应用安全体系建设中应该注意的点,比如用户密码策略、权限控制、敏感操作多因素验证等等,采用纵深防御和横向细化策略的防御原则,从应用程序本身的角度去考虑安全建设。

四、哪些人需要这本书?
我按读者按岗位进行了一个分类,如下

1.代码审计岗位
岗位描述:代码审计工程师负责对企业应用进行代码审计,经过审计过的代码才能发布上线。

代码审计能力是代码审计工程师必备的技术能力,对代码审计掌握的越全面则发现的漏洞会更多。

2.研发岗位
岗位描述:研发工程师负责应用的开发。

应用的代码出自研发工程师之手,如果研发人员对代码安全不理解,没有安全意识,则写出来的代码会漏洞百出,也可能出现不配合安全人员进行漏洞修复。

3.安全运维工程师
职位描述:安全运维工程师负责维护服务器安全。

黑客入侵之后会在服务器文件中插入后门代码,如果运维工程师不理解漏洞的攻击特征,不能从代码中发现漏洞或者后门,则无法清除后门和发现特定攻击。

4.应用架构师/设计师
岗位描述:负责应用的整体架构设计。

架构师不理解漏洞本质,设计的程序漏洞百出。应用架构师/设计师必须清楚每个功能和结构点容易出现什么样的安全漏洞,从单个功能和整个架构体系上对应用安全进行把控。

5.渗透测试工程师
岗位描述:对系统、应用、网络进行入侵测试。

渗透测试工程师需要对漏洞的实质性理解较深,具备代码审计和漏洞调试能力,这样才能在渗透测试过程中快速的发现并利用漏洞,否则技术很容易遇到瓶颈。

6.安全研究人员
岗位描述:负责安全研究,包括漏洞挖掘、分析等攻防对抗。

安全研究通常都会涉及到漏洞代码的分析,甚至编写攻击代码进行漏洞测试,需要具备代码审计能力才能对代码进行分析。

7.安全leader
岗位描述:负责管理安全团队,把控整个企业安全。

安全leader需要非常清楚应用容易出现漏洞的地方在哪里,才能合理分配资源,要重视代码安全。

8.学生
描述:学习安全知识。

代码审计是安全领域的基础能力,学生在熟悉代码审计之后能够快速理解漏洞本质,为其他方向的技术学习打下基础。

五、本书的目录结构是什么样的?

代码审计:企业级web代码安全架构 I
前言 IV
导读 VI
致谢和感言 IX
目录 XI

第1章 代码审计环境搭建 
1.1 wamp/wnmp环境搭建 
1.2 lamp/lnmp环境搭建 
1.3 PHP核心配置详解 

第2章 审计辅助与漏洞验证工具 
2.1 代码编辑器 
2.1.1 notepad++ 
2.1.2 UltraEdit 
2.1.3 Zend Studio 
2.2 代码审计工具 
2.2.1 Seay源码审计系统 
2.2.2 Fortify SCA 
2.2.3 RIPS 
2.3 漏洞验证辅助 
2.3.1 burp suite 
2.3.2 浏览器扩展 
2.3.3 编码转换及加解密工具 
2.3.4 正则调试工具 
2.3.5 SQL执行监控工具 

第3章 通用代码审计思路 
3.1 敏感函数回溯参数过程 
3.1.1 espcms注入挖掘案例 
3.2 通读全文代码 
3.2.1 骑士cms通读审计案例 
3.2.1.1 查看应用文件结构 
3.2.1.2 查看关键文件代码 
3.2.1.3 查看配置文件 
3.2.1.4 跟读首页文件 
3.3 根据功能点定向审计 
3.3.1 Bugfree重装漏洞案例

第4章 漏洞挖掘与防范(基础篇) 
4.1 SQL注入漏洞 
4.1.1 挖掘经验 
4.1.1.1 普通注入 
4.1.1.2 编码注入 
4.1.1.2.1 宽字节注入 
4.1.1.2.2 二次urldecode注入 
4.1.1.3 espcms搜索注入分析 
4.1.2 漏洞防范 
4.1.2.1 gpc/rutime魔术引号 
4.1.2.2 过滤函数和类 
4.1.2.2.1 addslashes函数 
4.1.2.2.2 mysql_[real_]escape_string函数 
4.1.2.2.3 intval等字符转换 
4.1.2.3 PDO prepare预编译 
4.2 XSS漏洞 
4.2.1 挖掘经验 
4.2.1.1 反射型XSS 
4.2.1.2 存储型XSS 
4.2.1.3 骑士CMS 存储型XSS分析 
4.2.2 漏洞防范 
4.2.2.1 特殊字符HTML实体转码 
4.2.2.2 标签事件属性黑白名单 
4.3 CSRF漏洞 
4.3.1 挖掘经验 
4.3.1.1 Discuz csrf备份拖库分析 
4.3.2 漏洞防范 
4.3.2.1 Token验证 
4.3.2.2 验证码验证 

第5章 漏洞挖掘与防范(进阶篇) 
5.1 文件操作漏洞 
5.1.1 文件包含漏洞 
5.1.1.1 挖掘经验 
5.1.1.2 本地文件包含 
5.1.1.2.1 远程文件包含 
5.1.1.2.2 文件包含截断 
5.1.1.2.3 Metinfo文件包含漏洞分析 
5.1.2 文件读取(下载)漏洞 
5.1.2.1 挖掘经验 
5.1.2.1.1 phpcms任意文件读取分析 
5.1.3 文件上传漏洞 
5.1.3.1 挖掘经验 
5.1.3.1.1 未过滤或本地过滤 
5.1.3.1.2 黑名单扩展名过滤 
5.1.3.1.3 文件头、content-type验证绕过 
5.1.3.1.4 phpcms任意文件上传分析 
5.1.4 文件删除漏洞 
5.1.4.1 挖掘经验 
5.1.4.1.1 Metinfo任意文件删除分析 
5.1.5 文件操作漏洞防范 
5.1.5.1 通用文件操作防御 
5.1.5.2 文件上传漏洞防范 
5.2 代码执行漏洞 
5.2.1 挖掘经验 
5.2.1.1 代码执行函数 
5.2.1.1.1 eval和assert函数 
5.2.1.1.2 preg_replace函数 
5.2.1.1.3 调用函数过滤不严 
5.2.1.2 动态函数执行 
5.2.1.3 Thinkphp代码执行漏洞分析 
5.2.2 漏洞防范 
5.3 命令执行漏洞 
5.3.1 挖掘经验 
5.3.1.1 命令执行函数 
5.3.1.2 反引号命令执行 
5.3.1.3 亿邮命令执行漏洞分析 
5.3.2 漏洞防范 
5.3.2.1 命令防注入函数 
5.3.2.2 参数白名单 

第6章 漏洞挖掘与防范(深入篇) 
6.1 变量覆盖漏洞 
6.1.1 挖掘经验 
6.1.1.1 函数使用不当 
6.1.1.1.1 extract函数 
6.1.1.1.2 parse_str函数 
6.1.1.1.3 import_request_variables函数 
6.1.1.2 $$变量覆盖 
6.1.1.3 Metinfo变量覆盖漏洞分析 
6.1.2 漏洞防范 
6.1.2.1 使用原始变量 
6.1.2.2 验证变量存在 
6.2 逻辑处理漏洞 
6.2.1 挖掘经验 
6.2.1.1 等于与存在判断绕过 
6.2.1.1.1 in_array函数 
6.2.1.1.2 is_numeric函数 
6.2.1.1.3 双等于和三等于 
6.2.1.2 账户体系中的越权漏洞 
6.2.1.3 未exit或return引发的安全问题 
6.2.1.4 常见支付漏洞 
6.2.1.5 Ecshop逻辑错误注入分析 
6.2.2 漏洞防范 
6.3 会话认证漏洞 
6.3.1 挖掘经验 
6.3.1.1 Cookie认证安全 
6.3.1.2 Espcms任意用户登录分析 
6.3.2 漏洞防范 

第7章 二次漏洞审计 
7.1 什么是二次漏洞 
7.2 二次漏洞审计技巧 
7.3 dedecms二次注入漏洞分析 

第8章 代码审计小技巧 
8.1 钻GPC等转义的空子 
8.1.1 不受GPC保护的全局变量 
8.1.2 编码转换问题 
8.2 神奇的字符串 
8.2.1 字符处理函数报错信息泄露 
8.2.2 字符串截断 
8.2.2.1 %00空字符截断 
8.2.2.2 iconv函数字符编码转换截断 
8.3 php:// 输入输出流 
8.4 PHP代码解析标签 
8.5 FUZZ漏洞发现 
8.6 不严谨的正则表达式 
8.7 十余种MySQL报错注入 
8.8 Windows FindFirstFile利用 
8.9 PHP可变变量 

第9章 参数的安全过滤 
9.1 第三方过滤函数与类 
9.1.1 discuz SQL安全过滤类分析 
9.1.2 discuz xss标签过滤函数分析 
9.2 内置过滤函数 

第10章 使用安全的加密算法 
10.1 对称加密 
10.1.1 3DES加密 
10.1.2 AES加密 
10.2 非对称加密 
10.2.1 RSA加密 
10.3 单向加密 
10.3.1 md5/sha1加密 

第11章 业务功能安全设计 
11.1 验证码 
11.1.1 验证码绕过 
11.1.2 验证码资源滥用 
11.2 用户登录 
11.2.1 撞库漏洞 
11.2.2 API登录 
11.3 用户注册 
11.4 密码找回 
11.5 资料查看与修改 
11.6 投票/积分/抽奖 
11.7 充值支付 
11.8 私信及反馈 
11.9 远程地址访问 
11.10 文件管理 
11.11 数据库管理 
11.12 命令/代码执行 
11.13 文件/数据库备份 
11.14 API接口 

第12章 应用安全体系建设 
12.1 用户密码安全策略 
12.2 前后台用户分表 
12.3 后台地址隐藏 
12.4 密码加密存储方式 
12.5 登入限制 
12.6 API站库分离 
12.7 慎用第三方服务 
12.8 严格的权限控制 
12.9 敏感操作多因素验证 
12.10 应用自身的安全中心 

附录 
网站推荐 

作者联系方式:
邮箱:[email protected]
微信:seayace
博客:www.cnseay.com
微博:http://weibo.com/seayace

Tags:

代码安全, 代码审计, 代码审计书籍,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡
博主新书:《代码审计:企业级web代码安全架构