代码审计之论

代码审计现状

    随着开发人员的安全意识逐步提高,导致漏洞挖掘的难度逐年递增。而代码审计,逐渐出现在大家的视野里,方便了安全人员能够更易挖掘到很多黑盒测试不容易发现的漏洞威胁。但是由于系列代码审计从0到1的资料比较稀缺,导致懂代码审计的人相对属于少数人员,而大部分web安全人员还徘徊在已知漏洞利用阶段。

代码审计之问

    有大部分小伙伴没有真正接触代码审计,没有具体去实践代码审计的肯定会有这样的疑问。要做代码审计需要懂哪些知识啊?给一套程序如何下手?我看得懂别人的代码审计案例,但是到自己下手时就没了思路了呢?找到漏洞不会构造POC 怎么办等等。笔者认为问这些问题的主要原因是不知道代码审计的流程。如果你知道代码审计的流程,你就知道哪个环节需要学习掌握哪些知识;如何下手审计代码;选择什么样的方式去下手;如何构造Payload,编写POC来验证漏洞的存在。

笔者认为代码审计的流程是:审计前的准备->定位漏洞产生点->URL链接构造访问漏洞产生点->payload构造突破各种防御/编码转换->证实漏洞存在。下面我们以php代码审计为例来进行分析。

审计前的准备

    环境搭建+调试工具

  别人给我们一套php程序让我们做代码审计,通过漏洞挖掘验证漏洞的存在。我们在拿到程序之后,首先要做的是环境搭建,让程序运行起来方便我们调试,验证。这就要求懂得windows版的php环境搭建或者linux版的php环境搭建。笔者推荐一款集成开发环境phpstudy。这款集成环境不论是windows还是linux安装方便,php版本切换一键搞定。环境搭建完毕后,我们要使用编辑器去修改代码调试程序,这里推荐使用IDE,phpstrom。该款编辑器美化精致,功能强大,可在phpstrom上配置xdebug 来进行调试方便漏洞挖掘。所以这里我们要学习phpstrom的简单使用及关键词搜索与xdebug的配置。    

定位漏洞发生点

 寻找定位漏洞发生点一般有如下几种方式。

1全文通读正向审计

2功能点审计

3关键词定位逆向追踪

4灰盒+白盒审计

    在进行代码审计的时候,各种方式进行组合使用是比较高效的,当然这是对有审计经验的人来说的,没有的还是慢慢针对一种方式练习一下。

在寻找漏洞定位漏洞发生点之前,审计者首先要清楚自己的定位,想要挖单种类型的漏洞,常规类型漏洞,还是业务类型逻辑漏洞,是想挖掘哪些比较难发现的漏洞,还是想挖掘比较容易挖掘的漏洞。挖掘什么样的漏洞,你就要熟悉什么样的漏洞类型产生原理,知道哪些函数利用不当或本身的脆弱性或未过滤/有效过滤造成的漏洞威胁。 比如涉及到sql注入时,因为它的产生是可控参数在与数据库交互的时没有有效过滤与原有SQL语句拼接在一起造成的注入漏洞,这时你就要专门查找与数据库交互的功能;又比如XSS, 它是在浏览器渲染的时候,可控参数被当做js代码执行造成的,这时候你就要查找在输出端时,可控参数会不会被导致js执行。其他常规类型漏洞挖掘时,可直接定位关键词来回溯。 挖掘单种类型漏洞或者常规类型漏洞,可以使用自动化审计工具如国际流行的rips,国内seay大牛的源代码审计工具,进行关键词定位搜索,然后在去验证漏洞的存在及可用性。

    全文通读正向审计并非代码全读,且属于正向追踪。审计框架级的程序,先找出开发手册来熟悉一下,然后在根据手册挑出有可控点的方法往下追代码,如带入了哪个方法,调用了哪个函数,一直追到不能追了或者追到有漏洞点位置为止,这样的好处是漏洞发现的覆盖率高,追踪好追踪,url链接好构造;审计没有手册的程序,就专门找URL链接可直接请求到的方法,且该方法中代码有带可控点方法调用,然后如上追代码。例如请求的url链接是localhost/user/updatePassword,这个链接映射的代码位置是user模块的updatePassword方法,该方法中有代码$User->where('id='.$_GET['id'])->save(); 我们看到where()方法中有带入可控参数id,那我们就继续往下追踪where方法去寻找漏洞发生点。

  功能点审计适用于常规类型漏洞,也适用于逻辑类型漏洞。为什么这么说呢?比如一个忘记密码找回的功能点,我们猜测该功能点可能会有SQL注入,验证码绕过,爆破重置密码,越权等漏洞,所以我们在审计功能点的时候,就会着重进行预测漏洞类型的审计。一般有了一定代码审计经验的人在做SDL的威胁建模时,效率就会高很多。

URL链接构造访问漏洞产生点

  到了这个环节,必不可少的要熟悉程序的目录文件结构,URL路由。一般访问漏洞产生点会有两种方式,一种是通过URL连接构造直接访问和间接访问。直接访问是漏洞产生点在可通过URL直接映射到的方法中,间接方法是漏洞点在直接映射的方法内所调用的其他方法(可多级递归)中。想要学会URL构造,一般有三种方式,①网站链接点击+目录结构寻找控制器方法。随便点击搭建起来的目标网站链接,通过对比链接,和目录文件结构来模仿构造URL链接②看手册找到URL路由结构的映射方式③是看代码+经验。

PAYLOAD构造

一般可控参数在到漏洞发生点时,可能会遇到代码防御过滤,类型转换,编码转换等。所以在可控参数到漏洞发生点期间,进行了哪些,防御,转换,编码等做一个流程图,在最后漏洞发生点想要执行什么样的结果,写出来,然后拿着最后执行的效果往上推,一直推到可控参数传参的位置。在这个环节,必不可少的要掌握一些渗透技巧,跟payload编写技巧,方便在用到的时候能真正做到灵活运用。

其他

在代码审计时,我们不光要注意到代码的问题,还要注意到php.ini配置问题,中间件结合的问题等各种影响因素,而且在审计一套你未曾审计的源码时,可查阅一下前辈们审计的该套目标程序的漏洞产生情况,熟悉开发人员的开发安全意识及漏洞忽略点来进行漏洞预测挖掘。

总结一下,通过上面简单的论述,对代码审计已经有了一个初步的了解,掌握了代码审计,你不光熟悉了编程语言,渗透测试技巧,更学会了漏洞挖掘,也就是说你同时掌握了三种技术。

喜欢就点个关注呗~谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容