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

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

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

国内揭露的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自动化白盒审计技能与完成” 的相关文章

蚯蚓的市场价格 - 2020年蚯蚓收购价格

今年2020年这个价格还算是比较合理,市场价格较为平稳,当地蚯蚓批发价250元/万条,今日浙江海宁地区鲜蚯蚓批发价为17,最高可卖3元/两,每次都-是老家亳州的来回辗转的跑辛苦.货源充足,现在贩子登门收购18-222020元/斤不等。 目前价格多少钱一斤目前价格在8元一斤,是一种营养价值很高的无脊椎...

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

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

intense靶场-获取User权限

出品|MS08067实验室(www.ms08067.com) 本文作者:jokelove(Ms08067内网安全小组成员) Intense是HTB中一个难度中上的靶场,需要参与者具备下述能力: 1. Python源码审计 2. SQL注入原理 3. SNMP远程命令执行 4. 栈溢出...

关注主播不迷路顺口溜「经验」

主播聊天话术900句(关注主播不迷路顺口溜) 在日常生活中,我们能看到会说话的人总能受到更多人的欢迎,会说话的人,左右逢源,如鱼得水;不会说话的人,处处受限,寸步难行。而在直播行业,更需要会说话,直播间是一个主动的单项输出,主播输出了才能有更多的回应,隔着屏幕,输出内容能否得到回应,这更是对所有主...

西湖论剑 Flagshop 分析复现

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

全球最大黑客组织匿名者「公司被黑客攻击要求汇比特币怎么办」

⒈匿名者黑客组织匿名者黑客组织是世界最大的黑客组织,也是世界最大的政治意识黑客组织。其关键遍布于美国,次之为欧洲国家,非州、南美洲、亚洲地区等地都是有其各分部。“匿。 ⒉世界上最大黑客组织匿名者向IS开战 匿名者是啥机构 - 百度搜索。是一个黑客组织,你能了解为一群很牛逼的计算机网大神。 ⒊匿名...

评论列表

南殷空枝
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]  黑

发表评论

访客

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