测试环境:WindowsXP+PHPnow1.6.5+phpwebV2.0.35
在 base/appplus.php 文件中,我们发现一处未过滤的文件上传。但是要利用这处任意文件上传,我们得先绕过第15行的密钥校验。
全局搜索下 md5(strrev($dbUser.$dbPass)) ,看看有没办法将这个值 leak 出来。这里共搜出4处,而 base/post.php 文件中的代码明显和其他不一样,我们看其具体代码。
我们在 base/post.php 文件中,发现当 $act="appcode" 时,程序就会将 md5(strrev($dbUser.$dbPass)) 输出,而 $act 完全可控。
那么攻击步骤就很清晰了。先利用 base/post.php 文件 leak 出 md5(strrev($dbUser.$dbPass)) 的值,然后再利用 base/appplus.php 上传文件即可。 EXP 如下:
已删除
参考