服务器端口扫描
服务器分类
Web服务器:主要负责处理http请求,并返回静态页面;通常只处理http和https协议
例如:Apache、Nginx、IIS、lighttpd等
应用服务器:处理业务逻辑,根据客户端的要求,从数据库或其他数据源获取数据,并将其转化为动态内容,然后返回给客户端;如http,tcp等
例如:Tomcat、Jboss、Weblogic、Websphere等
端口以及渗透用途
端口 | 服务 | 渗透用途 |
TCP 20,21 | FTP | 允许匿名的上传下载,爆破,嗅探,win 提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4) |
TCP 22 | SSH | 可根据已搜集到的信息尝试爆破,v1 版本可中间人,ssh 隧道及 内网代理转发,文件传输等等 |
TCP 23 | Telnet | 爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令 |
TCP 25 | SMTP | 邮件伪造,vrfy/expn 查询邮件用户信息,可使用 smtp-userenum 工具来自动跑 |
TCP/TDP 53 | DNS | 允许区域传送,dns 劫持,缓存投毒,欺骗以及各种基于 dns 隧道 的远控 |
TCP 80-89,443, 8440-8450, 8080-8089 | 各种常用的 Web 服务端 口 | 可尝试经典的 topn,vpn,owa,webmail,目标 oa,各类 Java 控制 台,各类服务器 Web 管理面板,各类 Web 中间件漏洞利用,各 类 Web 框架漏洞利用等等…… |
TCP 110 | POP3 | 可尝试爆破,嗅探 |
TCP 111,2049 | NFS | 权限配置不当 |
TCP 137,139,445 | Samba | 可尝试爆破以及 smb 自身的各种远程执行类漏洞利用, 如,ms08-067,ms17-010,嗅探等…… |
TCP 143 | IMAP | 可尝试爆破 |
UDP 161 | SNMP | 爆破默认团队字符串,搜集目标内网信息 |
TCP 389 | LDAP | ldap 注入,允许匿名访问,弱口令 |
TCP 512,513,514 | Linux rexec | 可爆破,rlogin 登陆 |
TCP 873 | Rsync | 匿名访问,文件上传 |
TCP 1194 | OpenVPN | 想办法钓 VPN 账号,进内网 |
TCP 1352 | Lotus | 弱口令,信息泄漏,爆破 |
TCP 1433 | SQL Server | 注入,提权,sa 弱口令,爆破 |
TCP 1521 | Oracle | tns 爆破,注入,弹 shell… |
TCP 1500 | ISPmanager | 弱口令 |
TCP 1723 | PPTP | 爆破,想办法钓 VPN 账号,进内网 |
TCP 2082,2083 | cPanel | 弱口令 |
TCP 2181 | ZooKeeper | 未授权访问 |
TCP 2601,2604 | Zebra | 默认密码 zerbra |
TCP 3128 | Squid | 弱口令 |
TCP 3312,3311 | kangle | 弱口令 |
TCP 3306 | MySQL | 注入,提权,爆破 |
TCP 3389 | Windows rdp | shift 后门[需要 03 以下的系统],爆破,ms12-020 |
TCP 3690 | SVN | svn 泄露,未授权访问 |
TCP 4848 | GlassFish | 弱口令 |
TCP 5000 | Sybase/DB2 | 爆破,注入 |
TCP 5432 | PostgreSQL | 爆破,注入,弱口令 |
TCP 5900,5901,5 902 | VNC | 弱口令爆破 |
TCP 5984 | CouchDB | 未授权导致的任意指令执行 |
TCP 6379 | Redis | 可尝试未授权访问,弱口令爆破 |
TCP 7001,7002 | WebLogic | Java 反序列化,弱口令 |
TCP 7778 | Kloxo | 主机面板登录 |
TCP 8000 | Ajenti | 弱口令 |
TCP 8009 | tomcat Ajp | Tomcat-Ajp 协议漏洞 |
TCP 8443 | Plesk | 弱口令 |
TCP 8069 | Zabbix | 远程执行,SQL 注入 |
TCP 8080- 8089 | Jenkins,JBoss | 反序列化,控制台弱口令 |
TCP 9080- 9081,9090 | WebSphere | Java 反序列化/弱口令 |
TCP 9200,9300 | ElasticSearch | 远程执行 |
TCP 11211 | Memcached | 未授权访问 |
TCP 27017,27018 | MongoDB | 爆破,未授权访问 |
TCP 50070,50030 | Hadoop | 默认端口未授权访问 |
探针类型
web中间件探针
应用中间件探针
数据库类型探针
其他服务探针
端口扫描
nmap
https://nmap.org/download.html
开放状态
Close 关闭
Open 打开
Filtered 防火墙拦截
常用扫描
基本扫描: nmap www.xiaodi8.com
单端口扫描:nmap www.xiaodi8.com -p80
多端口扫描:nmap www.xiaodi8.com -p80,8080
扫描一系列端口:nmap www.xiaodi8.com -p 10-21
ping扫描: nmap -sP 192.168.33.180
路由追踪: nmap -sP --traceroute www.xiaodi8.com
扫描网段,C段: nmap -sP 192.168.33.180/24
namp万能开关:nmap -A 192.168.33.180(包含了端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测)
扫描服务和版本: nmap -sV 112.46.132.23
使用UDP扫描:nmap -PU 112.46.132.23
反向解析域名:nmap -R 112.46.132.23
参数详解
-sT TCP connect()扫描,在目标主机的日志中记录大批连接请求和错误信息。
-sS 半开扫描,很少有系统能把它记入系统日志。
-sF -sN 秘密FIN数据包扫描、Xmas Tree、Null扫描模式
-sP ping扫描,Nmap默认都会使用ping扫描,只有主机存活,才会继续扫描。
-sU UDP扫描,是不可靠的
-sA 通常用来穿过防火墙的规则集
-sV 探测端口服务版本
-Pn 扫描之前不需要用ping命令,有些防火墙禁止ping命令。可以使用此选项进行扫描
-v 显示扫描过程,推荐使用
-h 帮助选项,是最清楚的帮助文档
-p 指定端口,如“1-65535、1433、135、22、80”等
-O 启用远程操作系统检测,存在误报
-A 全面系统检测、启用脚本检测、扫描等
-oN/-oX/-oG 将报告写入文件,分别是正常、XML、grepable 三种格式
-T4 针对TCP端口禁止动态扫描延迟超过10ms
-iL 读取主机列表,例如,“-iL C \ip.txt”
-iflist 查看本地主机的接口信息和路由信息
-A 选项用于使用进攻性方式扫描
-T4 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,推荐使用T4
-oX test.xml 将扫描结果生成 test.xml 文件,如果中断,则结果打不开
-oA test.xml 将扫描结果生成 test.xml 文件,中断后,结果也可保存
-oG test.txt 将扫描结果生成 test.txt 文件
-sn 只进行主机发现,不进行端口扫描
-O 指定Nmap进行系统版本扫描
-sV 指定让Nmap进行服务版本扫描
-p <port ranges> 扫描指定的端口
-sS/sT/sA/sW/sM 指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描
-sU 指定使用UDP扫描方式确定目标主机的UDP端口状况
-script <script name> 指定扫描脚本
-Pn 不进行ping扫描
-sP 用ping扫描判断主机是否存活,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping
-PI 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-iL 1.txt 批量扫描1.txt中的目标地址
-sL List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
-sY/sZ 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况
-sO 使用IP protocol 扫描确定目标机支持的协议类型
-PO 使用IP协议包探测对方主机是否开启
-PE/PP/PM 使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机
-PS/PA/PU/PY 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现
-sN/sF/sX 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态
-e eth0 指定使用eth0网卡进行探测
-f --mtu <val> 指定使用分片、指定数据包的 MTU.
-b <FTP relay host> 使用FTP bounce scan扫描方式
-g 指定发送的端口号
-r 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
-n 表示不进行DNS解析;
-D <decoy1,decoy2[,ME],...> 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址
-R 表示总是进行DNS解析。
-F 快速模式,仅扫描TOP 100的端口
-S <IP_Address> 伪装成其他 IP 地址
--ttl <val> 设置 time-to-live 时间
--badsum 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或 IDS/IPS)
--dns-servers 指定DNS服务器
--system-dns 指定使用系统的DNS服务器
--traceroute 追踪每个路由节点
--scanflags <flags> 定制TCP包的flags
--top-ports <number> 扫描开放概率最高的number个端口
--port-ratio <ratio> 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数
--version-trace 显示出详细的版本侦测过程信息
--osscan-limit 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)
--osscan-guess 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统
--data-length <num> 填充随机数据让数据包长度达到 Num
--ip-options <options> 使用指定的 IP 选项来发送数据包
--spoof-mac <mac address/prefix/vendor name> 伪装 MAC 地址
--version-intensity <level> 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
--version-light 指定使用轻量侦测方式 (intensity 2)
--version-all 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace 显示出详细的版本侦测过程信息
masscan
https://github.com/robertdavidgraham/masscan
常用扫描
单端口扫描:masscan.exe -p80 192.168.33.180
多端口扫描:masscan.exe -p80,8080 192.168.33.180
扫描一系列端口:masscan.exe -p10-30 192.168.33.180
快速扫描:masscan.exe 192.168.33.180 --top-ports 3 --rate 300
保存结果:masscan.exe 192.168.33.180 --top-ports 3 --rate 300 > 1.txt
参数详解
<ip / range>:命令行上前缀没有“-”的任何内容是IP地址或范围。
有三种有效格式。
第一个,单个IPv4地址,例如“ 11.11.0.0”。
第二个,范围是“ 10.0.0.1-10.0.0.100”。
第三个是CIDR地址,eg“ 0.0.0.0/0”。
指定为多个选项,以空格分隔,逗号分割作为单个选项,例如10.0.0.0/8,192.168.0.1
--range <ip / range>:与上述目标范围规格相同,不同之处在于一个命名参数而不是一个未命名参数。
-p <端口,--ports <端口>:指定要扫描的端口。
可以指定单个端口,例如-p80。
可以指定端口范围,例如-p10-15。
可以指定端口/范围的列表,例如-p80,20-25。
UDP端口也可以指定,例如--ports U:161,U:1024-1100。
--banners:指定应抓取横幅,例HTTP服务器版本部分,HTML标题字段等。
--rate <packets-per-second>:指定所需的传输速率包的数量
-c <文件名>,-conf <文件名>:读取配置文件。
--resume <文件名>:与--conf相同,只是一些选项是自动的临时设置,例如--append-output。配置文件
格式
--echo:不运行,而是将当前配置转储到文件中。可以将文件与-c选项一起使用。此输出的格式为在“配置文件”下分析。
-e <ifname>,-adapter <ifname>:使用命名的原始网络接口,例如 “ eth0”或“ dna1”。如果未指定,则找到的第一个网络接口带有将使用默认网关。
--adapter-ip <IP地址>:使用此IP地址发送数据包。如果没有指定确定,则将使用绑定到网络接口的第一个IP地址。可以指定一个范围,而不是一个IP地址。注意:的大小范围必须是2的偶数幂,例如1、2、4、8、16、1024等。
--adapter-port <端口>:使用此端口号作为源发送数据包。如果如果未指定,则会在40000到60000范围内选择一个随机端口。此端口应由主机防火墙(如iptables)过滤,以防止主机网络堆栈不会干扰到达的数据包。代替单端口,可以指定一个范围,例如40000-40003。注意:的大小范围必须是2的偶数幂,例如上面的示例总共4个地址。
--adapter-mac <mac-address>:使用此作为源MAC ad-发送数据包。如果未指定,则绑定到网络的第一个MAC地址位于将使用接口。
--router-mac <mac地址>:将数据包作为destina-发送到此MAC地址tion。如果未指定,则为网络接口的网关地址将被ARPed。
--ping:指示扫描应包括ICMP回显请求。这可能包含在TCP和UDP扫描中。
--exclude <ip / range>:将IP地址或范围列入黑名单,以防止其被扫描。这会覆盖任何目标规范,从而保证该地址/范围不会被扫描。与普通格式相同目标规范。
--excludefile <文件名>:在同一tar中读取排除范围列表得到上面描述的格式。这些范围会覆盖所有目标,从而防止他们被扫描。
--append-output:使输出追加到文件,而不是覆盖文件。
--iflist:列出可用的网络接口,然后退出。
--retries:每隔1秒发送一次的重试次数。注意由于此扫描程序是无状态的,因此无论是否回复,都会发送重试已经收到。
--nmap:打印帮助,而不是这些选项的nmap兼容性替代品。
--pcap-payloads:从libpcap文件中读取包含数据包的数据包,并提取UDP有效负载,并将这些有效负载与目标相关联端口。这些有效负载将在通过以下方式发送UDP数据包时使用匹配目标端口。每个端口仅记住一个有效负载。 Sim‐与--nmap-payloads类似。
--nmap-payloads <文件名>:以与nmap相同的格式读取文件文件nmap-payloads。它包含UDP有效负载,以便我们可以发送有用的UDP包而不是空包。与--pcap-payloads类似。
--http-user-agent <user-agent>:将现有的user-agent字段替换为执行HTTP请求时的指示值。
--open-only:仅报告打开的端口,不报告关闭的端口。
--pcap <文件名>:将收到的数据包(但不传输的数据包)保存到libpcap格式的文件。
--packet-trace:打印发送和接收的那些数据包的摘要。这是在低速率下很有用,例如每秒几个数据包,但会淹没终端机率很高。
--pfring:强制使用PF_RING驱动程序。
--resume-index:扫描中的暂停点。
--resume-count:退出前要发送的最大探测数。这是与--resume-index一起使用可将扫描切碎并分成多个实例,尽管--shards选项可能更好。
--shards <x> / <y>:在实例之间拆分扫描。 x是此扫描的ID,而y是实例总数。例如,--shards 1/2告诉实例发送每个其他数据包,并从索引0开始。--shards 2/2发送其他所有数据包,但从索引1开始,因此它与第一个示例不重叠。
--rotate <时间>:旋转输出文件,将其重命名为当前时间图章,将其移动到单独的目录中。时间以数量指定秒,例如“ 3600”一个小时。或者,可以指定时间单位,例如 “每小时”,“或6小时”或“ 10分钟”。时间在均匀边界上对齐,因此如果指定为“ daily”,则文件将每天在午夜旋转。
--rotate-offset <时间>:时间的偏移量。这是为了适应时间区域。
--rotate-dir <目录>:旋转文件时,这指定哪个目录尝试将文件移动到。一个有用的目录是/ var / log / masscan。
--seed <integer>:整数作为种子随机数生成器的种子。用一个不同的种子将导致数据包以不同的随机顺序发送。在-可以指定字符串时间,而不是整数,使用本地时间戳记,自动生成不同的随机扫描顺序。如果未指定种子,则时间为默认值。
--regress:运行回归测试,成功返回“ 0”,失败返回“ 1”。
--ttl <num>:指定传出数据包的TTL,默认为255。
--wait <seconds>:指定发送完成后的秒数在退出程序之前等待接收数据包。默认值为10秒onds。可以将字符串永久指定为永不终止。
--offline:实际不传输数据包。这对低费率很有用和--packet-trace以查看可能传输了哪些数据包。要么,它与--rate 100000000一起使用以比较快速传输的基准会工作(假设零开销驱动程序)。 PF_RING慢20%比离线模式下的基准测试结果要高。
-sL:不执行扫描,而是创建一个随机地址列表。这对于导入其他工具很有用。选项--shard,--resume-index和--resume-count对于此功能很有用。
--interactive:在控制台上实时显示结果。没有效果如果与--output-format或--output-filename一起使用。
--output-format <fmt>:指示输出文件的格式,可以是xml,二进制,grepable,列表或JSON。选项--output-filename必须指定。
--output-filename <filename>:将结果保存到的文件。如果parameter --output-format未指定,则默认为xml用过的。
-oB <文件名>:将输出格式设置为二进制并将输出保存在给定的文件名。这等效于使用--output-format和--out-put-filename参数。然后可以使用--readscan选项读取二进制文件。二进制文件的大小比其XML等效项小,但是需要一个单独的步骤才能转换回XML或其他可读格式。
-oX <文件名>:将输出格式设置为XML并将输出保存在给定的文件名。这等效于使用--output-format xml和--output-filename参数。
-oG <文件名>:将输出格式设置为grepable并将输出保存在给定的文件名。这等效于使用--output-format grepable和--output-filename参数。
-oJ <文件名>:将输出格式设置为JSON并将输出保存在给定的文件名。这等效于使用--output-format json和--output-filename参数。
-oL <文件名>:将输出格式设置为简单列表格式并保存以给定的文件名输出。这等效于使用--output-formatlist和--output-filename参数。
--readscan <binary-files>:从-oB选项中读取-oB选项创建的文件扫描,然后根据其他格式以其他格式之一输出它们需求线参数。换句话说,它可以采用输出并将其转换为XML或JSON格式。
网络空间
注意
1.防火墙
2.内网环境:
内网环境可能出现得情况:明明数据库端口开的,网站也能正常打开,但是对目标进行端口扫描,发现数据库端口没有开放(排除防火墙问题)
WAF
概念
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
分类
云WAF:百度安全宝、阿里云盾、长亭雷池,华为云,亚马逊云等
硬件WAF:绿盟、安恒、深信服、知道创宇等公司商业产品
软件WAF:宝塔,安全狗、D盾等
代码级WAF:自己写的waf规则,防止出现注入等,一般是在代码里面写死的
识别工具
wafw00f
https://github.com/EnableSecurity/wafw00f
安装:
python setup.py install
使用:
python main.py www.xiaodi8.com
identywaf
使用:
python identYwaf.py www.xiaodi8.com
蜜罐
概念
蜜罐是一种安全威胁的检测技术,其本质在于引诱和欺骗攻击者,并且通过记录攻击者的攻击日志来产生价值。安全研究人员可以通过分析蜜罐的被攻击记录推测攻击者的意图和手段等信息。攻击方可以通过蜜罐识别技术来发现和规避蜜罐。因此,我们有必要站在红队攻击者的角度钻研蜜罐识别的方式方法。
分类
根据蜜罐与攻击者之间得交互得程度分为:
低级交互蜜罐
中级交互蜜罐
高级交互蜜罐
根据蜜罐模拟得目标分类:
数据库蜜罐
工控蜜罐
物联网蜜罐
web蜜罐等
蜜罐产品
搭建
linux
bash <(curl -sS -L https://hfish.net/webinstall.sh)
登陆链接:https://[ip]:4433/web/
账号:admin
密码:HFish2021
识别
项目识别
使用
quake.exe honeypot 192.168.33.179
人工
端口多而有规律性
web访问协议就下载
原因:ssh,mysql应用蜜罐,搞一个可以爆破的地方。爆破,蜜罐会记录攻击者的账号和密码。账号和密码会采用web jsonp去传输。转发,跳转 jsonp去传输,当你去web http去访问这个端口,才有协议就会下载
设备指纹分析