| 端口号 | 服务/协议简要说明 | 常见攻击手法 |
|------------------|------------------------------------------------------|--------------------------------------------------|
| TCP/20, 21 | FTP(默认的数据和命令传输端口,用于文件传输) | 匿名访问、留后门、暴力破解、嗅探、提权等 |
| TCP/22 | SSH(Linux系统远程登录,文件传输,SSL加密传输) | 弱口令暴力破解获得Linux系统远程登录权限 |
| TCP/23 | Telnet(明文传输) | 弱口令暴力破解、明文嗅探 |
| TCP/25 | SMTP(简单邮件传输协议) | 枚举邮箱用户、邮件伪造 |
| UDP/53 | DNS(域名解析) | DNS劫持、传输漏洞 |
| UDP/69 | TFTP(简单文件传输协议) | 文件下载 |
| TCP/80, 443, 8080| Web(常用Web服务端口) | Web服务漏洞 |
| TCP/110 | POP3(邮件接收协议) | 弱口令暴力破解、明文嗅探 |
| TCP/137, 139, 445| Samba(文件共享) | MS08-067、MS17-010、弱口令暴力破解 |
| TCP/143 | IMAP(邮件接收协议,可明文或加密传输) | 暴力破解 |
| UDP/161 | SNMP(明文传输) | 暴力破解、弱密码 |
| TCP/389 | LDAP(轻型目录访问协议) | LDAP注入、匿名访问、弱口令 |
| TCP/512, 513, 514| Linux rexec | 暴力破解、rlogin漏洞 |
| TCP/873 | rsync(备份服务) | 匿名访问、上传漏洞 |
| TCP/1194 | OpenVPN | VPN账号暴力破解 |
| TCP/1352 | Lotus Domino(邮件服务) | 弱口令、信息泄露、暴力破解 |
| TCP/1433 | MSSQL数据库 | 注入、弱口令、暴力破解 |
| TCP/1500 | ISPManager主机控制面板 | 弱口令 |
| TCP/1521 | Oracle数据库 | 暴力破解、注入 |
| TCP/2049 | NFS(网络文件系统) | 权限配置不当 |
| TCP/1723 | PPTP(VPN协议) | 暴力破解 |
| TCP/2082, 2083 | cPanel主机管理面板 | 弱口令 |
| TCP/2181 | ZooKeeper | 未授权访问 |
| TCP/2601, 2604 | Zebra路由 | 弱口令 |
| TCP/3128 | Squid代理服务 | 弱口令 |
| TCP/3306 | MySQL数据库 | 注入、暴力破解 |
| TCP/3389 | Windows RDP远程桌面 | 后门、暴力破解、MS12-020漏洞 |
| TCP/4848 | GlassFish控制台 | 弱口令 |
| TCP/4899 | Radmin(远程桌面管理工具) | 获取其保存的密码 |
| TCP/5000 | Sybase DB2数据库 | 暴力破解、弱口令 |
| TCP/5432 | PostgreSQL数据库 | 暴力破解、弱口令 |
| TCP/5632 | PcAnywhere(远程控制软件) | 代码执行 |
端口号 端□服务/协议的简要说明 常见攻击手法 TCP/7001、 7002 WebLogic控制台 Java反序列化。弱□令 TCP7778 Kloxo 面板登录 TCP8000 Ajendi主机控村面板 弱口令 TCP:8443 Plesk主机控制面板 弱口令 TCP/8069 Zabbix 远程执行。SQL注入 TCP:8080~-8089 Jenkins, Jboss 反序列化、弱口令 TCP9080. 9081. 900 Web5phere控制台 Java反序列化、弱口令 TCP9200. 9300 Elaticsearch 远程执行 TC/0000 Webmin Linux系统管理工 弱口令 TCP/1211 Memcahd 高速缓存系统 未授权访间 TCP27017、27018 MongoDB 暴力破解、未授权访问 TCP73690 SVN服务 SVN泄露,未授权访问 TCP/50000 SAP Mangcnent Console 远程执行 TCP:5070. 50030 Hadoop 未授权访问
端口号 端□服务/协议的简要说明 常见攻击手法 FTP(默认的数据和命令传输 匿名访问、 留后门、暴力破 TCP20.21 端口, 进行文件传输) 解、嗅探、提权等 ssH(Linux系统选程登录,文 弱□令暴力破解获得Linux系 TCP/22 件传 输,SSL.加密传输 统远程登录权限
端☐号 端☐服务/协议的简要说明 常见攻击手法
TCP/23 Telnet (明文传输) 弱☐令暴力破解。明文鸣探
TCP/25 SMTP (简单邮件传输协议) 枚举邮箱用户。邮什仍造
UDP/53 DNS (域名解析) DNS劫持。城传选漏洞
UDP69 TFTP (简单文件传输协议) 文件下载
TCP80. 443. 8080 等 Wdb (常用Web服务端☐) Wab服H务
TCP/10 POP都局协议 弱☐令暴力破解。明文嗅探
TCP137. 139. 445 Samba (Windows系统和Linux 系统 间文件共享) MS08-067. MS17-010, 驯☐令暴力破解等
TCP/143 IMAP(可明文可重文) 暴力破解
UDP161 SNMP(明文) 暴力破解,弱密码
TCP389 LDAP (轻型日录访问协议) Ldap注入。匿名访问。翼☐令
TCP512. 513. 514 Linas rcucc 暴力破解。rlogin豆录
TCP873 ryue备份服务 匿名访问。上传
TCP/1194 OpenVPN VPN账号屏力破解
TCP/1352 Lotus Donino邮件服务 弱☐令。信息泄露。星力破解
TCP/1433 MSSQL数据库 注入。弱☐令。暴力破解
TCP1500 ISPMungor主机控制面板 弱☐令
TCP1521 Oade数据库E 暴力破解,注入
TCm025. .2049 NPS 权限配置不当
TCP/1723 PPTP 暴力破解
TCP2082. 2083 cPanel主机管理面板登录 弱☐令
TCP2181 ZooKeeper 未授权访问
TCP2601. 2604 Zcba路由 弱☐令
TCP3128 Squid代服务 弱☐令
TCP3312. 3311 Kngle主机管理企录 弱☐4
TCP3306 MySQL数据库 往入。暴力破解
TC/3389 Windows RDP远程桌面 Shif 后门、 暴力破解,ms12020
TCP4848 GlasFsh控制台 弱☐令
TCP4899 Radnin 远程桌面管理工具 可获取其保存的密码
TCP:5000 SybueDB2数据库 暴力破解。弱☐令
TCP5432 PopreSQL数据车 暴力破解。翼☐令
TCP5632 PcAny-hce远程控制软件 代码执行
TCP5900. 5901. 5902 VNC远程桌面管理工具 暴力破解
TCP5984 CouchDB 未授权
TCP6379 Redis存储系统 未授权访问、暴力破解
在 Windows 7 环境下,由于没有内置的 tar 命令或 PowerShell 的 Compress-Archive,通常需要借助工具如 7-Zip 来实现打包和备份操作。以下提供适合 Windows 7 的解决方案。


---

方案一:使用 7-Zip 打包备份目录

1. 确保已安装 7-Zip

下载并安装 7-Zip,并将安装目录(如 C:\Program Files\7-Zip\)添加到系统的环境变量 PATH 中,或者直接调用 7-Zip 的完整路径。

2. 基本命令

压缩一个目录为 .7z 文件:

"C:\Program Files\7-Zip\7z.exe" a backup.7z C:\example\folder

3. 递归压缩所有文件

确保包含子目录中的所有文件:

"C:\Program Files\7-Zip\7z.exe" a -r backup.7z C:\example\folder\*

4. 压缩时添加日期时间戳

在文件名中添加日期时间戳,方便管理备份:

for /f "tokens=2-4 delims=/ " %a in ('date /t') do set datestr=%a-%b-%c
for /f "tokens=1-2 delims=: " %a in ('time /t') do set timestr=%a-%b
"C:\Program Files\7-Zip\7z.exe" a backup_%datestr%_%timestr%.7z C:\example\folder

5. 加密压缩

如果需要加密压缩:

"C:\Program Files\7-Zip\7z.exe" a -pYourPassword -mhe backup.7z C:\example\folder

说明:

-pYourPassword:设置密码。

-mhe:隐藏压缩包中的文件名。



---

方案二:使用内置命令创建备份副本

如果不需要压缩,只需复制整个目录作为备份:

xcopy C:\example\folder D:\backup\folder /E /I /Y

说明:

/E:复制所有子目录,包括空目录。

/I:如果目标不存在,将其创建为目录。

/Y:自动覆盖已有文件。



---

方案三:结合批处理实现自动化备份

创建一个批处理脚本(如 backup.bat),内容如下:

示例脚本:7-Zip 备份

@echo off
:: 设置日期时间
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set datestr=%%a-%%b-%%c
for /f "tokens=1-2 delims=: " %%a in ('time /t') do set timestr=%%a-%%b

:: 目标目录和压缩包路径
set source=C:\example\folder
set destination=D:\backup\backup_%%datestr%%_%%timestr%%.7z

:: 打包目录
"C:\Program Files\7-Zip\7z.exe" a -r "%destination%" "%source%"

:: 显示完成信息
echo Backup completed: %destination%
pause

运行方法:

1. 将脚本保存为 backup.bat。


2. 双击运行或通过任务计划程序设置定时执行。




---

方案四:手动下载并使用 tar

如果需要 tar 功能,可下载 GnuWin32 的 tar 工具,安装后使用如下命令:

tar -cf backup.tar C:\example\folder


---

自动化定时任务

结合 Windows 任务计划程序,设置每日/每周自动运行备份脚本:

1. 打开 任务计划程序。


2. 创建一个新任务,设置触发器(如每天 12:00)。


3. 在操作中选择 启动程序,指向你的 backup.bat 文件。


4. 保存任务,即可实现自动备份。




---

总结

推荐工具:7-Zip(支持压缩、加密,功能强大)。

如果只需简单复制,可用 xcopy。

结合批处理和任务计划程序,可实现自动化备份解决方案。
在加密中使用动态 IV(初始化向量)是更安全的实践。动态 IV 的生成方式通常是随机生成,并与加密的密文一起存储或传输,这样在解密时可以还原原始数据。

以下是支持动态 IV 的 PHP 和 Python 示例代码。


---

PHP 示例代码

<?php
function aesEncryptWithDynamicIV($data, $key) {
$iv = random_bytes(16); // 动态生成随机IV
$paddedData = pkcs7Pad($data, 16);
$encryptedData = openssl_encrypt($paddedData, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $encryptedData); // IV 和密文拼接后返回
}

function aesDecryptWithDynamicIV($encryptedData, $key) {
$decodedData = base64_decode($encryptedData);
$iv = substr($decodedData, 0, 16); // 提取前16字节作为IV
$encryptedData = substr($decodedData, 16); // 提取剩余部分作为密文
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return pkcs7Unpad($decryptedData);
}

function pkcs7Pad($data, $blockSize) {
$padLength = $blockSize - (strlen($data) % $blockSize);
return $data . str_repeat(chr($padLength), $padLength);
}

function pkcs7Unpad($data) {
$padLength = ord(substr($data, -1));
return substr($data, 0, -$padLength);
}

// 示例使用
$key = "1234567890abcdef"; // 16字节密钥
$data = "Hello, AES CBC!";

$encrypted = aesEncryptWithDynamicIV($data, $key);
echo "加密后的数据: " . $encrypted . PHP_EOL;

$decrypted = aesDecryptWithDynamicIV($encrypted, $key);
echo "解密后的数据: " . $decrypted . PHP_EOL;
?>


---

Python 示例代码

from Crypto.Cipher import AES
import base64
import os

def pkcs7_pad(data, block_size):
pad_length = block_size - len(data) % block_size
return data + chr(pad_length).encode() * pad_length

def pkcs7_unpad(data):
pad_length = data[-1]
return data[:-pad_length]

def aes_encrypt_with_dynamic_iv(data, key):
iv = os.urandom(16) # 动态生成随机IV
cipher = AES.new(key, AES.MODE_CBC, iv)
padded_data = pkcs7_pad(data.encode(), AES.block_size)
encrypted_data = cipher.encrypt(padded_data)
return base64.b64encode(iv + encrypted_data).decode() # IV 和密文拼接后返回

def aes_decrypt_with_dynamic_iv(encrypted_data, key):
decoded_data = base64.b64decode(encrypted_data)
iv = decoded_data[:16] # 提取前16字节作为IV
encrypted_data = decoded_data[16:] # 提取剩余部分作为密文
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(encrypted_data)
return pkcs7_unpad(decrypted_data).decode()

# 示例使用
key = b"1234567890abcdef" # 16字节密钥
data = "Hello, AES CBC!"

encrypted = aes_encrypt_with_dynamic_iv(data, key)
print("加密后的数据:", encrypted)

decrypted = aes_decrypt_with_dynamic_iv(encrypted, key)
print("解密后的数据:", decrypted)


---

动态 IV 的关键点

1. IV 的生成:通过 random_bytes (PHP) 或 os.urandom (Python) 随机生成。


2. IV 的存储或传输:将 IV 拼接在密文前(或通过其他方式存储),以便在解密时使用。


3. 安全性提升:动态 IV 避免了使用固定 IV 时的加密模式分析风险。



输出示例

加密后的数据会随 IV 的变化而变化,但解密后原始数据保持不变。
<?php
/**
* EncryptUtil 对称加密 (AES/CBC/PKCS5Padding)
* @author
*/
class EncryptUtil {
/**
* encrypt AES-CBC 加密
* @param string $originalData 要加密的数据
* @param string $secretKey 加密的秘钥
* @return string 加密后的数据 (IV + 密文,十六进制表示)
*/
public static function encrypt($originalData, $secretKey) {
$secretKey = self::_sha1prng($secretKey); // 处理秘钥
$iv = openssl_random_pseudo_bytes(16); // 随机生成 16 字节的 IV
$data = openssl_encrypt($originalData, 'AES-128-CBC', $secretKey, OPENSSL_RAW_DATA, $iv);
$encryptedData = strtoupper(bin2hex($iv . $data)); // 将 IV 和密文拼接,并转换为十六进制
return $encryptedData;
}

/**
* decrypt AES-CBC 解密
* @param string $encryptedData 要解密的数据 (IV + 密文,十六进制表示)
* @param string $secretKey 加密的秘钥
* @return string 解密后的数据
*/
public static function decrypt($encryptedData, $secretKey) {
$secretKey = self::_sha1prng($secretKey); // 处理秘钥
$data = hex2bin($encryptedData); // 转换为二进制数据
$iv = substr($data, 0, 16); // 提取前 16 字节作为 IV
$ciphertext = substr($data, 16); // 提取剩余部分作为密文
$decrypted = openssl_decrypt($ciphertext, 'AES-128-CBC', $secretKey, OPENSSL_RAW_DATA, $iv);
return $decrypted;
}

/**
* SHA1PRNG算法
* @param string $secretKey 加密的秘钥
* @return string 截取的 16 字节密钥
*/
private static function _sha1prng($secretKey) {
return substr(openssl_digest(openssl_digest($secretKey, 'sha1', true), 'sha1', true), 0, 16);
}
}

// 测试代码
$data = '14464614210中文的001';
$secret = "asdfasdasdfsdfasdf23434tgsdfhxcvau4IKf";

// 加密
$encryptData = EncryptUtil::encrypt($data, $secret);
// 解密
$decryptData = EncryptUtil::decrypt($encryptData, $secret);

print_r("original value: " . $data . "\n");
print_r("encrypted value: " . $encryptData . "\n");
print_r("decrypted value: " . $decryptData . "\n");
?>
import hashlib
import binascii
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes


class EncryptUtil:
def init(self, key):
self.key = self.get_sha1prng_key(key) # 初始化密钥
self.length = AES.block_size # 数据块大小为 16 字节
self.unpad = lambda data: data[0:-ord(data[-1])] # 截断函数,去除填充字符

def get_sha1prng_key(self, key):
"""
使用 SHA1 方法生成随机数,对 key 进行处理,截取前 16 字节作为 AES-128 密钥。
"""
signature = hashlib.sha1(key.encode("utf-8")).digest()
signature = hashlib.sha1(signature).digest()
return signature[:16]

def pad(self, text):
"""
填充函数,使被加密数据长度是 block_size 的整数倍
"""
count = len(text.encode('utf-8'))
add = self.length - (count % self.length)
entext = text + (chr(add) * add)
return entext

def encrypt(self, originalData):
"""
AES-CBC 加密函数,返回 Base64 格式密文
"""
iv = get_random_bytes(16) # 随机生成 IV
cipher = AES.new(self.key, AES.MODE_CBC, iv) # CBC 模式加密
padded_data = self.pad(originalData).encode("utf8")
ciphertext = cipher.encrypt(padded_data)
encrypted_data = iv + ciphertext # 将 IV 和密文拼接
hex_string = binascii.b2a_hex(encrypted_data) # 转为十六进制字符串
return hex_string.decode().upper()

def decrypt(self, encryptedData):
"""
AES-CBC 解密函数,支持 Base64 格式密文
"""
encrypted_data = binascii.a2b_hex(encryptedData.encode("utf8")) # 转为二进制数据
iv = encrypted_data[:16] # 前 16 字节为 IV
ciphertext = encrypted_data[16:] # 剩余部分为密文
cipher = AES.new(self.key, AES.MODE_CBC, iv) # 创建 CBC 解密对象
padded_data = cipher.decrypt(ciphertext).decode("utf8")
return self.unpad(padded_data) # 去除填充字符


# 测试代码
if name == "main":
# 秘钥
secret = 'asdfasdasdfsdfasdf23434tgsdfhxcvau4IKf'
eg = EncryptUtil(secret)

# 明文
data = "14464614210中文的001"

# 加密
encrypt_data = eg.encrypt(data)
print("Original value: " + data)
print("Encrypted value: " + encrypt_data)

# 解密
decrypt_data = eg.decrypt(encrypt_data)
print("Decrypted value: " + decrypt_data)
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes

# 定义加密函数
def aes_cbc_encrypt_base64(plaintext, key):
"""
AES-CBC 模式加密,并返回 Base64 编码的加密结果
:param plaintext: 明文字符串
:param key: 16, 24 或 32 字节的密钥
:return: Base64 编码的加密数据(IV + 密文)
"""
iv = get_random_bytes(16) # 生成随机 IV
cipher = AES.new(key, AES.MODE_CBC, iv) # 创建 AES 加密对象
ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size)) # 填充并加密
encrypted_data = iv + ciphertext # 将 IV 和密文拼接
return base64.b64encode(encrypted_data).decode() # 转换为 Base64 编码并返回

# 定义解密函数
def aes_cbc_decrypt_base64(encrypted_data_base64, key):
"""
解密 Base64 编码的 AES-CBC 加密数据
:param encrypted_data_base64: Base64 编码的加密数据(IV + 密文)
:param key: 16, 24 或 32 字节的密钥
:return: 解密后的明文字符串
"""
encrypted_data = base64.b64decode(encrypted_data_base64) # 解码 Base64
iv = encrypted_data[:16] # 提取前 16 字节作为 IV
ciphertext = encrypted_data[16:] # 提取剩余部分作为密文
cipher = AES.new(key, AES.MODE_CBC, iv) # 创建 AES 解密对象
plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size) # 解密并去除填充
return plaintext.decode()

# 示例代码
if name == "main":
# 使用 16 字节密钥(可以改为 24 或 32 字节)
key = b"ThisIsA16ByteKey"

# 明文
plaintext = "Hello, this is a secret message!"

# 加密
encrypted_data_base64 = aes_cbc_encrypt_base64(plaintext, key)
print(f"Encrypted (Base64): {encrypted_data_base64}")

# 解密
decrypted_data = aes_cbc_decrypt_base64(encrypted_data_base64, key)
print(f"Decrypted: {decrypted_data}")
### CryptoJS 的 AES 加密

CryptoJS 是一个流行的 JavaScript 加密库,提供了多种加密算法,包括 AES(高级加密标准)。AES 是一种对称加密算法,这意味着加密和解密使用相同的密钥。下面是如何使用 CryptoJS 进行 AES 加密和解密的示例。

#### 1. 安装 CryptoJS
首先,确保你已安装 CryptoJS 库。如果你使用 npm,可以运行以下命令安装:

npm install crypto-js


#### 2. 使用 CryptoJS 进行 AES 加密和解密

// 引入 CryptoJS 库
const CryptoJS = require("crypto-js");

// 设置密钥和数据
const key = CryptoJS.enc.Utf8.parse('1234567890123456');  // 16字节密钥
const iv = CryptoJS.enc.Utf8.parse('6543210987654321');  // 16字节初始向量

// 加密数据
const plaintext = "Hello, this is a secret message!";
const encrypted = CryptoJS.AES.encrypt(plaintext, key, { iv: iv }).toString();
console.log('Encrypted:', encrypted);

// 解密数据
const decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv });
const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
console.log('Decrypted:', decryptedText);


#### 3. 关键步骤说明:
- 密钥 (key)初始向量 (iv) 都必须是正确长度的字节数组。对于 AES,常见的长度为 16 字节(128 位)。
- **加密**:`CryptoJS.AES.encrypt` 用于加密数据,返回一个密文。
- **解密**:`CryptoJS.AES.decrypt` 用于解密密文,返回一个解密后的数据(需要转换为 UTF-8 字符串)。

### 总结

使用 CryptoJS 的 AES 加密和解密功能,可以方便地在客户端进行数据保护。确保在使用时妥善管理密钥和初始向量的安全。

// 安装 CryptoJS
npm install crypto-js


#CryptoJS #AES #加密 #JavaScript #对称加密
### searchsploit 与 Nmap 联合使用指南

searchsploit 可以与 Nmap 工具结合,快速从 Nmap 的扫描结果中提取可能的漏洞利用信息。Nmap 扫描到的服务和版本信息会被传递给 `searchsploit`,从而定位相关漏洞。

---

#### 使用步骤

1. 使用 Nmap 扫描目标
使用 Nmap 的 -sV 选项进行服务版本检测,并将结果保存为 XML 格式:
   nmap -sV -oX nmap_results.xml <target>
   

示例:
   nmap -sV -oX nmap_results.xml 192.168.1.1
   


2. 使用 `searchsploit` 分析 Nmap 扫描结果
通过 --nmap 选项,将 Nmap 的 XML 文件输入到 `searchsploit`:
   searchsploit --nmap nmap_results.xml
   

示例输出:
   Services matching "Apache 2.4.29":
     - Apache HTTP Server 2.4.29 - Path Traversal
       https://www.exploit-db.com/exploits/12345
   


3. 进一步验证漏洞
确认漏洞的适用性,分析是否符合目标系统的实际配置。

---

#### 示例场景

假设我们扫描一个目标主机:
nmap -sV -oX scan.xml 192.168.1.10


扫描结果存储在 `scan.xml`,然后运行:
searchsploit --nmap scan.xml


#### 结合 -v 查看更多详细信息
如果需要更详细的输出,可以加上 -v 参数:
searchsploit --nmap scan.xml -v


---

#### 注意事项
1. 服务版本准确性
Nmap 的版本检测可能会不准确,建议手动确认目标服务版本。

2. 结果筛选
searchsploit 的输出可能包含一些与目标不相关的漏洞,需手动检查。

3. 不依赖漏洞数据库的完整性
searchsploit 使用的是本地 Exploit-DB 数据库,可能不是最新的。建议定期更新:
   searchsploit -u
   


---

#### 整体流程
1. 使用 Nmap 检测服务和版本信息。
2. 将扫描结果保存为 XML 文件。
3. 使用 searchsploit --nmap 解析结果,提取可能的漏洞利用。

---

#### 关键词
#searchsploit #Nmap #漏洞扫描 #渗透测试 #Exploit-DB
### searchsploit 命令使用说明

searchsploit 是 Exploit-DB 提供的命令行工具,用于搜索和管理本地存储的漏洞利用代码。

#### 用法
searchsploit [选项] 关键词1 [关键词2] ... [关键词N]


#### 示例
# 搜索包含关键词 "afd", "windows", "local" 的漏洞利用
searchsploit afd windows local

# 搜索指定漏洞编号 39446 的路径
searchsploit -p 39446

# 搜索带有严格匹配 "Apache Struts 2.0.0" 的结果,并排除 PoC 和 DOS 的内容
searchsploit -s "Apache Struts 2.0.0" --exclude="(PoC)|/dos/"

# 按 CVE 号进行搜索
searchsploit --cve 2021-44228


---

#### 选项说明
##### 搜索选项:
1. `-c, --case`
执行区分大小写的搜索(默认情况下不区分大小写)。

2. `-e, --exact`
精确匹配搜索内容和顺序,且仅匹配漏洞标题(隐含 -t 选项)。

3. `-s, --strict`
严格搜索输入值,禁用模糊搜索(不会匹配版本范围)。

4. `-t, --title`
仅搜索漏洞标题(默认同时搜索标题和文件路径)。

5. `--exclude="term"`
从结果中排除指定值(可用 | 分隔多个值)。

6. `--cve`
根据 CVE 编号进行搜索。

##### 输出选项:
1. `-j, --json`
以 JSON 格式显示搜索结果。

2. `-p, --path`
显示漏洞利用的完整路径,并尝试将路径复制到剪贴板。

3. `-v, --verbose`
提供更详细的输出信息。

4. `-w, --www`
显示 Exploit-DB.com 的在线链接,而不是本地路径。

5. `--disable-colour`
禁用搜索结果中的高亮显示。

##### 非搜索选项:
1. `-m, --mirror`
将指定漏洞编号的漏洞利用代码复制到当前目录。

2. `-x, --examine`
使用 $PAGER 查看指定漏洞利用的内容。

3. `-u, --update`
更新本地 Exploit-DB 数据库。

##### 自动化选项:
1. `--nmap`
解析 Nmap 的 XML 输出文件,匹配服务版本中可能的漏洞利用。

---

#### 输出示例
1. 常规搜索
   kali@kali:~$ searchsploit afd windows local
   ---------------------------------------------------------------------------------------- -----------------------------------
   Exploit Title                                                                          |  Path
   ---------------------------------------------------------------------------------------- -----------------------------------
   Microsoft Windows (x86) - 'afd.sys' Local Privilege Escalation (MS11-046)               | windows_x86/local/40564.c
   ...
   


2. 显示漏洞路径
   kali@kali:~$ searchsploit -p 39446
   Exploit: Microsoft Windows 7 (x86) - 'afd.sys' Dangling Pointer Privilege Escalation (MS14-040)
      URL: https://www.exploit-db.com/exploits/39446
     Path: /path/to/exploitdb/exploits/windows_x86/local/39446.py
   Copied EDB-ID #39446's path to the clipboard
   


---

#### 关键词
#searchsploit #Exploit-DB #漏洞利用搜索 #渗透测试工具
### getsploit 命令使用说明

getsploit 是一个用于搜索和下载漏洞利用工具的命令行工具。

#### 用法:
getsploit [选项]


#### 选项说明:
1. -h, --help
显示帮助信息并退出。

2. -t, --title
仅搜索漏洞利用的标题(默认会搜索描述和源代码)。

3. -j, --json
将搜索结果以 JSON 格式展示。

4. -m, --mirror
将搜索结果中的漏洞利用文件复制到以查询名称命名的子目录中。

5. -c COUNT, --count=COUNT
限制搜索结果的数量,默认值为 10。

6. -l, --local
在本地数据库中执行搜索,而不是在线搜索。

7. -u, --update
更新 getsploit.db 数据库(会下载到脚本所在路径)。

---

#### 示例命令:
1. 搜索特定漏洞:
   getsploit apache
   

2. 只搜索标题:
   getsploit -t apache
   

3. 将结果保存到本地文件夹:
   getsploit -m apache
   

4. 更新本地漏洞数据库:
   getsploit -u
   


---

#### 关键词
#getsploit #漏洞利用工具 #命令行工具 #渗透测试
import paramiko
import subprocess
import time
import os

# 获取用户输入
server_ip = input("请输入服务器 IP 地址: ")
ssh_user = input("请输入 SSH 用户名: ")
ssh_password = input("请输入 SSH 密码: ")
mysql_user = input("请输入 MySQL 用户名: ")
mysql_password = input("请输入 MySQL 密码: ")

# 设置当前目录为本地备份目录
backup_dir = os.getcwd()

# 当前时间用于生成唯一的备份文件名
current_time = time.strftime("%Y-%m-%d_%H-%M-%S")

# 连接到远程服务器
def ssh_connect():
try:
# 创建SSH客户端实例
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server_ip, username=ssh_user, password=ssh_password)
return ssh
except Exception as e:
print(f"连接 SSH 失败: {e}")
exit(1)

# 备份数据库并将文件保存到远程服务器
def backup_database(ssh):
print("正在备份数据库...")
dump_file = f"/tmp/db_backup_{current_time}.sql" # 远程临时备份文件
dump_command = f"mysqldump -u {mysql_user} -p{mysql_password} --all-databases > {dump_file}"

stdin, stdout, stderr = ssh.exec_command(dump_command)
error = stderr.read().decode().strip()
if error:
print(f"数据库备份失败: {error}")
exit(1)
else:
print(f"数据库备份成功,远程文件路径: {dump_file}")
return dump_file

# 备份源码并将文件保存到远程服务器
def backup_source_code(ssh):
print("正在备份 Web 源码...")
source_dir = "/var/www/html" # 根据实际情况修改
remote_backup = f"/tmp/source_backup_{current_time}.tar.gz"

# 使用 tar 命令压缩源码并保存在远程服务器
tar_command = f"tar -czf {remote_backup} -C {source_dir} ."
stdin, stdout, stderr = ssh.exec_command(tar_command)
error = stderr.read().decode().strip()
if error:
print(f"源码备份失败: {error}")
exit(1)
else:
print(f"源码备份成功,远程文件路径: {remote_backup}")
return remote_backup

# 通过 SCP 下载文件到本地当前目录
def download_file(ssh, remote_file, local_file):
try:
scp_command = f"scp {ssh_user}@{server_ip}:{remote_file} {local_file}"
subprocess.run(scp_command, shell=True, check=True)
print(f"文件下载成功:{local_file}")
except subprocess.CalledProcessError as e:
print(f"SCP 文件下载失败: {e}")
exit(1)

# 关闭 SSH 连接
def close_ssh(ssh):
ssh.close()

# 主函数
def main():
# 连接到远程服务器
ssh = ssh_connect()

# 备份数据库并获取远程文件路径
remote_db_file = backup_database(ssh)

# 备份源码并获取远程文件路径
remote_source_file = backup_source_code(ssh)

# 下载数据库备份文件到本地
local_db_file = f"{backup_dir}/db_backup_{current_time}.sql"
download_file(ssh, remote_db_file, local_db_file)

# 下载源码备份文件到本地
local_source_file = f"{backup_dir}/source_backup_{current_time}.tar.gz"
download_file(ssh, remote_source_file, local_source_file)

# 关闭 SSH 连接
close_ssh(ssh)
print("备份和下载完成!所有备份文件保存在当前目录:", backup_dir)

if name == "main":
main()
find / -perm -4000 -type f 2>/dev/null

find / -perm -u=s -type f 2>/dev/null
find / -perm -4000 -type f 2>/dev/null | while read file; do
echo "Checking $file"
curl -s https://gtfobins.github.io/gtfobins/$(basename $file) | grep -i "suid"
done
以下是使用 Markdown 格式书写的内网渗透步骤表格,已按您提供的格式整理:

| 步骤 | 缩写 | 说明 |
|------------------|------|---------------------------------------------------------------------|
| 信息收集 | RE | Reconnaissance:收集目标网络信息,如端口、服务、用户、拓扑等。 |
| - 端口扫描 | PS | Port Scanning:扫描目标主机开放的端口。 |
| - 服务枚举 | SE | Service Enumeration:识别服务类型及版本。 |
| - 用户发现 | UF | User Finding:枚举用户、组信息(如 NetUser)。 |
| - 网络探测 | ND | Network Discovery:发现存活主机、子网、网段等。 |
| 漏洞利用 | EX | Exploitation:利用目标系统的漏洞获得访问权限或执行代码。 |
| - 服务漏洞利用 | SV | Service Vulnerability Exploitation:针对服务漏洞进行利用(如 SMB/RDP 漏洞)。 |
| - Web 漏洞利用 | WV | Web Vulnerability Exploitation:如 SQL 注入、文件上传、RCE。 |
| 获取 Shell | GS | Get Shell:通过漏洞获取初始命令控制权限。 |
| - 代码注入 Shell | CI | Code Injection:通过注入脚本获得 WebShell 或命令执行权限。 |
| - 升级 Shell | US | Upgrade Shell:将普通 Shell 升级为交互式 Shell。 |
| 反弹 Shell | RS | Reverse Shell:目标主机反向连接攻击者建立控制通道。 |
| - 内网穿透 | NT | Internal Network Tunneling:通过工具(如 FRP)突破内网限制。 |
| - 持久连接 | PC | Persistent Connection:设置自动反弹脚本(如利用计划任务)。 |
| 创建代理 | AP | Agent Proxy:配置中转代理,用于访问目标内网的其他主机。 |
| - 本地代理 | LP | Local Proxy:使用工具(如 proxychains)将流量路由到代理服务。 |
| - 隧道代理 | TP | Tunnel Proxy:利用隧道工具(如 SSH 隧道、SOCKS)绕过网络限制。 |
| 提权 | PE | Privilege Escalation:通过漏洞或滥用权限获得更高系统权限。 |
| - 内核提权 | KE | Kernel Exploitation:利用系统内核漏洞提权(如 DirtyCow)。 |
| - 凭证抓取 | CG | Credential Gathering:获取本地存储的凭证(如 Mimikatz 抓取 LSASS)。 |
| - 文件权限利用 | FA | File Access Exploitation:滥用可写文件或任务提权。 |
| 横向移动 | LM | Lateral Movement:在网络内传播控制,扩展影响范围。 |
| - 凭证传递 | CP | Credential Pass:利用抓取的凭证进行 Pass-the-Hash 或票据攻击。 |
| - 远程执行 | REE | Remote Execution:通过 PsExec、WMI、WinRM 等工具执行命令。 |
| - 共享目录利用 | SM | Shared Folder Exploitation:滥用 SMB 共享传播恶意代码。 |
| 数据提取 | DT | Data Collection:从目标系统收集敏感数据。 |
| - 文件搜索 | FS | File Searching:查找敏感文件或配置文件。 |
| - 数据库提取 | DB | Database Dumping:提取数据库表内容。 |
| 解密 | DC | Decryption:破解或解密敏感信息(如密码、文件)。 |
| - 哈希破解 | HC | Hash Cracking:破解 NTLM 哈希或 Web Hash 值。 |
| - 密码分析 | PA | Password Analysis:分析和破解保存的密码(如 Wireshark 中的 HTTPS 流量)。 |
| 持久化 | PR | Persistence:在目标系统中创建持久化访问手段。 |
| - 后门设置 | BS | Backdoor Setup:通过计划任务、服务篡改创建后门。 |
| - 账户创建 | AC | Account Creation:创建隐藏的管理员账户。 |
| 报告生成 | RP | Reporting:记录和整理渗透全过程,生成报告。 |
| - 日志整理 | LR | Log Review:记录每一步操作细节,生成截图或录屏。 |
| - 修复建议 | RF | Remediation Framework:提供漏洞修复建议及加固方案。 |
Kali Linux 中,除了 WhatWeb**、**CMSeeKCMSmap**,还有许多其他类似的工具可以帮助渗透测试人员识别、扫描和利用 CMS 系统及其漏洞。以下是一些常见的类似工具:

---

### 1. **WPScan

WPScan 是专门用于扫描 WordPress 网站的安全漏洞工具。它能够识别 WordPress 的版本、已安装插件、主题以及已知的漏洞。WPScan 是渗透测试中对 WordPress 网站进行漏洞评估的常用工具。

#### 特点:
- 专注于 WordPress**:深入分析 WordPress 及其插件、主题的漏洞。
- **暴力破解**:支持暴力破解 WordPress 管理员账号密码。
- **漏洞数据库**:拥有一个庞大的已知漏洞数据库。
- **输出报告**:可以生成详细的漏洞扫描报告,适合渗透测试后分析。

#### 使用场景:
- 针对 WordPress 网站进行漏洞扫描。
- 对已知插件和主题漏洞进行深度分析。

---

### 2. **JoomScan

JoomScan 是一个专注于 Joomla 网站安全扫描的工具。它能够识别 Joomla 版本、插件以及已知的漏洞,并可以帮助发现网站中的安全隐患。

#### 特点:
- 专注于 Joomla**:用于识别 Joomla 系统及其插件的漏洞。
- **漏洞识别**:能够扫描 Joomla 的已知漏洞,并提供详细的漏洞信息。
- **自定义扫描**:可以根据需求自定义扫描选项,灵活性较强。

#### 使用场景:
- 针对 Joomla 网站进行漏洞扫描,特别是针对插件的漏洞扫描。
- 渗透测试人员对 Joomla 系统进行深入分析。

---

### 3. **Droopescan

Droopescan 是一个针对 Drupal 网站的安全扫描工具,能够扫描 Drupal 系统及其模块的已知漏洞。它特别适用于发现 Drupal 系统中的弱点。

#### 特点:
- 专注于 Drupal**:专门针对 Drupal 内容管理系统的漏洞扫描。
- **模块扫描**:能够扫描 Drupal 中安装的模块,识别已知漏洞。
- **深度漏洞扫描**:不仅扫描版本,还扫描具体的漏洞。

#### 使用场景:
- 针对 Drupal 网站进行漏洞扫描。
- 渗透测试人员对 Drupal 版本和模块进行漏洞分析。

---

### 4. **Nikto

Nikto 是一个开源的 web 服务器扫描工具,能够扫描网站和 Web 服务器的配置、漏洞及安全性问题。它能够识别不同的 Web 服务漏洞,包括 CMS 漏洞。

#### 特点:
- Web 服务器扫描**:除了 CMS,它还能够扫描 Web 服务器的安全问题。
- **扫描内容广泛**:识别多种 Web 服务漏洞,包括跨站脚本、SQL 注入、服务器配置问题等。
- **支持自定义扫描**:可以自定义扫描目标,检测漏洞类型。

#### 使用场景:
- 对网站的 Web 服务器进行全面的漏洞扫描。
- 渗透测试中,用于寻找 Web 服务中的潜在安全隐患。

---

### 5. **Gobuster

Gobuster 是一个用于发现目录和文件的工具,常用于信息收集阶段。虽然它不是专门针对 CMS 的,但它能够帮助发现隐藏的 CMS 文件和目录,从而为进一步的漏洞扫描提供线索。

#### 特点:
- 目录/文件爆破**:快速扫描网站,寻找隐藏的目录和文件。
- **支持多种字典**:可以使用不同的字典进行目录和文件的爆破。
- **支持 DNS 和虚拟主机**:支持对 DNS 和虚拟主机的爆破扫描。

#### 使用场景:
- 在信息收集阶段,帮助发现隐藏的文件和目录。
- 查找 CMS 系统隐藏的管理页面或资源。

---

### 6. **Acunetix

Acunetix 是一个自动化的 web 漏洞扫描工具,提供全面的漏洞扫描功能,包括对 CMS 漏洞的检测。它能够自动识别多种 CMS 和插件,并检查其中的安全问题。

#### 特点:
- 自动化扫描**:自动扫描 Web 应用中的漏洞,包括 CMS 系统的漏洞。
- **综合漏洞检测**:不仅能识别 CMS 漏洞,还能识别 SQL 注入、XSS 等其他常见漏洞。
- **可视化报告**:提供详细的漏洞扫描报告,适合企业使用。

#### 使用场景:
- 企业级安全审计,尤其是对 CMS 系统的深度扫描。
- 自动化漏洞扫描,适合大规模网站检测。

---

### 7. **W3af

W3af 是一个 Web 应用程序攻击和审计框架,包含了多种插件,其中许多插件专门用于 CMS 漏洞检测。它是一个功能强大的工具,适合进行全面的 Web 应用程序安全评估。

#### 特点:
- 多功能框架**:集成了多种 Web 漏洞扫描功能,包括针对 CMS 的漏洞扫描。
- **模块化插件**:支持许多攻击和漏洞扫描模块,可以灵活扩展。
- **漏洞检测**:支持包括 XSS、SQL 注入、文件包含、CMS 漏洞等在内的多种漏洞扫描。

#### 使用场景:
- 综合性的 Web 漏洞扫描,适合渗透测试和安全审计。
- 深入分析 CMS 系统及其插件的漏洞。

---

### 8. **Burp Suite

Burp Suite 是一款强大的 Web 应用程序安全测试工具,支持漏洞扫描、代理、爬虫等多种功能。虽然它不是专门针对 CMS 的工具,但可以用来分析和测试 CMS 漏洞。

#### 特点:
- 全功能 Web 安全测试**:支持漏洞扫描、代理抓包、自动化爬虫等。
- **广泛的插件支持**:可以通过 Burp 插件支持 CMS 漏洞的扫描和识别。
- **深度分析**:通过手动和自动化的方式,深入分析 CMS 系统的安全性。

#### 使用场景:
- 对 Web 应用(包括 CMS 系统)进行全面的安全评估。
- 渗透测试人员用于发现 CMS 和 Web 应用中的漏洞。

---

### 总结

| 工具 | 专注点 | 特点 | 使用场景 |
|---------------|--------------------|--------------------------------|-----------------------------------|
| **WPScan
| WordPress | 专注于 WordPress 的漏洞扫描 | 针对 WordPress 网站进行漏洞扫描 |
| JoomScan | Joomla | 针对 Joomla 的漏洞扫描 | 针对 Joomla 网站进行漏洞扫描 |
| Droopescan| Drupal | 针对 Drupal 的漏洞扫描 | 针对 Drupal 网站进行漏洞扫描 |
| Nikto | Web 服务器 | Web 服务漏洞扫描 | 综合 Web 服务的安全扫描 |
| Gobuster | 目录/文件爆破 | 文件和目录爆破工具 | 信息收集阶段,查找隐藏的资源 |
| Acunetix | Web 漏洞扫描 | 自动化 Web 漏洞扫描,支持 CMS | 企业级漏洞扫描,自动化分析 |
| W3af | Web 应用漏洞扫描 | 综合漏洞扫描,支持 CMS 漏洞 | 综合 Web 漏洞扫描,渗透测试 |
| Burp Suite| Web 安全测试 | 多功能 Web 安全测试工具 | 综合 Web 应用安全评估,CMS 测试 |

如果你主要针对 CMS 漏洞进行扫描,可以选择专注于特定 CMS 的工具(如 WPScan、JoomScan 和 Droopescan)。如果需要更广泛的 Web 安全扫描或集成更多功能,像 Burp SuiteNikto 都是不错的选择。
### 比较 WhatWeb、CMSeeK、CMSmap

WhatWeb**、**CMSeeKCMSmap 都是用于识别网站内容管理系统(CMS)及其插件、版本信息的工具。它们的功能和使用场景有一些重叠,但也各自有其特点。下面是这三者的比较:

---

### 1. WhatWeb
WhatWeb 是一个广泛使用的 web 扫描工具,主要用于识别目标网站上使用的技术,包括 CMS、Web 服务器、编程语言、JavaScript 框架等。它非常适合用于信息收集阶段,能够通过多种指纹(签名)来分析网站技术栈。

#### 特点:
- 支持技术识别**:除了 CMS,它还能识别多种 Web 技术,如 Web 服务器、编程语言、广告网络、CDN 等。
- **广泛的插件支持**:WhatWeb 提供了很多预定义的插件库,支持识别大量的 CMS 和其他技术。
- **灵活性**:用户可以自定义指纹库,扩展工具的识别能力。
- **输出格式**:支持多种输出格式(如 JSON、XML、HTML、CSV),方便集成和自动化分析。
- **命令行支持**:适合自动化和批量扫描。

#### 优缺点:
- **优点**:
- 多功能,不仅能识别 CMS,还能识别很多其他技术。
- 可自定义和扩展,适应性强。
- 输出格式丰富,适合不同场景使用。
- **缺点**:
- 扫描可能较慢,尤其是大规模扫描时。
- 没有专门针对某个 CMS 的深度分析功能,仅限于识别。

#### 使用场景:
- 信息收集阶段,快速识别目标网站的技术栈。
- 自动化扫描多个网站。

---

### 2. **CMSeeK

CMSeeK 是专门针对内容管理系统(CMS)的扫描工具,尤其关注于常见的 CMS 漏洞和信息泄露。它是一个面向 CMS 漏洞扫描和枚举的工具,支持 WordPress、Joomla、Drupal 等流行 CMS 的检查。

#### 特点:
- CMS 专注**:专注于 CMS 的识别和漏洞扫描,特别是常见 CMS 的漏洞。
- **漏洞扫描**:除了 CMS 版本识别外,还能扫描常见漏洞(如 SQL 注入、XSS、远程代码执行等)。
- **自动化**:通过自动化扫描和脚本,用户可以快速发现目标 CMS 的安全问题。
- **插件检查**:支持检测常见的插件漏洞(如 WordPress 插件漏洞)。
- **用户友好**:界面简洁,易于使用,适合渗透测试人员。

#### 优缺点:
- **优点**:
- 专注于 CMS 漏洞检测,特别适合渗透测试人员。
- 提供自动化的漏洞扫描和插件枚举功能。
- 支持常见 CMS,能够准确识别其版本和插件。
- **缺点**:
- 仅限于 CMS 漏洞扫描,不如 WhatWeb 那样全面。
- 对一些不常见的 CMS 支持较少。

#### 使用场景:
- 渗透测试、漏洞扫描,特别是在发现 CMS 漏洞时。
- 针对 CMS 插件和配置的安全审计。

---

### 3. **CMSmap

CMSmap 是一个针对 CMS 网站进行信息收集和漏洞扫描的工具,专注于 WordPress、Joomla 和 Drupal 等流行 CMS。它不仅能识别目标网站使用的 CMS,还能进行进一步的插件漏洞扫描。

#### 特点:
- CMS 专注**:支持 WordPress、Joomla、Drupal 的深度扫描。
- **漏洞枚举**:支持对插件和组件的漏洞枚举,帮助发现已知漏洞。
- **暴力破解**:支持用户名和密码的暴力破解。
- **Post Exploitation**:提供密码破解、口令猜测等功能。
- **可配置性**:支持自定义扫描选项,如线程数、用户代理、自定义头部等。

#### 优缺点:
- **优点**:
- 针对特定 CMS 的深度扫描,特别是插件漏洞。
- 提供暴力破解和后期利用的功能,适合渗透测试。
- 高度可配置,支持用户根据需要调整扫描设置。
- **缺点**:
- 可能出现较多误报,特别是在全扫描模式下。
- 对一些不常见的 CMS 支持较少。
- 扫描过程可能较为缓慢,尤其是在进行暴力破解时。

#### 使用场景:
- 渗透测试,特别是对 WordPress、Joomla 和 Drupal 网站的漏洞扫描。
- 针对 CMS 插件和组件的深度安全审计。
- 网络安全评估中的后期利用阶段。

---

### 总结比较

| 特性 | WhatWeb | CMSeeK | CMSmap |
|---------------------|-------------------------------------|--------------------------------------|-------------------------------------|
| **目标定位
| 广泛的技术栈识别,包括 CMS | 专注于 CMS 漏洞扫描 | 专注于 CMS 漏洞扫描和后期利用 |
| 功能范围 | CMS、Web 服务器、框架、广告等 | CMS 漏洞扫描、插件漏洞识别 | CMS 漏洞扫描、插件枚举、暴力破解 |
| 深度 | 浅层识别技术 | 深度扫描 CMS 漏洞和插件 | 深度扫描 CMS 和插件漏洞,支持后期利用 |
| 适用场景 | 信息收集、技术栈识别 | 渗透测试、漏洞扫描 | 渗透测试、CMS 插件和组件安全审计 |
| 扫描速度 | 中等 | 较快 | 较慢,尤其在深度扫描时 |
| 扩展性 | 高,支持自定义插件 | 较低 | 高,支持自定义扫描选项 |

### 总结:
- WhatWeb 适合用于全面的技术栈识别,包括 CMS、Web 服务器、框架等,适合信息收集和初步扫描。
- CMSeeK 适合专注于 CMS 漏洞的扫描,尤其是在渗透测试时,帮助识别 CMS 系统和插件中的已知漏洞。
- CMSmap 则是一个功能强大的 CMS 漏洞扫描工具,适合渗透测试人员进行深度的安全审计,支持漏洞枚举、暴力破解等后期利用功能。

选择工具时,应根据实际需求来决定:如果仅需识别技术栈,WhatWeb 是更好的选择;如果需要专注于 CMS 漏洞扫描,CMSeeK 和 CMSmap 更为合适,且 CMSmap 在后期利用和暴力破解方面更为强大。
### cmsmap 工具使用说明

cmsmap 是一个简单的内容管理系统(CMS)扫描工具,支持扫描 WordPress、Joomla 和 Drupal 网站。下面是该工具的命令行用法及选项说明:

#### 基本命令结构:
usage: cmsmap [-f W/J/D] [-F] [-t] [-a] [-H] [-i] [-o] [-E] [-d] [-u] [-p]
              [-x] [-k] [-w] [-v] [-h] [-D] [-U W/J/D]
              [target]


#### 参数说明:

##### **扫描选项**:
- `target`:目标 URL(例如 `https://example.com:8080/`)
- `-f W/J/D, --force W/J/D`:强制扫描指定的 CMS(W = WordPress,J = Joomla,D = Drupal)
- `-F, --fullscan`:进行完整扫描,使用大量插件列表。会有误报且速度较慢!
- `-t , --threads`:设置线程数(默认为 5)
- `-a , --agent`:设置自定义用户代理
- `-H , --header`:添加自定义请求头(例如 `Authorization: Basic ABCD...`)
- `-i , --input`:扫描文件中列出的多个目标
- `-o , --output`:将输出结果保存到文件
- `-E, --noedb`:列举插件但不搜索漏洞
- `-c, --nocleanurls`:仅适用于 Drupal,禁用清洁 URL
- `-s, --nosslcheck`:不验证服务器证书
- `-d, --dictattack`:在扫描过程中运行低强度字典攻击(每个用户尝试 5 次)

##### **暴力破解选项**:
- `-u , --usr`:指定用户名或用户名文件
- `-p , --psw`:指定密码或密码文件
- `-x, --noxmlrpc`:在 WordPress 中不使用 XML-RPC 进行暴力破解

##### **后期利用选项**:
- `-k , --crack`:密码哈希文件(需要安装 hashcat,仅适用于 WordPress 和 Joomla)
- `-w , --wordlist`:密码字典文件

##### **其他选项**:
- `-v, --verbose`:启用详细模式(默认值为 false)
- `-h, --help`:显示帮助信息并退出
- -D, --default`:使用默认选项运行 `CMSmap
- `-U, --update`:更新 CMSmap 使用的 CMS(C = CMS,P = 插件,PC = 都更新)

#### 示例用法:
1. **扫描单个目标**:

   cmsmap.py https://example.com
   

2. **强制扫描 WordPress,进行完整扫描,禁用插件漏洞枚举**:

   cmsmap.py https://example.com -f W -F --noedb -d
   

3. **从文件扫描多个目标,并将输出保存到文件**:

   cmsmap.py https://example.com -i targets.txt -o output.txt
   

4. **使用字典文件进行暴力破解**:

   cmsmap.py https://example.com -u admin -p passwords.txt
   

5. **使用哈希文件进行密码破解(需要安装 hashcat)**:

   cmsmap.py -k hashes.txt -w passwords.txt
   


### 关键字:
#CMSmap #CMS扫描 #WordPress #Joomla #Drupal #暴力破解 #字典攻击 #后期利用 #扫描工具
Back to Top