1、对bluecms进行代码审计,分析复现文件上传、ssti模板注入、文件删除等漏洞
文件上传:
ssti模板注入:
bluecms采⽤了smarty模板引擎
可以在模板中插⼊恶意的代码,从⽽执⾏任意命令。此处可知smarty使⽤的界定符为{#和#},参考smarty官⽅⽂档可知,可以使⽤{#php#}code{#/php#}标签执⾏php代码。
文件删除:
分析user.php⽂件时,发现该接⼝存在权限校验,因此必须具备普通⽤户权限
发现存在如下代码,很容易可以分析出,此处存在⽂件删除漏洞。
2、复习ThinkPHP框架基础知识,重点掌握url传参方式以及获取用户参数的写法
url传参:
ThinkPHP 5.0 在没有启⽤路由的情况下典型的URL访问规则是:http://serverName/index.php(或者其它应⽤⼊⼝⽂件)/模块/控制器/操作/[参数名/参数值...]
。这种⽅式也称为PATH_INFO⽅式,例如:http://serverName/index.php/index/index/hello/val/value
如果环境只能⽀持普通⽅式的URL参数访问,那么必须使⽤兼容模式访问,如下:http://serverName/index.php(或者其它应⽤⼊⼝⽂件)?s=/模块/控制器/操作/[参数名/参数值...]
获取用户参数:
input() 方法,最常用的获取参数的方法,支持自动过滤和默认值设置。
助手函数 request(),可以用来获取当前请求对象,进而调用其提供的各种方法来获取参数。
参数验证,为了确保接收到的数据符合预期,应该使用ThinkPHP内置的验证器来进行参数验证。
3、复习ThinkPHP框架漏洞,重点掌握框架代码执行漏洞及工具使用,了解sql注入漏洞及常见不安全写法
代码执行漏洞:
漏洞原理:代码执行漏洞允许攻击者通过特定的输入或参数,在服务器上执行任意PHP代码。这通常发生在当用户输入被直接或间接地用于构建并执行PHP代码时,例如使用eval()、assert()等函数。
常见不安全写法:
使用 eval() 或类似的函数:如果传入的数据包含用户输入,则可能导致代码执行。
动态调用控制器方法:如果方法名来源于用户输入且未经过严格验证,可能会被执行恶意代码。
反序列化不可信数据:如果应用对来自用户的序列化数据进行反序列化操作,可能触发对象内的魔术方法,从而执行任意代码。
SQL注入漏洞原理:
SQL注入漏洞发生在当用户输入没有被正确验证或转义,并直接嵌入到SQL查询中时,使得攻击者能够操纵SQL语句逻辑。
不安全写法:直接拼接用户输入到SQL语句中$sql = "SELECT * FROM users WHERE username = '" . $_GET['username'] . "' AND password = '" . $_GET['password'] . "'";
4、搭建部署脱单交友平台并审计复现任意文件写入漏洞。
环境搭建:
1.上传源码到⽹站根⽬录并解压
2.创建数据库you并导⼊数据库⽂件到数据库
3.修改数据库链接⽂件:config\database.php
⽂件上传漏洞:
下⾯代码通过input函数接收data参数,类型是数组,然后调⽤base64image函数进⾏处理。
在base64image函数中,直接将上传内容进⾏base64解码后并保存,没有过滤⽂件后缀。
5、预习phar反序列化漏洞及编号申请
反序列化漏洞原理:
当PHP应用对来自用户的PHAR文件进行反序列化操作时,如果这些文件被恶意构造,则可能触发对象内的魔术方法(如__wakeup()或__destruct()),从而导致任意代码执行。这是因为PHAR文件中的元数据可以包含序列化的PHP对象,而反序列化过程中会尝试实例化这些对象。
CVE编号申请流程:
1.确认漏洞:首先确认发现的是一个新的、未公开的安全漏洞。
2.准备详细信息:准备好漏洞的详细描述,包括影响范围、复现步骤、修复建议等。
3.联系厂商:通常应该先私下通知相关软件的开发商或维护者,以便他们有机会发布补丁。
4.申请CVE编号:
如果漏洞的发现者并且希望获得一个CVE编号,可以通过访问CVE Numbering Authorities (CNAs)列表来找到合适的CNA。
一些大型公司和技术社区如Google、Mozilla、Apache基金会等都是CNAs,可以直接向它们申请。
对于个人研究者来说,也可以通过MITRE Corporation直接申请CVE编号,但需要提供足够的信息证明这是一个新的漏洞。
5.提交报告:根据所选CNA的要求填写表格并提交漏洞报告。
6.等待审批:CNA会对申请进行审核,并决定是否分配CVE编号。
7.公开披露:一旦漏洞被修复并且CVE编号已经分配,可以选择公开披露相关信息,帮助其他用户了解并保护自己免受该漏洞的影响。