phpok前台任意文件上传getshell(官网已shell)

文章目录

漏洞作者: phith0n

/framework/www/upload_control.php第45行:

调用了upload_base,跟进去看看:

调用了$this->upload来上传文件。继续跟进去看看:

[/crayon]
仔细观察最后两个if语句,第一个是copy,第二个才是判断后缀名。也就是说它先把我上传的任意文件copy到web目录下,再判断了这个文件后缀是否合法。而且判断完毕后并没有删除不合法的文件。

所以我们可以利用这一点来上传任意文件,虽然最后我不知道上传后的文件名,但这个文件名是可以爆破出来的。

文件名命名规则:substr(md5(time().rand(0,9999)),9,16)

取当前时间 和 0-9999之前的随机数的md5值。这个好说,当前时间基本就在发包以后的1~3秒,4位随机数。也就说我只用爆破大概1W到3W次就能找到我上传的文件了。

漏洞证明:

本地构造一个上传单页:

拉一个shell点击上传。中途抓包,查看返回包:

021307106224ec35de7e8d5adf77ef5a4ad84d0e

 

 

可以看到返回包的时间,这个时间基本上就是生成文件名的时候取的time()。
通过返回包里的Date计算出此时的时间戳,也就是重命名时候取的time()值(就算不是,相差也不会太大,一两秒内)

我计算出的时间戳值为1401619111

然后我简单写一个单线程脚本(py需要安装requests库),来跑一下数据包。上传的文件默认放在/res目录下,我们就来爆破一下这个文件名:

因为是本地,所以很快就跑出了shell的地址:

021308438faadcf2a6ea5b0f1f8a7daa1f39e664

 

 

 

访问可见phpinfo:

02130904a26d3f946f90c51a349069acc12f75fb

 

 

原文链接:,转发请注明来源!

发表评论

要发表评论,您必须先登录