上次黑海被黑,我才想起对黑海进行一次检测.那天在群里听说黑海被黑了,马上跑去看看,顺便模拟入侵,看了几个页面以后,发现下载页面有问题,提交了一单引号就报错了,连绝对路径都出来了
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\thysea.com\public_html\ymdown\global.php on line 592
接下来开始注入,提交了几个语句后,发现这个地方是做过处理的,还是进行了过滤,不过看出他只单单过滤了select这个单词,而对其他却没有任何限制,这样只要能想办法饶过select这个单词就有机会拿到shell了,我曾试过大小转换的方法,不过没起作用,后来又考虑几天时间,想办法饶过限制,后来有点忙就没再去想如何饶过限制了,不过我相信应该有些牛人能够很轻易的突破限制吧.所以我觉得应该要重新修改下程序来杜绝这个地方的漏洞,偶的方法如下:
1.因为id这个变量是数据型的,所以在过滤这个变量的时候,重要的是要判断他的值是否是整型,其他的话可以继续过滤select这个词和一些特殊符号什么的了(不过既然是判断值是否是整型了,那这些也就多余了)
2.为了再加固防线,对所有变量值进行长度检查,指定其长度最多为5或者6,这样的话,即使再有问题,他注入语句的长度也还是个阻碍吧.
3.既然是php+mysql程序,那么对mysql权限进行严格的限制,如允许什么样的权限进行什么数据库样的操作,不允许进行什么样的数据库操作,这部分的具体方案我就不好具体给出了,因为我学mysql也没多久,还没去研究那方面的问题,不过有时间我会好好研究下的.
4.php的数据库连接文件的权限设置,里面的数据库连接帐号都在里面,权限设置成最高,这样就不会被一些方法给读出他的内容了.
5.不允许mysql进行管理,只能进行本地管理.
6.如果采用phpmyadmin进行管理的话,phpmyadmin这个目录也要设置好,这方面我没弄过,只是听说phpmyadmin设置的不好,很容易被利用.
7.把所有默认的错误页面和禁止访问页面,什么系统里的http信息页面全部替换成一个出错页面,这样可以很大程度上防范扫描软件了.
8.禁止后台等一些敏感页面被其他ip访问,只允许本地ip或者一个小的ip段进行访问(这个用处不是很大,很多时候挂马其实可以不需要进后台).
以上是随便写的,还有其他的一些策略没想起来,想起来再补充. |