PHP 代码审计基础(思维导图、审计代码关键字)

admin 2022年4月27日11:45:56评论82 views字数 4774阅读15分54秒阅读模式


0x00 Preface


大多数漏洞都是由 [可控变量]+[特定功能] 产生的(对于用户可传入的变量缺少过滤或过滤不严)。比如SQL注入,我们通过闭合、注释等方式插入payload以获取敏感数据。比如文件上传,我们写入一句话木马以获得web权限。这样的例子数不胜数,同时也给我们提供了一个思路,在我们进行代码审计时,可以根据特定功能,查看是否存在可控变量,可控变量是否存在过滤,过滤是否存在绕过,从而检验是否存在漏洞。


渗透测试分为黑盒测试和白盒测试,黑盒测试仅给出门户网站,白盒测试不仅会给出网站,还会给出项目源码。黑盒测试时,我们只能正常的访问该网站,通常只能从网站的业务逻辑出发,对网站上存在的功能点逐个抓包,然后验证其是否存在漏洞。当然,也可以判断网站是否采用了cms,搜索cms爆出过的安全漏洞,查看是否能够利用。白盒测试时,我们不仅能够正常访问该网站,还可以对网站进行代码审计。因此,我们既可以效仿黑盒测试,根据功能点,抓包查找到对应的代码进行分析(黑盒测试只能抓包测试,无法分析代码),也可以直接在项目源码中搜索select、$_FILE、eval等关键字,对附近代码进行分析。


总的来说,黑盒测试更加贴近于黑客攻击时的情形,而白盒测试则更易发现安全问题。


PHP 代码审计基础(思维导图、审计代码关键字)



0x01 MVC 框架


MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。PHP中MVC模式也称Web MVC,是从上世纪70年代进化而来。


MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。


MVC各部分的职能:


  • 模型Model – 管理大部分的业务逻辑和所有的数据库逻辑,模型提供了连接和操作数据库的抽象层。

  • 控制器Controller - 负责响应用户请求、准备数据,以及决定如何展示数据。

  • 视图View – 负责渲染数据,通过HTML方式呈现给用户。


一个典型的Web MVC流程:


  • Controller截获用户发出的请求

  • Controller调用Model完成状态的读写操作

  • Controller把数据传递给View

  • View渲染最终结果并呈献给用户


PHP 代码审计基础(思维导图、审计代码关键字)

MVC框架的好处有:


1、允许更改视图层代码而不用重新编译模型和控制器代码;2、允许使用各种不同样式的视图来访问同一个服务器端的代码;3、使降低开发和维护用户接口的技术含量成为可能;4、使开发时间得到相当大的缩减等。



其实可以把MVC理解为一个规则,这么多网站,纷繁杂乱,如果大家都遵循这个规则,那么网站将变得更加容易管理和维护。此外,也可以把它理解为一个模板,增强了复用性,能够大量减少开发的工作量。同时,它将复杂的底层细节封装了起来(类与对象),使得网站的各个模块相对更加独立,不仅使得维护用户接口更加方便,而且使开发时间得到了相当大的缩减(开发人员集中精力于业务逻辑,界面程序员集中精力于表现形式)。


我们要探讨的是代码审计,与MVC框架又有什么关系呢?MVC框架有其特有的目录结构和路由规则,它与未使用该框架的网站不同,URL路径并不对应其代码文件所在位置。所以在白盒测试中,了解MVC框架有助于我们更加快速、准确地定位到网页功能点所对应的代码段,后面会有相关演示。


0x02 ThinkPHP 框架


Thinkphp框架就是MVC框架的一种,如果说MVC框架是类的话,Thinkphp框架就是其实例化后的对象。


ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。


Thinkphp教程资源:http://sites.thinkphp.cn/1556331


PHP 代码审计基础(思维导图、审计代码关键字)


Hsycms是由ThinkPHP5.0框架开发的企业网站管理系统,

Hsycms下载地址:https://www.hsycms.com/


访问官方部署好的在线网站,选中产品中心模块,随便选取一个产品介绍,查看其路径:


PHP 代码审计基础(思维导图、审计代码关键字)


但是项目中并没有product文件,这也证实了前面我们所说的,TP采用的是MVC框架,有其特有的路由规则(TP官方文档中有详细介绍,前面已给出TP教程资源链接)。


首先查看入口文件:


PHP 代码审计基础(思维导图、审计代码关键字)


接着查看路由规则:


PHP 代码审计基础(思维导图、审计代码关键字)


index/Show/index通常指module、controller、function:


PHP 代码审计基础(思维导图、审计代码关键字)


仔细将下图与前面图中的URL进行对比,index.php在这里只是可以省略罢了,加上它仍然可以正常访问,它所代表的正是前面所说的module:index,由于路由规则的设置,/product/195.html并不是controller和function,但也有网站是直接用/module/controller/function路由的(也有通过传参实现路由的,但其本质没有区别),module通常都是index.php。


PHP 代码审计基础(思维导图、审计代码关键字)


0x03 Summary


漏洞关键字(特定功能):


SQL 注入:

select、insert、update、mysql_query、mysqli 等

文件上传:

$_FILES、type=“file”、上传、move_uploaded_file()等

XSS 跨站:

print、print_r、echo、sprintf、die、var_dump、var_export 等

文件包含:

include、include_once、require、require_once 等

代码执行:

eval、assert、preg_replace、call_user_func、call_user_func_array 等

命令执行:

system、exec、shell_exec、``、passthru、pcntl_exec、popen、proc_open 等

变量覆盖:

extract、parse_str、import_request_variables()、$$ 等

反序列化:

serialize、unserialize、__construct 、__destruct 等

其他漏洞:

unlink、file_get_contents、show_source、file、fopen 等

通用关键字(可控变量):


$_GET、$_POST、$_REQUEST、$_FILES、$_SERVER


0x04 Reference


php MVC框架实例教程


https://www.cnblogs.com/wsybky/p/8638876.html


mvc框架的好处有哪些


https://www.php.cn/faq/457315.html


————————————————

作者:CSDN博主「iO快到碗里来」

原文链接:https://blog.csdn.net/qq_45927266/article/details/121501353


【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 代码审计基础(思维导图、审计代码关键字)




渗透实战系列


【渗透实战系列】|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年4月27日11:45:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP 代码审计基础(思维导图、审计代码关键字)https://cn-sec.com/archives/943511.html

发表评论

匿名网友 填写信息