当选择中级防御的时候,再像低级防御那样直接上传PHP脚本,发现不给上传了。
那么,作为攻击者,又不知道网站源码是什么,该怎么办?
只能简单分析一下几种情况,分析网站过滤的机制。
比如:(只是猜测)
1.网站开发者,根据文件名后缀来过滤。那么,作为攻击者就可以修改数据包中的文件名来尝试上传。
2.网站开发者根据上传文件的类型来判断,将不符合规定类型的过滤掉。那么,攻击者是不是可以通过修改数据包的文件类型来欺骗,达到上传文件的目的呢?
3.网站开发者根据文件名后缀,文件类型,文件大小(图片文件大小肯定有个范围)进行过滤。那么攻击者该如何思考?
在不知道源码的情况下,只能尝试各种可能,来绕过网站开发者的过滤机制。
由于,修改文件后缀会使得我们的脚本不能正常运行,所以,我就修改了文件类型为image/jpeg,提示上传成功。然后weevely连接上传的后门。
虽然修改了类型就上传成功了,但是一个漏洞里面可以学到的东西太多了。因此,我抓包来比较,为什么jpeg文件上传能成功,原本的php脚本必须得修改类型才能上传成功。
凡事两个包不同的地方,都被标注了出来。那么就是说,只要将数据包做一些修改,就有很大的可能性上传成功。
既然已经成功上传后门,并且连接上去了,那么接下来,就要查看网站开发者的源代码了,来看一下网站开发者到底存在什么失误,使用了什么逻辑,才导致攻击者乘虚而入。
逻辑很简单,就是看你类型是否满足要求,大小是否满足,只要满足这两点,就可以上传。因此,攻击者修改了数据包的文件类型后,就上传成功了。
现在,我将防御等级调成高级防御。然后,我依旧利用这种小方法,修改我的数据包类型,去欺骗他,但是,这时候发现,上传失败了。意思就是说,修改类型这一招对高级防御不管用。
至于为什么不管用,得看高级防御代码是怎么写的。这个后面再解析。但是,现在就有这么一个套路,将一个后门文件追加到正常的图片文件后面,相当于融合到图片文件后面,然后再去上传图片文件。
命令:
cat file1 >> file2 将file1内容追加到file2后面
可是!上传的图片文件无法执行shell的作用。。。就相当于file.php.jpeg这样的文件格式。无法当做php脚本运行。难道这就没用了吗?不,依旧有用。只不过需要相关的命令注入漏洞来利用!
比如说,我这个特殊的图片文件上传成功了,我虽然目前无法使用,但是只要管理员不删除我这个文件,那么这个隐藏的炸弹始终存在,只是差了一个引爆器。什么是引爆器?就是类似命令注入漏洞这样的引爆器,若是又找到了命令注入漏洞,那么就可以利用命令注入来修改我们上传好的PHP脚本,使他成为真正的PHP后门脚本。这样,再利用weevely来远程连接即可。(理论上可行,实际上还需要其他的辅助手段,本人新手,还未接触)
但是,但是防御者有一个非常非常好,还不用进行代码审计的办法。那就是权限设置!只要防御者将上传的文件目录权限,全部改成只读,那么即使上传了脚本又能如何?完全无法运行。不过,估计这样会影响网站的运行。(猜测)
最后,解析一下高级防御漏洞的源代码:
扩展知识:fckeditor 漏洞 对于上传漏洞的一种扩充知识,可以让上传漏洞学得更好。