由服务器IP判断说起的攻防——站长安全顾问系列话题一

简介: 来自黑客防线 前两天有个自己买服务器建站的朋友遇到了麻烦,找我帮忙处理些问题。在整个过程中我感觉有些实用的价值,于是发出来和广大服务器管理员朋友们一起讨论讨论,也希望各位朋友将自己遇到的问题发表出来,一起讨论。

来自黑客防线 

前两天有个自己买服务器建站的朋友遇到了麻烦,找我帮忙处理些问题。在整个过程中我感觉有些实用的价值,于是发出来和广大服务器管理员朋友们一起讨论讨论,也希望各位朋友将自己遇到的问题发表出来,一起讨论。

该朋友的服务器脚本系统是自己写的,又有电子商务的支付平台,所以在针对安全方面,他花了些力气,做了一些防护,大体是这样的:
脚本攻击寻常的手段有三个:
第一是利用注入,找到管理员密码,然后登陆后台,再通过修改上传格式的方式,获得webshell,进而考虑提权,获得服务器控制权限。
第二是通过下载数据之类的办法,找管理员帐户,再登陆、修改、上传、提权。
第三是直接找上传漏洞,跳过注入、后台获取这一步,直接拿到webshell。


针对这三个方面,朋友的应对策略是这样的:
针对第一种攻击:卡死注入!方法当然大同小异:代码审核、防注入系统。这是常见手法。
针对第二种攻击:使用SQL数据库,不在web目录,当然下载数据库是没有办法的。也是常见手法。
针对第三种攻击:严格审计上传。网站设置成可以上传,但是上传文件类型有限制,IIS解析也只解析正常文件类型,最后再给上传目录做一个不能让脚本运行的权限,简单搞定。也不希奇。


或许很多服务器管理员会说:这些我们都做了,但是不排除出现特殊情况,比如脚本系统的注入0day,当遇到这样的情况的时候,以上三点防护可能就没有用了,这时候我们该如何应对?——正好,这个朋友就遇到了这样的问题。不知道为什么,他的系统在防护后,还是被注入了。搞他站的人,也不做破坏,更不动他的支付平台,就时不时的登陆一下他的管理后台,写上一句“某某到此一游……”,人都能气死。
遇到这个情况以后,朋友修改了自己的系统,除了做更加严格的防御外没有别的办法,所以才找上我。

知道这个事后,我也没认真问情况,随手丢了一套IP判断的脚本给他。这套脚本的功能主要是用来判断来访IP,同时对提前定义的信任IP进行比对审核,如果来访IP是信任IP,则正常打开,如果不是则跳转到其他页面。
程序大体是这样的:
number.inc文件内容:
<!--#include file="ip.inc"-->
<%
        sip1=split(ip1,".")
        num1=cint(sip1(0))*256*256*256+cint(sip1(1))*256*256+cint(sip1(2))*256+cint(sip1(3))-1
        sip2=split(ip2,".")
        num2=cint(sip2(0))*256*256*256+cint(sip2(1))*256*256+cint(sip2(2))*256+cint(sip2(3))-1
        sip3=split(ip3,".")
        num3=cint(sip3(0))*256*256*256+cint(sip3(1))*256*256+cint(sip3(2))*256+cint(sip3(3))-1
        sip4=split(ip4,".")
        num4=cint(sip4(0))*256*256*256+cint(sip4(1))*256*256+cint(sip4(2))*256+cint(sip4(3))-1
        sip5=split(ip5,".")
        num5=cint(sip5(0))*256*256*256+cint(sip5(1))*256*256+cint(sip5(2))*256+cint(sip5(3))-1
        sip6=split(ip6,".")
        num6=cint(sip6(0))*256*256*256+cint(sip6(1))*256*256+cint(sip6(2))*256+cint(sip6(3))-1
        sip7=split(ip7,".")
        num7=cint(sip7(0))*256*256*256+cint(sip7(1))*256*256+cint(sip7(2))*256+cint(sip7(3))-1
        sip8=split(ip8,".")
        num8=cint(sip8(0))*256*256*256+cint(sip8(1))*256*256+cint(sip8(2))*256+cint(sip8(3))-1
%>

banip.inc文件内容:
<!--#include file="number.inc"-->
<%
        ip=request.servervariables("remote_addr")
        sip=split(ip,".")
        num=cint(sip(0))*256*256*256+cint(sip(1))*256*256+cint(sip(2))*256+cint(sip(3))-1
        if  ((num=num1) or (num=num2) or (num=num3) or (num=num4) or (num=num5) or (num=num6) or (num=num7) or (num=num8) or (num=num9)) then
        else
        response.redirect "http://www.hacker.com.cn/"
        end if
%>

ip.inc文件内容:
<%
ip1="*.*.*.*"
ip2="*.*.*.*"
ip3="*.*.*.*"
ip4="*.*.*.*"
ip5="*.*.*.*"
ip6="*.*.*.*"
ip7="*.*.*.*"
ip8="*.*.*.*"
ip9="*.*.*.*"
ip10="*.*.*.*"
%>

其中IP.inc文件中可定义信任IP,定义好了,再在需要IP审核的页面,调用此系统就可以。效果是如果不是信任IP,则跳转到我们提前定义的页面。

安稳了几天,这个朋友又来找我,说再次被搞了,而且通过日志和相关痕迹,很确定依然是通过后台进来,又写上了“某某到此一游……”。听到这个我倒是很开心,毕竟这套系统不是那么好突破的,突破了就说明挺强——根据以前测试的结果,这套系统除了通过修改数据包,进行IP欺骗以外,没有别的办法可以突破。
模拟一下入侵的过程:
入侵者利用原来的系统里的记录,找到至少一个信任IP(数据库、日志等地方都可能泄露admin的ip),然后打开后台管理页面,用数据包修改工具,直接修改数据包头,让服务器的脚本判断失误,认为入侵者来自信任IP,从而正常登陆后台,潇洒的留言后走人……
挺好,这个入侵者很有意思,技术也不错,至少资料收集、注入、抓包、上传是没得说。
我来了兴趣,连上了朋友服务器,用bak的脚本文件恢复成干净状态,然后取消了IP判断系统,用了一下IIS设置——其实有一个方式是大家忽略的,很简单,却很实用,那就是IIS的访问控制策略。
我们可以设置后台只允许某一个、几个IP访问,非授权IP是没有使用后台的权限的,这样不管怎么注入,不管拿到了多么高级的后台帐户和密码,注入都将一无用处!而这个方法,是IIS层面上的,不是脚本上的,安全性要高得多。
抓几个简单的图,IIS的访问控制列表设置在这里:



相信这几步大家肯定都能看明白,只是平时有可能忽略了而已。设置上这个以后,该服务器直到现在都是安稳的,看来起了一点点效果。

好了,整体过程就是这样,抛出的砖头是:第一次我用的IP判断脚本系统,有没有其他办法可以突破?第二次我用的IIS的IP判断系统,能不能突破?怎么突破?

希望有思路或者经历过的朋友,都来参与讨论一下,引来几个玉,让我们也提升一把!=。=

目录
相关文章
|
4月前
|
安全 Ubuntu 应用服务中间件
Web服务器安全最佳实践
【8月更文第28天】随着互联网的发展,Web服务器成为了企业和组织的重要组成部分。然而,这也使得它们成为黑客和恶意软件的目标。为了确保数据的安全性和系统的稳定性,采取适当的安全措施至关重要。本文将探讨一系列保护Web服务器的最佳策略和技术,并提供一些实用的代码示例。
337 1
|
20天前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
25 2
|
18天前
|
安全 Linux API
Linux服务器安全
人们常误认为服务器因存于数据中心且数据持续使用而无需加密。然而,当驱动器需维修或处理时,加密显得尤为重要,以防止数据泄露。Linux虽有dm-crypt和LUKS等内置加密技术,但在集中管理、根卷加密及合规性等方面仍存不足。企业应选择具备强大验证、简单加密擦除及集中管理等功能的解决方案,以弥补这些缺口。
20 0
|
2月前
|
SQL 安全 网络安全
守护数字资产:服务器迁移期间的安全挑战与对策
【10月更文挑战第4天】在数字化转型的浪潮中,服务器迁移成为企业不可避免的任务。然而,迁移过程中的安全挑战不容忽视。本文从安全考量的角度,探讨了服务器迁移期间可能遇到的安全问题,并提供了相应的对策和代码示例。
82 3
|
5月前
|
存储 监控 安全
服务器安全:构建数字时代的坚固堡垒
在数字化时代,服务器安全至关重要,它直接影响企业业务连续性和客户数据保护。服务器遭受攻击或数据泄露将给企业带来巨大损失。服务器面临网络攻击、恶意软件、内部与物理威胁。关键防护措施包括严格访问控制、数据加密与备份、安全审计与监控、部署防火墙和入侵检测系统、及时安全更新及物理安全防护。最佳实践涵盖制定全面安全策略、采用先进技术、员工培训、定期安全评估与测试及建立应急响应团队。通过这些措施,企业能构建坚实的服务器安全防护体系。
277 55
|
2月前
|
域名解析 弹性计算 安全
无法ping通ECS服务器公网IP的排查方法
无法ping通ECS服务器公网IP的排查方法
|
4月前
|
云安全 弹性计算 安全
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题,阿里云服务器不仅提供了一些基础防护,我们也可以选择其他的云安全类产品来确保我们云服务器的安全。本文为大家介绍一下阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品。
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
|
5月前
|
弹性计算 运维 数据安全/隐私保护
云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
4月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
45 0
|
4月前
|
Rust 安全 Java
Rust语言在Web后端的应用:基于Actix-web构建高性能、安全可靠的服务器实践
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的无限潜力。
179 0