系统漏洞剖析自然环境:https://github.com/vulnspy/thinkphp-5.1.29与phpstudy php-7.0.12-nts + apache Thinkphp架构中的url浏览是index.php/module/controller/operation,index.php称之为内容文档(pathinfo方式下的pathinfo),兼容模式也可用以传送主要参数/控制模块/控制板/
依据参照连接中的重要编码,追踪系统漏洞原文件/thinkphp/library/think/route/dispatch/Module.php,给出图示:
再次追踪結果数组,给出图示:
发觉启用了父类init涵数,控制模块类承继自抽象类Dispatch,追踪Dispatch给出图示:
观查分辨句子,根据伪自变量this另一半引证rule.php文档,实行doAfter涵数,获得路由器的post实际操作。给出图示:
下列是路由器后实际操作的简略详细介绍。置于大的,你能加上他们。 Thinkphp路由器有几种方式: 1,一般方式(应用默认设置的pathinfo方式url):'url_route_on'=> false 2,混和方式(那样,只必须为必须界定路由器标准的浏览详细地址界定路由器标准,别人依然依照默认设置的PATH_INFO方式浏览URL):'url_route_on'=> true 3,强制性方式(务必界定为可浏览):'url_route_must'=> true'url_route_on'=> true Thinkphp 4.0及左右版本号对新的路由器作用开展了新的提高,适用路由器到控制模块(控制模块/控制板/实际操作),控制板(控制板类/实际操作),类(一切类库),及其此系统漏洞的缘故其一 依据左右叙述,剖析了系统漏洞自然环境编码,选用s自变量获得方式选用系统漏洞。剖析获得相对路径的全过程,给出图示:
首先是明确pathinfo是不是具备兼容模式主要参数。其次剖析pathinfo信息内容,将ORIG_PATH_INFO,REDIRECT_PATH_INFO和REDIRECT_URL分派给自变量$ type。应用网络服务器涵数,自变量$ type将变换为大写并储存在网络服务器中。在数组中,当分派了自变量网络服务器数组时,将回到网络服务器数组,不然回到null,如图所示:
最终,当自变量pathinfo不以空时,$ pathinfo是1个字符串,用以删掉标记前后左右的空白字符。追踪pathinfo涵数并寻找相对路径涵数,如图所示: 照片11.png 追踪相对路径作用并在App.php文档中寻找routeCheck作用,给出图示:
您能够观查到此涵数回到1个Dispatch另一半,并在控制模块文档中回到$ result=$ this-> dispatch,再次追踪Check涵数,给出图示: 照片12.png 返回值是UrlDispatch建立的新另一半,它追踪UrlDispatch类并搜索Url的别称引证,如图所示:
追踪Url类,发觉它承继自抽象类Dispatch,随后在保持该方式时启用magic方式__construct。观查此方式,给出图示: 照片14.png 此方式应用伪自变量this将生产调度另一半分派给$ dispatch,并回到观查Url类,如图所示:
nit方式回到到新另一半Module的init方式,该方式是Module.php中的父: init(),在其中dispatch根据parseUrl涵数分派给$ result,观查parseUrl,给出图示:
自变量控制模块从getConfig涵数获得app_multi_module的值。观查到app_multi_module为true,获得删掉第一位数组的自变量$ path,最终回到包括自变量module,controller和action的包路由器,并将其传送给自变量result。 根据上边的剖析获得自变量結果的結果,当应用explode来分拆字符串时,键入/index/\ think \ request/cache,如下图所示:
根据上边的方式删掉第一位数组,将其分派给module.php中的自变量控制模块,给出图示:
这时,自变量控制模块是数据库索引。再次观查并寻找控制板自变量控制板,如图所示:
这时,自变量控制板是\ think \ request。再次观查姿势名字自变量actionName,如图所示:
这时,自变量actionName是缓存文件,最终进到恳求实际操作,将其追踪到操作工控制板文档,并寻找缓存文件方式,如图所示:
根据独特结构来保持实行phpinfo的实际效果,将自变量键设定为1 | phpinfo,绕过分辨,查询它是不是存有于qq群匿名类中,并传送true===1,进到目录涵数并分派自变量键各自对1和phpinfo很趣味。 (依据php-7.0.12-nts自然环境,目录从右到左分派),便于运作phpinfo涵数。