php框架代码审计(上)

admin 2022年10月21日08:25:03评论41 views字数 4157阅读13分51秒阅读模式

程序员写在文章前:

本周技术分享,程序员小星想以“php框架代码审计”为题,与大家分享一下小星对代码的审计思路。但由于内容较多,此次小星先从兼容模式和path_info模式、命名空间、tp5的正常调用流程等七大部分与大家进行讨论。

(一)内容

1. MVC基本的架构

2. 漏洞挖掘

thinkphp、Yii、larevel

M 模块

V 界面

C 控制器

MVC设计模式的优点?

1)解耦合   2)多接口、降低开发成本   3)高复用

(二)使用方式

application 应用目录(放自己的代码)

|---- admin 放后台文件

|________controller

|---- index  放前台文件

|________controller

public  入口文件

|---- index.php  网站的入口文件

thinkphp  核心文件

(三)访问方式

thinkphp所有的都是用URL来实现。

thinkphp的访问模式:

1)http://localhost/index.php/模块名称/控制器的名/方法名/参数/vaulue

2)http://localhost/index.php/模块名称/控制器的名/方法名?参数=value

模块名称:在application下,例如index文件夹是模块名。

控制器的名:在index下有一controller,这个controller下有index.php,那他的控制器的名就是index。

方法名:方法就是index.php下的一些方法名称。

构造URL:

http://localhost/index.php/index/Index/hello/name/11111

php框架代码审计(上)

(四)兼容模式和path_info模式

1)tp使用兼容模式的写法:

http://localhost/index.php?s=index/Index/hello&name=1111

2)pathinfo访问的模式:

http://localhost/index.php/index/Index/hello/name/11111

3)可以得到:

http://localhost/index.php?s=模块/控制器/方法&参数=value

(五)关于命名空间

tp5遵循一个psr-4自动加载规范,他可以去自动加载类,需要合理的、正确的命名空间。

一组的健康的、合格的tp5代码需要一个合理的命名空间。

php框架代码审计(上)

创建一个核心包下的文件kk.php。

php框架代码审计(上)

php框架代码审计(上)

php框架代码审计(上)

得到一个关于命名空间的结论:

1)如果你写在application下,那你命名空间的一个根路径是app;

2)如果thinkphp下的think,那你命名空间的一个根路径就think;

3)如果thinkphp下的traits,那你命名空间的一个根路径就是traits。

(六)问题根源

TP处理URL的一个特性,他使用全局变量。

http://localhost/index.php/index/Index/hello/name/11111

http://localhost/index.php/index//Index/hello/name/11111

(七)tp5的正常调用流程

01  URL路由解析动态调试分析

1)先看他这个入口文件的调用也就是public/index.php,根据他的入口文件去找相应的代码。

php框架代码审计(上)

php框架代码审计(上)

2)正式进入路由检测的一个方法。

php框架代码审计(上)

3)他会从下图中进一个path方法。

php框架代码审计(上)

4)他会从下图中进一个pathinfo方法。

php框架代码审计(上)

5)要从这里进入一个server。

php框架代码审计(上)

6)ltrim()方法可以把/index/Index/hello//name/11111这一段字符串的最左边的'/'index/Index/hello//name/11111,以上就是路径解析的一个过程。

02  路由解析动态调试

1)接下来会调用check方法。

php框架代码审计(上)

2)继续跟进check方法。

php框架代码审计(上)

3)后续他会用str_replace()方法来把斜杠修改成|,调用"use thinkroutedispatchUrl as UrlDispatch; " 这个Url.php。

php框架代码审计(上)

4)跟进至paresUrl中。

php框架代码审计(上)

php框架代码审计(上)

5)array_shift()取出第一个模块名,然后用同样的手法给控制器取出来并且赋值给$controller,再用同样的手法给$action赋值,最后他会把已经拆分的东西打包存放到这个route当中。

php框架代码审计(上)

6)后续把这一个route的内容返回到init中的$result中去。

php框架代码审计(上)

7)接下来他会去new一个module类,但是这个module中没构造方法,所以他会调用一次父类的无参构造,然后再调用module下的初始化方法init。

php框架代码审计(上)

8)在进入这个初始化方法后他会用parent::init();再调用一次父类的初始化方法。

03  开启debug后

php框架代码审计(上)

1)如果开启了debug,他就会对路由的信息进行记录。

php框架代码审计(上)

2)这边会把请求的参数和URL地址进行参数合并,这边他会调用一次解析过滤器,但是这个过滤器他什么都没写,  所以相当于没有任何过滤。

php框架代码审计(上)
3)刚刚的一部分已先获取了一个字符串

/admin/index/hello

然后把上面的字符串处理成了以下的形式

admin/index/hello

最后他会把去掉'/'的字符串也就是路径会拆分赋值,如下:

$module = admin -->模块
$controller = index -->控制器
$action = hello -->方法

下期,我们将就“路由动态测试”、“思路总结”两大部分与大家继续探讨,并附上小星在研究过程中的意外发现,请大家继续支持!

本文作者:星云博创, 转载请注明来自FreeBuf.COM

php框架代码审计(上)

 【Hacking黑白红】,一线渗透攻防实战交流公众号

php框架代码审计(上)

回复“电子书”获取web渗透、CTF电子书:

回复“视频教程”获取渗透测试视频教程;  

回复“内网书籍”获取内网学习书籍;        

回复“CTF工具”获取渗透、CTF全套工具;

回复“内网渗透;获取内网渗透资料;

回复护网;获取护网学习资料 ;

回复python,获取python视频教程;

回复java,获取Java视频教程;

回复go,获取go视频教程


知识星球





【Hacking藏经阁】知识星球致力于分享技术认知

1、技术方面。主攻渗透测试(web和内网)、CTF比赛、逆向、护网行动等;

400G渗透教学视频、80多本安全类电子书、50个渗透靶场(资料主要来自本人总结、以及学习过程中购买的课程)

2、认知方面。副业经营、人设IP打造,具体点公众号运营、抖*yin等自媒体运营(目前主要在运营两个平台4个号)。


如果你也想像我一样,不想35岁以后被动的去面试,那么加入星球我们一起成长。








php框架代码审计(上)


欢迎加入99米/年,平均每天2毛7分钱,学习网络安全一整年。


php框架代码审计(上)







渗透实战系列


【渗透实战系列】|46-渗透测试:从Web到内网

【渗透实战系列】|45-记一次渗透实战-代码审计到getshell

【渗透实战系列】|44-记一次授权渗透实战(过程曲折,Java getshell)

【渗透实战系列】|43-某次通用型漏洞挖掘思路分享

【渗透实战系列】|42-防范诈骗,记一次帮助粉丝渗透黑入某盘诈骗的实战

【渗透实战系列】|41-记一次色*情app渗透测试

【渗透实战系列】|40-APP渗透测试步骤(环境、代理、抓包挖洞)

▶【渗透实战系列】|39-BC渗透的常见切入点(总结)

【渗透实战系列】|38-对某色情直播渗透

【渗透实战系列】|37-6年级小学生把学校的网站给搞了!

【渗透实战系列】|36-一次bc推广渗透实战

【渗透实战系列】|35-旁站信息泄露的dedecms站点渗透

【渗透实战系列】|34-如何用渗透思路分析网贷诈骗链

【渗透实战系列】|33-App渗透 ,由sql注入、绕过人脸识别、成功登录APP

【渗透实战系列】|32-FOFA寻找漏洞,绕过杀软拿下目标站

【渗透实战系列】|31-记一次对学校的渗透测试

【渗透实战系列】|30-从SQL注入渗透内网(渗透的本质就是信息搜集)

【渗透实战系列】|29-实战|对某勒索APP的Getshell

【渗透实战系列】|28-我是如何拿下BC站的服务器

【渗透实战系列】|27-对钓鱼诈骗网站的渗透测试(成功获取管理员真实IP)

【渗透实战系列】|26一记某cms审计过程(步骤详细)

【渗透实战系列】|25一次从 APP 逆向到 Getshell 的过程

【渗透实战系列】|24-针对CMS的SQL注入漏洞的代码审计思路和方法

【渗透实战系列】|23-某菠菜网站渗透实战

【渗透实战系列】|22-渗透系列之打击彩票站

【渗透实战系列】|21一次理财杀猪盘渗透测试案例

【渗透实战系列】|20-渗透直播网站

【渗透实战系列】|19-杀猪盘渗透测试

【渗透实战系列】|18-手动拿学校站点 得到上万人的信息(漏洞已提交)

【渗透实战系列】|17-巧用fofa对目标网站进行getshell

【渗透实战系列】|16-裸聊APP渗透测试

【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点

【渗透实战系列】|14-对诈骗(杀猪盘)网站的渗透测试

【渗透实战系列】|13-waf绕过拿下赌博网站

【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局

【渗透实战系列】|11 - 赌博站人人得而诛之

【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)

【渗透实战系列】|9-对境外网站开展的一次web渗透测试(非常详细,适合打战练手)

【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)

【渗透实战系列】|7-记一次理财杀猪盘渗透测试案例

【渗透实战系列】|6- BC杀猪盘渗透一条龙

【渗透实战系列】|5-记一次内衣网站渗透测试

【渗透实战系列】|4-看我如何拿下BC站的服务器

【渗透实战系列】|3-一次简单的渗透

【渗透实战系列】|2-记一次后门爆破到提权实战案例

【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

php框架代码审计(上)

    

长按-识别-关注

php框架代码审计(上)

Hacking黑白红

一个专注信息安全技术的学习平台

php框架代码审计(上)

点分享

php框架代码审计(上)

点收藏

php框架代码审计(上)

点点赞

php框架代码审计(上)

点在看

原文始发于微信公众号(Hacking黑白红):php框架代码审计(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月21日08:25:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   php框架代码审计(上)http://cn-sec.com/archives/1362663.html

发表评论

匿名网友 填写信息