相关声明
以下内容仅限于教育目的,请勿用于非法用途。
学习目标
- 掌握端口扫描、目录扫描的概念
- 熟悉Nmap常见的命令
- 熟悉常见的扫描工具,如Goby、FFuf、masscan、御剑、在线扫描等工具
- 学习针对站点指纹收集的思路
- 了解社工的思路
端口扫描
- 端口定义
- 端口分类
- 端口查看
- 常用端口和常见端口漏洞利用方式
端口定义
网络安全领域中,我们说的端口,一般都指的是逻辑意义上的端口,即TCP/IP协议中的端口
端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。
上面的说法可能过于抽象,我们这里举个例子你就懂了,我们在浏览器里输入的网址或是IP地址
譬如,http://127.0.0.1:8000
通常构成方式就是IP:端口
,域名:端口
,冒号后面的就是我们这里说的端口
小提示:http开头的网址端口通常是80,https开头的网址端口通常是443
端口分类
1. 按端口号分布划分
(1)知名端口(Well-Known Ports)知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。这也是我们为什么在启用服务的时候尽量要求选择大于1024的,就是怕占用了系统的一些服务
比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。
(2)动态端口(Dynamic Ports) 动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。 不过,动态端口也常常被病毒木马程序所利用。
2. 按协议类型划分
按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。
下面主要介绍TCP和UDP端口:
(1)TCP端口
TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。
(2)UDP端口
UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。
查看端口
可以使用Netstat命令: 依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。
在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态
我们通常可以通过分析本地地址和外部地址,来挖掘出一些隐藏的服务,譬如恶意挖矿等等
一些参数
可以看到上面的图中有协议栏
、本地地址栏
、外部地址栏
、状态
,其中每一栏的详细参数如下
协议栏:显示TCP或UDP
本地地址栏:显示本地地址和对应服务的端口号
外部地址栏:外连地址和端口号
状态:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
命令详解
我们结合具体的场景给大家做了总结,可以参考
- 查看网络链接状态
- 查看路由表
- 查看网络数据统计
- 查看网络接口信息
usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vnNcaeol] [<Socket> ...]
netstat { [-veenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s } [delay]
-r, --route display routing table #显示路由表
-I, --interfaces=<Iface> display interface table for <Iface> #显示网络接口表
-i, --interfaces display interface table #显示网络接口表
-g, --groups display multicast group memberships #显示多播组成员
-s, --statistics display networking statistics (like SNMP) #显示网络统计数据,如IP/ICMP/SNMP/..各协议统计。
-M, --masquerade display masqueraded connections #显示伪装的连接
-v, --verbose be verbose #详细信息
-n, --numeric don't resolve names #不做名字解析
--numeric-hosts don't resolve host names #不做主机名解析
--numeric-ports don't resolve port names #不做端口名解析
--numeric-users don't resolve user names #不做用户名解析
-N, --symbolic resolve hardware names
-e, --extend display other/more information #显示更多信息,用户名,inode
-p, --programs display PID/Program name for sockets #显示pid和程序名字
-c, --continuous continuous listing #持续的列出相关信息
-l, --listening display listening server sockets #显示处于监听状态的套接字
-a, --all, --listening display all sockets (default: connected) #显示所有的套接字
-o, --timers display timers #显示计时器
-F, --fib display Forwarding Information Base (default) #使用-rF查看路由表时,显示转发信息
-C, --cache display routing cache instead of FIB #使用-rC查看路由表时,显示详细的路由缓存
-T, --notrim stop trimming long addresses #停止修剪长地址
-Z, --context display SELinux security context for sockets #显示套接字的SELINUX上下文
<Iface>: Name of interface to monitor/list.
<Socket>={-t|--tcp} {-u|--udp} {-S|--sctp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
举例:
1 . 查看网络链接状态
-a 显示所有状态的socket
-n 不做名字解析,不加此参数,80端口会显示成http,127.0.0.1显示成localhost,uid为0显示成root等等
-e 显示更多信息如用户,inode
-p 显示pid和程序名字
-t 显示tcp链接
-u 显示udp链接
-x 显示unix套接字
netstat -anpte #查看tcp链接
[root@jia1-LinuxPerformance ~]# netstat -anpte
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 10294 1821/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 10594 1923/master
tcp 0 52 172.16.2.106:22 124.65.173.246:50809 ESTABLISHED 0 10826 1967/sshd
tcp 0 0 172.16.2.106:54076 100.100.100.200:80 TIME_WAIT 0 0 -
tcp 0 0 172.16.2.106:60382 140.205.140.205:80 ESTABLISHED 0 9273 1471/AliYunDun
tcp 0 0 172.16.2.106:54070 100.100.100.200:80 TIME_WAIT 0 0 -
netstat -anpue #查看udp链接
[root@jia1-LinuxPerformance ~]# netstat -anpue
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 9200 1678/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 8655 1069/dhclient
udp 0 0 172.16.2.107:123 0.0.0.0:* 0 10366 1832/ntpd
udp 0 0 172.16.2.106:123 0.0.0.0:* 0 10365 1832/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 0 10364 1832/ntpd
netstat -anpxe #查看unix套接字链接
[root@jia1-LinuxPerformance ~]# netstat -anpxe
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 9249 1471/AliYunDun /tmp/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 2 [ ACC ] STREAM LISTENING 9251 1471/AliYunDun /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
unix 2 [ ACC ] STREAM LISTENING 7047 1/init @/com/ubuntu/upstart
unix 10 [ ] DGRAM 8814 1140/rsyslogd /dev/log
unix 2 [ ACC ] STREAM LISTENING 10600 1923/master public/cleanup
unix 2 [ ACC ] STREAM LISTENING 10607 1923/master private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 10611 1923/master private/rewrite
unix 2 [ ACC ] STREAM LISTENING 10615 1923/master private/bounce
unix 2 [ ACC ] STREAM LISTENING 10619 1923/master private/defer
unix 2 [ ACC ] STREAM LISTENING 10623 1923/master private/trace
unix 2 [ ACC ] STREAM LISTENING 10627 1923/master private/verify
unix 2 [ ACC ] STREAM LISTENING 10631 1923/master public/flush
unix 2 [ ACC ] STREAM LISTENING 10635 1923/master private/proxymap
unix 2 [ ACC ] STREAM LISTENING 10639 1923/master private/proxywrite
unix 2 [ ACC ] STREAM LISTENING 10643 1923/master private/smtp
unix 2 [ ACC ] STREAM LISTENING 10647 1923/master private/relay
unix 2 [ ACC ] STREAM LISTENING 10651 1923/master public/showq
unix 2 [ ACC ] STREAM LISTENING 10655 1923/master private/error
unix 2 [ ACC ] STREAM LISTENING 10659 1923/master private/retry
unix 2 [ ACC ] STREAM LISTENING 10663 1923/master private/discard
unix 2 [ ACC ] STREAM LISTENING 10667 1923/master private/local
unix 2 [ ACC ] STREAM LISTENING 10671 1923/master private/virtual
unix 2 [ ] DGRAM 7622 483/udevd @/org/kernel/udev/udevd
unix 2 [ ACC ] STREAM LISTENING 10675 1923/master private/lmtp
unix 2 [ ACC ] STREAM LISTENING 10679 1923/master private/anvil
unix 2 [ ACC ] STREAM LISTENING 10683 1923/master private/scache
unix 2 [ ] DGRAM 13412 2216/anacron
unix 2 [ ] DGRAM 10874 1967/sshd
unix 2 [ ] DGRAM 10719 1940/qmgr
unix 2 [ ] DGRAM 10693 1939/pickup
unix 2 [ ] DGRAM 10690 1941/crond
unix 3 [ ] STREAM CONNECTED 10686 1923/master
unix 3 [ ] STREAM CONNECTED 10685 1923/master
unix 3 [ ] STREAM CONNECTED 10682 1923/master
unix 3 [ ] STREAM CONNECTED 10681 1923/master
unix 3 [ ] STREAM CONNECTED 10678 1923/master
unix 3 [ ] STREAM CONNECTED 10677 1923/master
unix 3 [ ] STREAM CONNECTED 10674 1923/master
unix 3 [ ] STREAM CONNECTED 10673 1923/master
unix 3 [ ] STREAM CONNECTED 10670 1923/master
unix 3 [ ] STREAM CONNECTED 10669 1923/master
unix 3 [ ] STREAM CONNECTED 10666 1923/master
unix 3 [ ] STREAM CONNECTED 10665 1923/master
unix 3 [ ] STREAM CONNECTED 10662 1923/master
unix 3 [ ] STREAM CONNECTED 10661 1923/master
unix 3 [ ] STREAM CONNECTED 10658 1923/master
unix 3 [ ] STREAM CONNECTED 10657 1923/master
unix 3 [ ] STREAM CONNECTED 10654 1923/master
unix 3 [ ] STREAM CONNECTED 10653 1923/master
unix 3 [ ] STREAM CONNECTED 10650 1923/master
unix 3 [ ] STREAM CONNECTED 10649 1923/master
unix 3 [ ] STREAM CONNECTED 10646 1923/master
unix 3 [ ] STREAM CONNECTED 10645 1923/master
unix 3 [ ] STREAM CONNECTED 10642 1923/master
unix 3 [ ] STREAM CONNECTED 10641 1923/master
unix 3 [ ] STREAM CONNECTED 10638 1923/master
unix 3 [ ] STREAM CONNECTED 10637 1923/master
unix 3 [ ] STREAM CONNECTED 10634 1923/master
unix 3 [ ] STREAM CONNECTED 10633 1923/master
unix 3 [ ] STREAM CONNECTED 10630 1923/master
unix 3 [ ] STREAM CONNECTED 10629 1923/master
unix 3 [ ] STREAM CONNECTED 10626 1923/master
unix 3 [ ] STREAM CONNECTED 10625 1923/master
unix 3 [ ] STREAM CONNECTED 10622 1923/master
unix 3 [ ] STREAM CONNECTED 10621 1923/master
unix 3 [ ] STREAM CONNECTED 10618 1923/master
unix 3 [ ] STREAM CONNECTED 10617 1923/master
unix 3 [ ] STREAM CONNECTED 10614 1923/master
unix 3 [ ] STREAM CONNECTED 10613 1923/master
unix 3 [ ] STREAM CONNECTED 10610 1923/master
unix 3 [ ] STREAM CONNECTED 10609 1923/master
unix 3 [ ] STREAM CONNECTED 10606 1923/master
unix 3 [ ] STREAM CONNECTED 10605 1923/master
unix 3 [ ] STREAM CONNECTED 10603 1923/master
unix 3 [ ] STREAM CONNECTED 10602 1923/master
unix 3 [ ] STREAM CONNECTED 10599 1923/master
unix 3 [ ] STREAM CONNECTED 10598 1923/master
unix 3 [ ] STREAM CONNECTED 10596 1923/master
unix 3 [ ] STREAM CONNECTED 10595 1923/master
unix 2 [ ] DGRAM 10556 1923/master
unix 2 [ ] DGRAM 10321 1832/ntpd
unix 3 [ ] STREAM CONNECTED 9248 1471/AliYunDun
unix 3 [ ] STREAM CONNECTED 9247 1471/AliYunDun
unix 3 [ ] STREAM CONNECTED 9246 1471/AliYunDun
unix 3 [ ] STREAM CONNECTED 9245 1471/AliYunDun
unix 2 [ ] DGRAM 9170 1678/dhclient
unix 3 [ ] STREAM CONNECTED 8775 1118/auditd
unix 3 [ ] STREAM CONNECTED 8774 1118/auditd
unix 3 [ ] DGRAM 7636 483/udevd
unix 3 [ ] DGRAM 7635 483/udevd
2 . 查看路由表
netstat -r和route命令输出是差不多的。
[root@jia1-LinuxPerformance ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.2.0 * 255.255.255.0 U 0 0 0 eth0
172.16.2.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth1
default 172.16.2.253 0.0.0.0 UG 0 0 0 eth0
default 172.16.2.253 0.0.0.0 UG 0 0 0 eth1
[root@jia1-LinuxPerformance ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.2.0 * 255.255.255.0 U 0 0 0 eth0
172.16.2.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 1002 0 0 eth0
link-local * 255.255.0.0 U 1003 0 0 eth1
default 172.16.2.253 0.0.0.0 UG 0 0 0 eth0
default 172.16.2.253 0.0.0.0 UG 1001 0 0 eth1
netstat -rF和netstat -rC两个命令的区别是一个输出的是路由表,一个输出的是路由缓存。
默认netstat -r输出的是netstat -rF结果。-F为默认参数
[root@jia1-LinuxPerformance ~]# netstat -rF
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.2.0 * 255.255.255.0 U 0 0 0 eth0
172.16.2.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth1
default 172.16.2.253 0.0.0.0 UG 0 0 0 eth0
default 172.16.2.253 0.0.0.0 UG 0 0 0 eth1
[root@jia1-LinuxPerformance ~]# netstat -rC
Kernel IP routing cache
Source Destination Gateway Flags MSS Window irtt Iface
140.205.140.205 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.0.46 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.3.2 172.16.2.253 1500 0 0 eth0
172.16.2.106 10.143.0.45 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.5.3 172.16.2.253 1500 0 0 eth0
100.100.5.2 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.33.51 172.16.2.253 1500 0 0 eth0
100.100.5.1 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.33.50 172.16.2.253 1500 0 0 eth0
203.107.6.88 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.33.50 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.2.136 172.16.2.253 1500 0 0 eth0
100.100.3.1 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 100.100.5.3 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.5.2 172.16.2.253 1500 0 0 eth0
172.16.2.106 10.143.33.49 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.3.1 172.16.2.253 1500 0 0 eth0
172.16.2.106 120.25.115.20 172.16.2.253 1500 0 0 eth0
172.16.2.106 203.107.6.88 172.16.2.253 1500 0 0 eth0
172.16.2.106 124.65.173.246 172.16.2.253 1500 0 0 eth0
172.16.2.106 10.143.0.46 172.16.2.253 1500 0 0 eth0
100.100.3.3 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 100.100.3.3 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.3.2 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.3.3 172.16.2.253 1500 0 0 eth0
100.100.5.3 172.16.2.106 172.16.2.106 l 65535 0 0 lo
124.65.173.246 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.0.44 172.16.2.253 1500 0 0 eth0
120.25.115.20 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 140.205.140.205 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.3.1 172.16.2.253 1500 0 0 eth0
100.100.2.136 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.0.45 172.16.2.253 1500 0 0 eth0
172.16.2.106 10.143.0.44 172.16.2.253 1500 0 0 eth0
172.16.2.106 120.25.115.20 172.16.2.253 1500 0 0 eth0
172.16.2.106 10.143.33.49 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.5.1 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.2.138 172.16.2.253 1500 0 0 eth0
172.16.2.106 203.107.6.88 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.5.1 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.2.138 172.16.2.253 1500 0 0 eth0
100.100.3.2 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 100.100.5.2 172.16.2.253 1500 0 0 eth0
100.100.2.138 172.16.2.106 172.16.2.106 l 65535 0 0 lo
172.16.2.106 10.143.33.51 172.16.2.253 1500 0 0 eth0
172.16.2.106 100.100.2.136 172.16.2.253 1500 0 0 eth0
3 . 查看网络统计数据,netstat -s展示各协议的统计信息
[root@jia1-LinuxPerformance ~]# netstat -s
Ip:
4440 total packets received
4 with invalid addresses
0 forwarded
0 incoming packets discarded
4436 incoming packets delivered
4269 requests sent out
Icmp:
806 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
echo requests: 804
echo replies: 2
806 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
echo request: 2
echo replies: 804
IcmpMsg:
InType0: 2
InType8: 804
OutType0: 804
OutType8: 2
Tcp:
79 active connections openings
1 passive connection openings
3 failed connection attempts
0 connection resets received
2 connections established
2840 segments received
2494 segments send out
16 segments retransmited
0 bad segments received.
5 resets sent
Udp:
790 packets received
0 packets to unknown port received.
0 packet receive errors
953 packets sent
UdpLite:
TcpExt:
3 resets received for embryonic SYN_RECV sockets
71 TCP sockets finished time wait in fast timer
44 delayed acks sent
Quick ack mode was activated 1 times
652 packets header predicted
516 acknowledgments not containing data received
1283 predicted acknowledgments
1 congestion windows recovered after partial ack
0 TCP data loss events
10 other TCP timeouts
1 DSACKs sent for old packets
1 DSACKs received
IpExt:
InOctets: 329641
OutOctets: 1297221
4 . 查看网络接口信息
[root@jia1-LinuxPerformance ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 4502 0 0 0 4353 0 0 0 BMRU
eth1 1500 0 2 0 0 0 3 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 0 LRU
常见端口和端口漏洞利用方式
端口号 | 端口说明 | 攻击技巧 |
---|---|---|
21/22/69 | ftp/tftp**:文件传输协议** | 爆破**嗅探溢出;后门** |
22 | ssh**:远程连接** | 爆破**OpenSSH;28个退格** |
23 | telnet**:远程连接** | 爆破**嗅探** |
25 | smtp**:邮件服务** | 邮件伪造 |
53 | DNS**:域名系统** | DNS**区域传输DNS劫持DNS缓存投毒DNS欺骗深度利用:利用DNS隧道技术刺透防火墙** |
67/68 | dhcp | 劫持**欺骗** |
110 | pop3 | 爆破 |
139 | samba | 爆破**未授权访问远程代码执行** |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | ldap | 注入攻击**未授权访问** |
512/513/514 | linux r | 直接使用**rlogin** |
873 | rsync | 未授权访问 |
1080 | socket | 爆破:进行内网渗透 |
1352 | lotus | 爆破:弱口令**信息泄漏:源代码** |
1433 | mssql | 爆破:使用系统用户登录**注入攻击** |
1521 | oracle | 爆破:**TNS注入攻击** |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权访问 |
3306 | mysql | 爆破**拒绝服务注入** |
3389 | rdp | 爆破**Shift后门** |
4848 | glassfish | 爆破:控制台弱口令**认证绕过** |
5000 | sybase/DB2 | 爆破**注入** |
5432 | postgresql | 缓冲区溢出**注入攻击爆破:弱口令** |
5632 | pcanywhere | 拒绝服务**代码执行** |
5900 | vnc | 爆破:弱口令**认证绕过** |
6379 | redis | 未授权访问**爆破:弱口令** |
7001 | weblogic | Java**反序列化控制台弱口令控制台部署webshell** |
80/443/8080 | web | 常见**web攻击控制台爆破对应服务器版本漏洞** |
8069 | zabbix | 远程命令执行 |
9090 | websphere**控制台** | 爆破:控制台弱口令**Java反序列** |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcacache | 未授权访问 |
27017 | mongodb | 爆破**未授权访问 端口渗透总结** |
端口扫描工具
结合上面的概念,我们给大家推荐一些工具
- 御剑高速端口扫描
- masscan
- 在线端口扫描
御剑
更多工具
这里山海已经帮助大家收集好了,直接下载使用即可!
当我们获取到目标的真实IP后,下一步就是对目标IP进行端口扫描和Banner信息识别
此款工具非常灵活,可批量扫描txt文本内的大量IP,也可扫描IP指定C段,可指定超时时间、每秒扫描的端口速度、自定义端口文件配置(指定扫描哪些端口)、探测指纹。
可以指定IP范围
当然,下面也可以选择常见端口
端口配置也支持自定义
在线扫描
优点:用网站提供的服务器去扫目标,不会暴露自己的IP
缺点:使用不如本地版灵活,功能不够丰富
masscan
masscan玩法比较多
- 扫描指定网段范围的指定端口
- 获取Banner
- 设置扫描时忽略一些网段
- 输出到指定文件中
- 设置扫描速度
- 用加载配置文件的方式运行
- 结果输出
- 命令行模式详解
站点指纹收集
攻击者最常用的方法是首先覆盖目标的网络存在并枚举尽可能多的信息。
利用此信息,攻击者可以製定出准确的攻击方案,这将有效利用目标主机正在使用的软件类型/版本中的漏洞。
在攻防环境中信息收集总是非常重要的一个重要环节,多维度信息收集在红队攻防中绘制更完善的攻击面以及攻击思路流程。
判断网站操作系统
Linux大小写敏感
Windows大小写不敏感
Linux操作系统大小写敏感,我们将网址url一些字母修改成修改大小写看网站是否还能正常访问,能访问就是windows服务器,不能则是Linux。
确定网站采用的语言
如PHP / Java / Python等
找后缀,比如php/asp/jsp
JSESSIONID JSP
PSESSIONID PHP
前端框架
如jQuery / BootStrap / Vue / React / Angular等查看源代码
中间服务器
- 如 Apache / Nginx / IIS 等
- 查看header中的信息
- 根据报错信息判断
- 根据默认页面判断
Web容器服务器
如Tomcat / Jboss / Weblogic等
后端框架
- 根据Cookie判断
- 根据CSS / 图片等资源的hash值判断
- 根据URL路由判断,如wp-admin
- 根据网页中的关键字判断
- 根据响应头中的X-Powered-By
您可以通过使用Wappalyzer插件,快速获取网站中的一些资产信息
- CDN信息
- 常见的有Cloudflare、yunjiasu
- 探测有没有WAF,如果有,什么类型的
- 有WAF,找绕过方式
- 没有,进入下一步
Nmap探测WAF有两种脚本
一种是http-waf-detect。
命令:nmap -p80,443 –script=http-waf-detect ip
一种是http-waf-fingerprint。
命令:nmap -p80,443 –script=http-waf-fingerprint ip
WAFW00F探测WAF
命令:wafw00f -a 域名
- 扫描敏感目录,看是否存在信息泄漏
- 扫描之前先自己尝试几个的url,人为看看反应
- 使用爬虫爬取网站信息
- 拿到一定信息后,通过拿到的目录名称,文件名称及文件扩展名了解网站开发人员的命名思路,确定其命名规则,推测出更多的目录及文件名
目录扫描
目录扫描通常是帮助我们发现敏感信息或者敏感目录,譬如管理员的后台路径、数据库备份文件、网站数据打包文件等等
常见敏感文件或目录
通常我们所说的敏感文件、敏感目录大概有以下几种:
- 后台
- robots.txt
- 数据库log
- sitemap.xml
- mysql.sql
- licence.txt
- Git
- hg/Mercurial
- svn/Subversion
- bzr/Bazaar
- Cvs
- WEB-INF泄露
- 备份文件泄露、配置文件泄露
- 还可以使用awvs、burpsuite等爬虫获取
使用搜索引擎
site:xxx.xxx system
site:xxx.xxx 内部
site:xxx.xxx 系统
site:目标 admin
site:目标 login
site:目标 管理员登陆
site:目标 后台
site:目标 中心
site:目标 登录
site:目标 登陆
site:目标 管理中心
常见入口目标
关注度低的系统
业务线较长的系统
物理路径识别
报错
在处理报错信息的问题上如果处理不当,就可导致路径信息泄露,比如访问一些不存在的文件等思路。
•1.有动态URL的地方可以替换参数 替换参数值为不存在的,很多时候都能爆物理路径
•2.访问不存在的文件名 文件 或者改正常后缀为不支持的后缀。
IIS7.0以上,如果没有修改404页面,只要浏览web任意不存在的文件,都会直接暴出绝对路径。同理,thinkphp也有这个性质。 在id=1的注入点,使用各种不支持的字符,比如id=1’ id=? id=-1 id=\ id=/ 都有可能暴出绝对路径。 还有的时候传一些错误图片会报错 windows不支持的符号,?:<>之类的,还有windows不支持的文件名aux Windows服务器上传aux文件或者新建aux文件夹,因为不允许这种文件存在而报错泄露绝对路径。
•3.尤其是php框架写的站,上传很容易爆出物理路径,根据具体情况了,比如一次提交允许的后缀,整体提交时抓包改为不支持的后缀,放包,很多时候都能爆出物理路径。 有一部分都是sql语句报错,sql很多时候会爆物理路径,所以相信你已经会拓展了。
后台可以登录后台的话,后台首页一般都有服务器信息的,大部分情况下物理路径都在里面。
搜索引擎寻找报错
结合关键字和site语法搜索出错页面的网页快照,常见关键字有warning和fatal error。
注意,如果目标站点是二级域名,site接的是其对应的顶级域名,这样得到的信息要多得多。
Site:xxx.edu.tw warning
Site:xxx.com.tw “fatal error”
由于很多网站本身容错做的不好,会有一些暴露物理路径的界面,如果被搜索引擎收录了,那么可以通过搜索引擎来找到
在搜索引擎搜索 site:目标 关键字
我总结了一下常见的报错关键词
warning error module file not exist 数据库 配置出错 找不到包含文件 包含路径 路径为 select Warning: mysqli_query() expects parameter to be mysqli boolean given in on line directory in Fatal error require_once() Failed opening required include_path=
容器特性
很多,如:Apache Tomcat、Struts2、CMS、zabix、Nginx等等,例如Nginx的某版本解析漏洞,就可造成路径信息泄露。
•IIS大于6的版本,基本都是 导致他404就可以爆出物理路径、IIS名、IIS版本。这个很简单,随便访问个不存在的目录或文件就可以。
•nginx文件类型错误解析爆路径: 说明:要求Web服务器是nginx,且存在文件类型解析漏洞。有时在图片地址后加/x.php,该图片不但会被当作php文件执行,有可能爆出物理路径 www.xxx.com/xx.jpg/x.php
•/etc/httpd/conf/httpd.conf
这是apache默认目录,最底下有一句
Load config files in the “/etc/httpd/conf.d” directory, if any. IncludeOptional conf.d/.conf
这代表,在/etc/httpd/conf.d目录下的所有.conf文件都会被加载,也就是说管理员可以在/etc/httpd/conf.d/.conf里面写网站目录。
所以最后读 /etc/httpd/conf.d/vhost.conf 成功读出网站绝对路径
思路就是先读 /etc/httpd/conf/httpd.conf 没有网站目录就看IncludeOptional conf.d/*.conf 看完就尝试读 /etc/httpd/conf.d/httpd.conf
/etc/httpd/conf.d/vhost.conf
/etc/httpd/conf.d/httpd-vhost.conf
/etc/httpd/conf.d/httpd.conf.bak 等等
文件泄露
通过遗留文件获得,比如 phpinfo.php info.php site.php 1.php a.php 一些探针文件啊都有,等等。在遗留文件中搜索 SCRIPT_FILENAME。
很多网站的根目录下都存在测试文件,脚本代码通常都是phpinfo(),
如:
test.php ceshi.php info.php phpinfo.php php_info.php 1.php
phpmyadmin爆路径
一旦找到phpmyadmin的管理页面,再访问该目录下的某些特定文件,就很有可能爆出物理路径。
至于phpmyadmin的地址可以用wwwscan这类的工具去扫,也可以选择google。
/phpmyadmin/libraries/lect_lang.lib.php
/phpMyAdmin/index.php?lang[]=1
/phpMyAdmin/phpinfo.php load_file()
/phpmyadmin/themes/darkblue_orange/layout.inc.php
/phpmyadmin/libraries/select_lang.lib.php
/phpmyadmin/libraries/lect_lang.lib.php
/phpmyadmin/libraries/mcrypt.lib.php
XML处
一些XML限制或删除不完全,可导致服务器等信息泄露。
配置文件找路径
如果注入点有文件读取权限,就可以手工load_file或工具读取配置文件,再从中寻找路径信息(一般在文件末尾)。各平台下Web服务器和PHP的配置文件默认路径可以上网查,这里列举常见的几个。
Windows:
c:\windows\php.ini php配置文件
c:\windows\system32\inetsrv\MetaBase.xml IIS虚拟主机配置文件
如果有root读取文件的权限,或者任意文件读取漏洞,可以读取容器的配置文件,或者集成环境的固定web目录,判断集成环境,可以通过mysql的根目录判断,前面注入时说到的@@datadir: 常见配置文件: C:\Windows\system32\inetsrv\metabase.xml
C:\Windows\System32\inetsrv\config\applicationHost.config
C:\xampp\apache\conf\httpd.conf /var/www/conf/httpd.conf
常见集成环境默认目录,后面往往还有以域名命名的目录,比如:
C:\www\baidu
C:\Inetpub\wwwroot
C:\xampp\htdocs
D: \phpStudy\WWW
/home/wwwroot/ /www/users/
CMS识别
CMS指纹识别又有很多方法,比如说御剑指纹识别、Webrobot工具、whatweb工具、还有在线查询的网站等等。
CMS在线指纹识别:
http://whatweb.bugscaner.com/look/
也可在github上找一些高star的指纹识别工具
Goby的使用
社工的思路
这个我们博客分享了太多太多了,可以参考
暂无评论内容