当前位置:首页 > 黑客业务 > 正文内容

PHP自动化白盒审计技能与完成

访客4年前 (2021-04-13)黑客业务1051

国内揭露的PHP自动化审计技能资料较少,相比之下,国外现已呈现了比较优异的自动化审计完结,比方RIPS是依据token流为根底进行一系列的代码剖析。传统静态剖析技能如数据流剖析、污染传达剖析应用于PHP这种动态脚本语言剖析相对较少,可是却是完结白盒自动化技能中比较要害的技能点。今日笔者首要介绍一下最近的研讨与完结作用,在此抛砖引玉,期望国内更多的安全研讨人员将精力投入至PHP自动化审计技能这一有意义的领域中。
0x01 根底常识
自动化审计的完结办法有多种,比方直接运用正则表达式规矩库进行定位匹配,这种办法最简略,可是准确率是最低的。最牢靠的思路是结合静态剖析技能领域中的常识进行规划,一般静态剖析安全东西的流程大多是下图的方式:

静态剖析作业所要做的第一件作业便是将源码进行建模,浅显一点讲,便是将字符串的源码转为便利于咱们后续缝隙剖析的中心表明方式,即一组代表此代码的数据结构。建模作业中一般会选用编译技能领域中的办法,如词法剖析生成token,生成笼统语法树,生成操控流程图等。建模作业的好坏,直接影响到后续污染传达剖析和数据流剖析的作用。
履行剖析便是结合安全常识,对载入的代码进行缝隙剖析和处理。最终,静态剖析东西要生成判别成果,然后完毕这一阶段的作业。
0x02 完结思路
通过一段时间的尽力,笔者和小伙伴也大致完结了一款针对自动化的静态剖析东西。详细完结思路正是选用了静态剖析技能,假如想深化了解完结思路,能够阅览之前发过的文章。 在东西中,自动化审计流程如下:

首要载入用户输入的待扫描的工程目录中一切的PHP文件,并对这些PHP文件做判别,假如扫描的PHP文件是Main file,即实在处理用户恳求的PHP文件,那么对这品种型的文件进行缝隙剖析。假如不是Main file类型,比方PHP工程中的类界说,东西函数界说文件,则越过不做剖析。
其次进行大局数据的搜集,要点搜集的信息有待扫描的工程中类信息的界说,如类地点的文件途径、类中的特点、类中的办法以及参数等信息。一起对每个文件生成文件摘要,文件摘要中要点搜集各个赋值句子的信息,以及赋值句子中相关变量的净化信息和编码信息。
大局初始化之后,进行编译前端模块的相关作业,运用开源东西PHP-Parser对待剖析的PHP代码进行笼统语法树(AST)的构建。在AST的根底上,运用CFG构建算法构建操控流图,并实时地生成基本块的摘要信息。
编译前端的作业中,假如发现灵敏函数的调用,就停下来进行污染传达剖析,进行进程间剖析、进程内剖析,找到对应的污点数据。然后依据数据流剖析进程中搜集的信息,进行净化信息和编码信息的判别,然后判别是否为缝隙代码。
假如上一步是缝隙代码,则转入缝隙陈述模块进行缝隙代码段的搜集。其完结的根底是在体系环境中保护一个单例形式的成果集上下文目标,假如生成一条缝隙记载,则参加至成果会集。当整个扫描工程成果之后,运用Smarty将成果集输出到前端,前端做扫描成果的可视化。
0x03 初始化作业
在实在的PHP审计中,遇到灵敏函数的调用,比方mysql_query,咱们就会情不自禁地去手动剖析第一个参数,看是否可控。事实上,许多CMS都会将一些数据库查询的办法进行封装,使得调用便利且程序逻辑明晰,比方封装为一个类MysqlDB。这时,在审计中咱们就不会搜索mysql_query要害字了,而是去找比方db->getOne这品种的调用。
那么问题来了,在自动化程序进行剖析的时分,怎么获悉db->getOne函数是个数据库的拜访类办法呢?
这就需求在自动化剖析的初期就要对整个工程的一切类与界说的办法进行搜集,以便于程序在剖析的时分寻觅需求跟进的办法体。
关于类信息和办法信息的搜集,应该作为结构初始化的一部分完结,存储在单例上下文中:

一起,需求辨认剖析的PHP文件是否是实在处理用户恳求的文件,因为有些CMS中,一般会将封装好的类写入独自的文件中,比方将数据库操作类或许文件操作类封装到文件中。关于这些文件,进行污染传达剖析是没有意义的,所以在结构初始化的时分需求进行辨认,原理很简略,剖析调用类型句子和界说类型句子的份额,依据阈值进行判别,错误率很小。
最终,对每个文件进行摘要操作,这一步的意图是为了后续剖析时碰到require,include等句子时进行文件间剖析运用。首要搜集变量的赋值、变量的编码、变量的净化信息。
0x04 用户函数处理
常见的web缝隙,一般都是因为风险参数用户可控导致的,这种缝隙称之为污点类型缝隙,比方常见的SQLI,XSS等。 PHP内置的一些函数自身是风险的,比方echo可能会形成反射型XSS。但是实在代码中,没人会直接调用一些内置的功用函数,而是进行再次封装,作为自界说的函数,比方:
1
2
3
4
function myexec($cmd)
{
    exec($cmd) ;
}
在完结中,咱们的处理流程是:
使用初始化中获取的上下文信息,定位到相应的办法代码段
剖析这个代码片段,查找到风险函数(这里是exec)
定位风险函数中的风险参数(这里是cmd)
假如在剖析期间没有遇到净化信息,阐明该参数能够进行感染,则映射到用户函数myexec的第一个参数cmd,并将这个用户自界说函数作为风险函数寄存至上下文结构中
递归回来,发动污点剖析进程

[1] [2]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106506.html

分享给朋友:

“PHP自动化白盒审计技能与完成” 的相关文章

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这 买猪肉时,根据肉的颜色、外观、气味等可以判断出肉的质量是好还是坏。优质的猪肉,脂肪白而硬,且带有香味。肉的外面往往有一层稍带干燥的膜,肉质紧密,富有弹性,手指压后凹陷处立即复原。 次鲜肉肉色较鲜肉暗,缺乏光泽,脂肪呈灰白色;表面带...

宜家自助餐多少钱一位 「天津宜家自助餐多少钱」

食材的流转等息息相关的,白堤路店,就不用付钱了。吃完了,不像别的自助沙拉酱都兑了N多的水!其他」的也是10多块20块一份。鞍山西道,你绝对吃不腻。 举荐菜:当然是面啦!海鲜、你去尝尝吧。 举荐蔡:特色鸡串,金汉斯南美多少烤肉,腌好的肉和没腌的肉都有,200元一位,宜家家居,宜家2楼那个不是自助餐厅,...

中铁快运寄件电话 - 中铁快运官方网站

尽快前去领取吧,查询可以来我们,包裹已经到石家庄了,告诉对方所寄何物。广木头箱子费用在及时上百不等。 .网站“中铁快运单号查询系统”留言查询,开始不知道。 中铁快运的,且电话通知无人接听,但是价格也很贵。在哪里寄,中铁快运,电话多少中铁。 打了个电话,K54,徐州中铁快运,你好,木头箱子中铁能提供。...

存储过程oracle(oracle财务系统)

推荐教程:甲骨文教程 本文主要介绍甲骨文中的数据转换。 1.日期转换成字符串(以2016年10月20日为例) 选择to_char(sysdate,& # 39;yyyy-mm-DD hh24:mi:ss & # 39;)strDateTime从dual-获取年-月-日:分:秒-...

书黑客,黑客软件破解吃鸡,网站黑客攻击工具

关于较新版别的Windbg,官网已不再支撑独自下载,只能经过Windows SDK里边勾选来装置,不过装置之后Redist目录会有x64/x86/arm的装置包,也可独立装置。 此次评选活动的意图在于,在安全社区中宣扬这些技能,让职业进步对安全的注重,一起也能让这些技能能遭到认可和铭记。 因而,根据...

西湖论剑 Flagshop 分析复现

本文首发于“合天智汇”公众号 作者:xiaoleung title: 西湖论剑 Flagshop 分析复现 date: 2020-10-13 13:12:04 tags: CTF 本文推荐实验 PWN综合练习(三) 实验:PWN综合练习(三)(合天网安实验室) CTF PWN进阶训练实...

评论列表

南殷空枝
3年前 (2022-05-29)

到相应的办法代码段剖析这个代码片段,查找到风险函数(这里是exec)定位风险函数中的风险参数(这里是cmd)假如在剖析期间没有遇到净化信息,阐明该参数能够进行感染

囤梦歆笙
3年前 (2022-05-29)

件,并对这些PHP文件做判别,假如扫描的PHP文件是Main file,即实在处理用户恳求的PHP文件,那么对这品种型的文件进行缝隙剖析。假如不是Main file类型,比方PHP工程中的类界说,东西函数界说文件,则越过不做剖析。其次进行大局数据的搜集,要点搜集的

辞眸嘟醉
3年前 (2022-05-29)

(这里是cmd)假如在剖析期间没有遇到净化信息,阐明该参数能够进行感染,则映射到用户函数myexec的第一个参数cmd,并将这个用户自界说函数作为风险函数寄存至上下文结构中递归回来,发动污点剖析进程[1] [2]  黑

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。