信息收集是渗透测试中重要的一环,它是渗透测试的起点及终点。之所以说信息收集是渗透测试的起点是因为通过信息收集我们可以确定渗透目标的范围以及其可能存在的安全漏洞及脆弱点,信息收集的广度与深度很大程度上决定了渗透测试的成功与否。在现实情况中渗透测试的目的往往并不是搞垮目标的机器而是收集置于目标机器上的重要的信息,所以说在一定程度上信息收集也是渗透测试的终点。
Web
主动信息收集
主动信息收集指的是与目标存在交互,有可能被目标发现,隐蔽性低。
版本判断
在针对Web应用进行测试时,首先需要做的第一步就是判断当前所适用Web应用的类型及中间件相关信息。具体可以通过下述几个方式:
- 页面样式
- 网页源码中的注释
- HTTP头部信息
- 路径命名规则(功能架构)
对于Web应用无非就是三种类型:
- 完全自定制
- 第三方Web应用二次开发
- 完全使用第三方应用
针对于第一种应用,我们需要收集更多的信息来帮助我们发现漏洞,具体见下面章节。而对于完全的第三方应用,我们需要做的就是去收集对应版本的漏洞历史记录及相应弱点信息,从而辅助我们寻找可以利用的点。而对于那些在第三方Web应用基础上二次开发出来的应用由于其即可能包含第三方应用历史漏洞又有可能在二次开发过程中产生漏洞所以我们需要对其执行前面两者信息收集的动作。
robots.txt
robots.txt位与网站根目录下,通过这个文件我们可以找到一些目标网站不愿被他人访问到的页面。
功能结构分析
所谓功能结构分析就是通过分析应用程序的路径来推测Web应用程序所提供的的功能,然后在此基础上寻找容易出现问题的功能点,比如用户登录,用户注册,评论填写,文件上传,管理员后台等。功能结构分析的手段有以下几种:
- 路径爆破
- 爬虫
- 上述两者结合
具体的工具有
- dirbuster
- Burpsuite
- ZAP
路径爆破时将.bak、.zip等后缀名考虑在范围内可以发现备份文件。
被动信息收集
被动信息收集与主动信息收集刚好相反,被动信息收集不会与目标存在交互,所以隐蔽性比较高。被动信息收集往往借助于第三方,比如搜索引擎,站长之家等。
Google hack
信息 | 搜索语句 |
---|---|
docx/doc | site:target filetype:doc OR filetype:docx |
pptx/ppt | site:target filetype:doc OR filetype:docx |
xlsx/xls | site:target filetype:doc OR filetype:docx |
docx/doc | site:target filetype:doc OR filetype:docx |
txt | site:target filetype:txt |
寻找后台 | site:target inurl:admin OR inurl:login |
寻找可浏览目录 | site:target “index of/” “parent directory” |
寻找暴露的密码 | site:target “密码” “password” |
搜索SQL注入点 | site:target inurl:?id= |
主机
在针对一台主机进行渗透时,我们首先需要考虑这台机器是属于域中的一台机器还是属于工作组中的一台机器,不同环境中的机器所利用的攻击方式及所需要收集的信息不同。
确定当前计算机所处环境
- 域环境
- 非域环境
域环境
如果这台主机是域环境下的一台主机,那么就要从域中用户及域结构两个层次去对这个域进行了解。
域中用户
- 查看当前用户
- 当前用户所属用户组
- 查看域中的用户名:
dsquery user或net user /domain (仅在Windows Server 2003, Windows Server 2008, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2012, Windows Server 2003 with SP1, Windows 8中预装了dsquery) - 查看域组名称:net group /domain:
- 查看域控管理员账户:
域内拓扑
-
查看所有的域:
-
查看域中的域控制器:
-
查看域中所有主机名:net view、dsquery computer或net group “Domain Computers” /domain(此条命令不显示域控)
-
查看主机arp缓存:
-
获取域中主机名对应的IP地址:ping 主机名
还可以使用下述命令批量获取IP及主机名之间的对应关系!
@echo off
@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (
@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (
@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k %%j)
)
)
pause
goto zs:
注释:
FOR /F:处理文件或者命令输出格式为 FOR /F ["options"] %%i IN ('command') DO command
上述代码中用到的options选项及含义:
usebackq:where a back quoted string is executed as a command and a single quoted string is a literal string command and allows the use of double quotes to quote file names in filenameset.
eol -:不显示以'-'开头的那一行
skip n:跳过前n行
delims:分隔符
tokens=2:仅显示分隔符分割后的第2个字段
find "abc" /V:不显示含有“abc”的那一行
:zs
- 查看存活主机
确定可利用目标
-
确定补丁:
-
查看远程主机共享资源
-
判断那些主机域管理员登录过
单主机
查看本地用户
查看本地用户组及组内用户
查看用户对应的组
存活判断
最常用的就是ping,需要注意的一点是有些主机禁止了ping的功能,所以说ping不通主机不一定不存活。
端口扫描
在渗透测试过程中最常用的端口扫描工具是namp,在对主机进行端口扫描前其会先通过ping判断主机是否存活如果存活才会继续对其进行端口扫描。上面提到过有些主机禁ping,所以在应对这类主机时可以使用-Pn来跳过ping的过程直接对主机进行端口扫描。常用的端口扫描命令如下:
其中 -sV是指明判断端口对应的服务及版本,-O用于指明探测主机操作系统类型,系统类型影响着我们后期payload的选择。还可以通过-oX来将扫描结果导出为xml格式从而与其他工具联动实现更高的自动化,比如Eyewitness。针对于主机的渗透中,主机的漏洞点就是其开启的端口及对应的服务,对于各种服务可能存在的漏洞或者利用方式如下表所示:
端口号 | 端口说明 | 攻击技巧 |
---|---|---|
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 | 注入攻击\未授权访问 |
445 | smb | 永恒之蓝 |
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 | 爆破\未授权访问 |
防火墙判断
kali提供了防火墙检测工具用于检测目标是否有防火墙保护,具体用法如下:
主机漏扫
Nessus是一款不错的漏洞扫描工具,它提供了免费版及收费版,免费版在功能上相对于收费版略逊色一些但是也够用了。个人经常应用这款工具来对主机进行漏洞扫描。