一次针对PHP项目的代码审计

admin 2024年8月31日21:49:51评论25 views字数 907阅读3分1秒阅读模式

免责申明

本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。

一、前言

    最近搞代码审计培训许多学员都出货了,我们来看看其中一个学员的一个案例:某项目的一个权限绕过漏洞。

二、审计漏洞权限绕过

先来查看一下相关代码,可以很明显的看出来这个是基于ThinkPHP来进行开发的一个源码

一次针对PHP项目的代码审计

针对TP开发的网站,我们知道是运行在Public目录下的,并且我们可以看出来这套源码的入口文件为index.php文件,我们先来分析一下其中的网站登录逻辑。

一次针对PHP项目的代码审计

这里网站为我自己的VPS,我们可以根据路径来找到对应的文件。

一次针对PHP项目的代码审计

可以看到就是上图当中对应的方法,其中要根据TP框架的路由来进行寻找

TP的路由一般为http://网址/index.php/分组/控制器/操作方法

一次针对PHP项目的代码审计

我们可以看到接受用户传递过来的username以及password参数,并且进行调用了UserModel类当中的login方法,跟入login方法来查看。

一次针对PHP项目的代码审计

在这里进行将username进行SQL查询,查询出来的password与用户输入的sha1加密之后的password密码进行验证,成功的话返回对应信息,否则无法登录,我们回到刚才的代码中。

一次针对PHP项目的代码审计

可以看到传递到了方法createToken方法当中,继续跟入查看。

一次针对PHP项目的代码审计

可以看到对应进行了JWT处理,并且JWT当中的信息也只有我们的username信息,所以我们如果拿到了对应的JWT密钥是可以进行任意用户登录的,继续跟入。

一次针对PHP项目的代码审计

我们发现了jwt硬编码的漏洞,那么利用这个jwt是可以进行任意用户伪造的,我们先来正常登录对应的超级管理员查看对应的jwt信息。

一次针对PHP项目的代码审计

一次针对PHP项目的代码审计

ok看样子我们是可以伪造的,接下来来进行漏洞利用。

三、漏洞利用

    打开对应的目标网站(我自己的服务器)

一次针对PHP项目的代码审计

随便进行输入,并且抓包修改返回包的JWT即可(因为超级管理员是默认创建的,并非install进行创建,所以默认都是存在这个管理员的),本地拿到对应的jwt然后进行替换目标的jwt即可。

一次针对PHP项目的代码审计

直接进行替换

一次针对PHP项目的代码审计

一次针对PHP项目的代码审计

OK成功登录!

四、完结!

一次针对PHP项目的代码审计

原文始发于微信公众号(进击安全):一次针对PHP项目的代码审计

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月31日21:49:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次针对PHP项目的代码审计https://cn-sec.com/archives/3116773.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息