题记:昨天休息的时候,一个朋友给我信息说他公司的服务器被黑了,破坏者不停的修改替换主页,搞的他都怕了,查到了那家伙的ip地址,包括身份证号码,家庭住址。报警网警说会处理的,但是一直没人问津。也感叹一下有关部门态度,拿着我们纳税人的养着,却这样给我们服务。有关部门是否也该“市场经济”一把就好了。昨天过去帮他把服务器弄了一下,答应他给他整理一个文档出来的,昨天晚上一想,既然整理了,那就好好整理下,希望此文能给那些想处理好网站的安全而又没钱请专人做的公司以及个人能有点小小的帮助吧。此文为昨天在朋友整理服务器的全程记录,由于考虑到安全的原因,网站目录或者文件名称可能与其网站程序有差异。
本文的宗旨:可能有的人会问,关于Windows系统下的防止webshell的文章那么多,我再写此文简直多此一举,此言差亦。纵观以前大家写的关于windows下的防止webshell的文章,发现了一个小小的bug,那就是没有从源头上制止webshell的执行,就是说webshell可以上传到服务器(有时候是可以跳过默认上传目录的),但是有的还是能把当前站点给黑了的,就是可以将主页给替换了的。此文就是解决这样的一个问题,至于c盘的权限以及组件的删除什么的,以前的一些文章已经写的非常不错了,我在这里也就不再赘述了。
目前流行的通过web入侵的方法:
1、sql注入法:通过sql注入获取一定的后台权限,或者直接通过sql数据库备份一个shell。最早的出现的时间应该是在03年的时候了,通过经典的’or’ ’=’进化而来的。前54nb的小竹写的《sql注入天书》,可算是sql注入的经典,相应推出的nbsi的注入工具也是sql注入工具中的典范了。至今俺还保存着当初推出的beta版到现在的各种修改版。
2、上传法:指的是通过系统提供的web上传功能来直接上传一个shell来获取web控制权限。04年初出现的的,最早出现在dvbbs论坛的上传组建上,其原因是由于windows系统对于文件名的检查的顺序的问题;后来相继又出现了一种就是现在的动易的前身动力文章系统3.6版本,出现的多文件上传过滤不严引起的可以直接上传cer文件的方法。这两种方法应该是上传漏洞鼻祖了。其代表工具有:最早出现的臭要饭的upload工具,还有一个比较经典的就是桂林老兵写的那个,通用性极强。
3、还有一种就是所谓的旁注法了,其方法主要是通过whois工具查找服务器的域名列表,然后通过上述两种方法来获取权限,进而来入侵同一服务器上的目标的,因为其是通过服务器上的其他网站来入侵目标的,因而就称其为旁注了。最早出现的文章应该是B.C.T的老大h4k_b4n写的文章,那时候B.C.T还没有成立呢。
上面了解了下流行的web入侵方法,那下面来看下常用的web的网站系统的一些功能,下面动态的系统和静态的系统来分别说明下。
1、动态的系统:常用的功能有,文章发布,主要是将数据写到数据库中asp常用的主要是access和sql server。文章发布中可以需要一些上传图片的功能。基本目录结构及其所需要的最低的权限如下:
database //为数据库存在目录,可能有的系统的存放目录不一样,这里为了更直观,将其写为database。需要的权限有读取和修改权限,如果有备份数据功能的可能还要有写入的权限。
upload //上传图片的目录,需要有写入和读取的权限,修改权限。
images //系统使用的图片目录,读取权限即可
admin //后台管理目录,一般为asp文件,需要有读取权限。
/根目录,一般存放为asp文件,需要有读取权限。
2、静态页面的系统:指的是一些内容页生成静态页面,而主页和二级页面为动态的系统,现在这种系统居多。主要的功能有,上传图片,生成静态页面,acess数据库的可能还有个数据库备份功能。其基本目录结构如下:
database //为数据库存在目录,可能有的系统的存放目录不一样,这里为了更直观,将其写为database。需要的权限有读取和修改权限,如果有备份数据功能的可能还要有写入的权限。
upload //上传图片的目录,需要有写入和读取的权限。
images //系统使用的图片目录,读取权限即可
admin //后台管理目录,一般为asp文件,需要有读取和执行权限。
/根目录,一般存放为asp文件,需要有读取以及执行权限。
/html//此目录为生成静态页面的目录。需要有读取,修改以,写入权限。此文仅仅讨论生成的后缀为html,htm的情况。也是大部分程序生成的都为这些了。对比动态的多了一个生成静态页面的目录。
下面进入本文的重点:安全的设置。
对于sql注入的防范防范最好的是将所有的客户端提交的进入sql查询的参数全部过滤掉,这个对管理员的要求比较高了,需要懂程序开发才可以搞定的。而有一种比较简单的方法就是使用笔者以前写的一个小工具sql通用防注入系统.可以到我的网站下载:http://www.neeao.com/blog/article-2285.html.
主要说下如何防止上传漏洞的产生,sql注入比较好发现,对于上传的话如果懂的朋友也是可以用工具检测出来的,当然最好的方法就是修改程序,替换上传组件了。但这个相对于sql通用防注入的防范来说比较难了,没有通用的工具了。那么我们可以用服务器上的权限设置来防止破坏者上传或者上传后执行webshell。
1、先按照以前人总结的防止webshell文章给每个站点设置一个单独的账户,在这里,我为了方面说明,姑且假设我设置的web站点的主目录为:d:\web\neeao.com\,添加的iis匿名账户为web_neeao.com,所属组为guests。
2、设置web主目录的权限,删除除了administrators和system两个账户外的所有账户的访问权限,添加web_neeao.com,账户,将其权限设置为读取。并替换子目录下所有目录及文件权限,删除继承上级目录的权限。
3、设置上传目录的权限,我这里按照我上面列出的上传目录为uplaod,将其权限设置为读取及和写入还有修改权限,或许你有一个以上的上传目录,可以同样这样设置。
4、设置数据库目录的权限,我的数据库目录是database,将其权限设置为读取,写入和修改。或许你有一个以上的数据库目录,可以同样这样设置。
5、images目录权限,读取
6、admin目录,读取。
7、html目录,读取,写入。
上面的是针对磁盘的权限的设置,但是这样还是不行的,我们可以看出一些目录还是有写权限的,比如database、upload,以及html目录,如果asp文件传到这些目录的话同样是可以威胁网站安全的。
下面我们来看IIS中的设置:
在IIS管理器中左侧的站点列表中,单击站点前面的+符合,可以看到下面有目录的列表,在database目录上单击鼠标右键,属性,将其脚本执行权限去掉,设置为无。Upload目录和html目录同样这样设置。这里需要注意下database目录设置的时候,可以将其目录设置重定向,防止访问者非法下载access数据库。
至此权限设置结束了,关于权限的设置,我将其总结为一句话就是:能执行就不给写,能写就不给执行。如果按照这样的原则设置的话,基本上通过web上传并执行webshell是基本不可能的了,就我目前所了解的方法来说。
本文的宗旨:可能有的人会问,关于Windows系统下的防止webshell的文章那么多,我再写此文简直多此一举,此言差亦。纵观以前大家写的关于windows下的防止webshell的文章,发现了一个小小的bug,那就是没有从源头上制止webshell的执行,就是说webshell可以上传到服务器(有时候是可以跳过默认上传目录的),但是有的还是能把当前站点给黑了的,就是可以将主页给替换了的。此文就是解决这样的一个问题,至于c盘的权限以及组件的删除什么的,以前的一些文章已经写的非常不错了,我在这里也就不再赘述了。
目前流行的通过web入侵的方法:
1、sql注入法:通过sql注入获取一定的后台权限,或者直接通过sql数据库备份一个shell。最早的出现的时间应该是在03年的时候了,通过经典的’or’ ’=’进化而来的。前54nb的小竹写的《sql注入天书》,可算是sql注入的经典,相应推出的nbsi的注入工具也是sql注入工具中的典范了。至今俺还保存着当初推出的beta版到现在的各种修改版。
2、上传法:指的是通过系统提供的web上传功能来直接上传一个shell来获取web控制权限。04年初出现的的,最早出现在dvbbs论坛的上传组建上,其原因是由于windows系统对于文件名的检查的顺序的问题;后来相继又出现了一种就是现在的动易的前身动力文章系统3.6版本,出现的多文件上传过滤不严引起的可以直接上传cer文件的方法。这两种方法应该是上传漏洞鼻祖了。其代表工具有:最早出现的臭要饭的upload工具,还有一个比较经典的就是桂林老兵写的那个,通用性极强。
3、还有一种就是所谓的旁注法了,其方法主要是通过whois工具查找服务器的域名列表,然后通过上述两种方法来获取权限,进而来入侵同一服务器上的目标的,因为其是通过服务器上的其他网站来入侵目标的,因而就称其为旁注了。最早出现的文章应该是B.C.T的老大h4k_b4n写的文章,那时候B.C.T还没有成立呢。
上面了解了下流行的web入侵方法,那下面来看下常用的web的网站系统的一些功能,下面动态的系统和静态的系统来分别说明下。
1、动态的系统:常用的功能有,文章发布,主要是将数据写到数据库中asp常用的主要是access和sql server。文章发布中可以需要一些上传图片的功能。基本目录结构及其所需要的最低的权限如下:
database //为数据库存在目录,可能有的系统的存放目录不一样,这里为了更直观,将其写为database。需要的权限有读取和修改权限,如果有备份数据功能的可能还要有写入的权限。
upload //上传图片的目录,需要有写入和读取的权限,修改权限。
images //系统使用的图片目录,读取权限即可
admin //后台管理目录,一般为asp文件,需要有读取权限。
/根目录,一般存放为asp文件,需要有读取权限。
2、静态页面的系统:指的是一些内容页生成静态页面,而主页和二级页面为动态的系统,现在这种系统居多。主要的功能有,上传图片,生成静态页面,acess数据库的可能还有个数据库备份功能。其基本目录结构如下:
database //为数据库存在目录,可能有的系统的存放目录不一样,这里为了更直观,将其写为database。需要的权限有读取和修改权限,如果有备份数据功能的可能还要有写入的权限。
upload //上传图片的目录,需要有写入和读取的权限。
images //系统使用的图片目录,读取权限即可
admin //后台管理目录,一般为asp文件,需要有读取和执行权限。
/根目录,一般存放为asp文件,需要有读取以及执行权限。
/html//此目录为生成静态页面的目录。需要有读取,修改以,写入权限。此文仅仅讨论生成的后缀为html,htm的情况。也是大部分程序生成的都为这些了。对比动态的多了一个生成静态页面的目录。
下面进入本文的重点:安全的设置。
对于sql注入的防范防范最好的是将所有的客户端提交的进入sql查询的参数全部过滤掉,这个对管理员的要求比较高了,需要懂程序开发才可以搞定的。而有一种比较简单的方法就是使用笔者以前写的一个小工具sql通用防注入系统.可以到我的网站下载:http://www.neeao.com/blog/article-2285.html.
主要说下如何防止上传漏洞的产生,sql注入比较好发现,对于上传的话如果懂的朋友也是可以用工具检测出来的,当然最好的方法就是修改程序,替换上传组件了。但这个相对于sql通用防注入的防范来说比较难了,没有通用的工具了。那么我们可以用服务器上的权限设置来防止破坏者上传或者上传后执行webshell。
1、先按照以前人总结的防止webshell文章给每个站点设置一个单独的账户,在这里,我为了方面说明,姑且假设我设置的web站点的主目录为:d:\web\neeao.com\,添加的iis匿名账户为web_neeao.com,所属组为guests。
2、设置web主目录的权限,删除除了administrators和system两个账户外的所有账户的访问权限,添加web_neeao.com,账户,将其权限设置为读取。并替换子目录下所有目录及文件权限,删除继承上级目录的权限。
3、设置上传目录的权限,我这里按照我上面列出的上传目录为uplaod,将其权限设置为读取及和写入还有修改权限,或许你有一个以上的上传目录,可以同样这样设置。
4、设置数据库目录的权限,我的数据库目录是database,将其权限设置为读取,写入和修改。或许你有一个以上的数据库目录,可以同样这样设置。
5、images目录权限,读取
6、admin目录,读取。
7、html目录,读取,写入。
上面的是针对磁盘的权限的设置,但是这样还是不行的,我们可以看出一些目录还是有写权限的,比如database、upload,以及html目录,如果asp文件传到这些目录的话同样是可以威胁网站安全的。
下面我们来看IIS中的设置:
在IIS管理器中左侧的站点列表中,单击站点前面的+符合,可以看到下面有目录的列表,在database目录上单击鼠标右键,属性,将其脚本执行权限去掉,设置为无。Upload目录和html目录同样这样设置。这里需要注意下database目录设置的时候,可以将其目录设置重定向,防止访问者非法下载access数据库。
至此权限设置结束了,关于权限的设置,我将其总结为一句话就是:能执行就不给写,能写就不给执行。如果按照这样的原则设置的话,基本上通过web上传并执行webshell是基本不可能的了,就我目前所了解的方法来说。