Kali Linux Web 渗透测试第二版(2018)原创翻译
原版书名:《Kali Linux Web Penetration Testing Cookbook Second Edition》
第二章 信息侦察
2.1 被动信息收集
域名信息收集
目标:zonetransfer.me
公共DNS区域传送威胁
1、使用whois
获取注册信息:
2、使用dig
查询注册信息
3、尝试利用域传送攻击获取DNS
服务器解析的所有主机名
dig axfr @nsztm1.digi.ninja zonetransfer.me
4、使用theharvester
获取目标网站的邮箱、主机名、IP地址信息
theharvester -b all -d zonetransfer.me
5、使用Netcraft
工具进行非直接查询网站程序版本信息
toolbar.netcraft.com/site_report
6、使用Wayback Machine
查询网站历史状态
7、使用Google
高级搜索选项检索目标信息
语法:site:zonetransfer.me
8、其他
openbugbounty.org
:跨站点脚本和跨站点请求伪造漏洞披露网站
pastebin.com
:匿名发布信息,适合传输敏感信息
zone-h.org
:被黑网站信息
2.2 使用Recon-ng收集信息
Recon-ng
是一种使用多来源的信息收集工具,这些来源包括Google,Twitter和Shodan
等,获取的信息包括网站Web程序信息,服务器信息,主机信息,用户信息,电子邮件信息等,而且可以生成报告
Kali
默认安装有Recon-ng
,在线查询需要API
1、两种方式启动Recon-ng
:
1)应用程序里面--信息收集-找到 Recon-ng
2)命令行启动
# recon-ng
启动之后可以看到一个命令交互界面,通过show modules
命令可以查询所有模块
3、使用子域名爆破模块爆破子域信息
1)加载brute_hosts
模块,使用load recon/domains-hosts/brute_hosts
载入模块
2)使用show options
可以查看需要配置的选项
3)使用set
设置选项
4)设置完之后,输入run
执行
5)暴力破解需要一段时间,完成之后,可以使用show hosts
获取到的子域信息
4、其他工具:Maltego
:一款非常有用的信息收集和公开来源情报(OSINT)工具
2.3 使用Nmap扫描和识别服务
Nmap
可能是世界上使用最多的端口扫描工具,它可以用来识别主机信息,扫描TCP
和UDP
端口信息,检测防火墙,检测服务信息,甚至可以使用脚本来查找和利用漏洞
1、ping
主机存活扫描
nmap -sn target_ip/domain
2、端口扫描
nmap target
3、服务版本信息和操作系统类型探测:
nmap -sV -O target
-sV
:探测服务标识和版本信息
-O
:探测操作系统版本信息
4、其他扫描器
unicornscan
hping3
masscan
amap
Metasploit 扫描模块
2.4 检测和标识WAF
目标机器:OWASP Broken Web Apps(BWA)
靶机:OWASP Broken Web Applications Project
是OWASP
推出的一款基于虚拟机的渗透测试演练工具,提供了比较多的安全测试漏洞。
1、使用Nmap
检测脚本检测目标主机WAF
nmap -sT -sV -p 80,443,8080,8081 --script=http-waf-detect 192.168.1.155
可以看出这台服务器好像没有WAF
2、检测存在保护的服务器可以这样:
nmap -p 80,443 --script=http-waf-detect www.example.com
3、Nmap
中还有另一个脚本可以更精准地帮助我们识别WAF
,这个脚本就是:http-waf-fingerprint
使用方法:
nmap -p 80,443 --script=http-waf-fingerprint www.example.com
4、使用wafwf00f
检测和识别WAF
wafw00f www.example.com
5、原理:WAF
检测通过向服务器发送特定请求(通常为恶意数据请求)然后对服务器响应进行分析
2.5 识别HTTPS加密参数
HTTPS
并非绝对安全,需要正确配置HTTPS
才能提供有效的保护,避免MITM
和密码分析攻击。
在 SSL
协议的实现和设计中发现了许多漏洞,其后续的 TLS
在某些配置下也被发现是易受攻击的。
我们可以从客户端角度通过Nmap,SSLScan
和TestSSL
之类的工具分析服务器的安全通信配置。
1、安装TestSSL
apt install testssl.sh
2、使用Nmap
探测HTTPS
站点支持的协议和密码,使用脚本ssl-enum-ciphers
nmap -sT -p 443 --script ssl-enum-ciphers 192.168.1.155
3、使用SSLScan
评估SSL/TLS
用法:
sslscan target
4、TestSSL
可以支持比Nmap
和SSLScan
更详细的参数,基本用法就是直接加目标,可以支持导出为HTML,JSON
或者CSV
5、原理:Nmap,SSLScan
和TestSSL
通过尝试不同的加密方法和客户端配置来链接HTTPS
服务器进行测试
6、其他
sslyze --regular www.example.com
openssl s_client-connect www2.example.com:443
2.6 使用浏览器开发者工具分析和更改页面信息
这里以Firefox
浏览器作为工具,当然使用Chrome
也可以
Firebug
是一个浏览器插件,它允许我们分析网页的内部结构,例如表元素、CSS 和框架。它还能够向我们展示 DOM 对象、错误代码以及浏览器和服务器之间的通信
1、打开浏览器开发者工具
在浏览器中访问目标网站,在相应的地方右键--选择“检查元素”,即可打开
也可以使用F12
或Ctrl + Shift + C
启动浏览器开发者工具
2、可以在某个属性上双击,进行修改,添加,删除
3、比如我们可以把MAX_FILE_SIZE
的限制从 30000
改为 60000
4、原理:浏览器在收到服务器返回的响应后,会把所有的元素修改为浏览器能理解的方式,然后渲染显示给用户,如果页面重新加载,则从服务器接收新的请求再次渲染显示给用户。开发者工具允许修改显示在浏览器中几乎所有的页面信息
5、其他更多操作
Debugger:调试器/可以对页面进行断点调试
Style Editor:样式编辑器/编辑CSS样式
Performance:性能/页面加载耗时和耗费资源统计
Memory:内存/拍摄内存快照,如果想查看内存中的敏感信息,这非常有用
Network:网络 / 观察请求,响应,请求/响应类型,大小,时间等
Storage:存储 / 查看 Cookie,Sessions,缓存等,并且可删除和更改
还可以在开发者工具设置中启用的其他工具,如:
DOM
ShaderEditor:着色器编辑器
Canvas:探查和调试Canvas工具
Web Audio:网络音频
Scratchpad:代码草稿纸
2.7 获取和修改Cookie
Cookie
是Web
服务器发送给客户端(浏览器)的一小段信息,用于在本地存储与用户相关的一些特定信息。比如会话标识等。
通过浏览器开发者工具观察Cookie
是如何存储的,并学会修改Cookie
如果开发者工具栏中没有存储选项卡,请在设置中打开它
1、打开目标网站,点击Storage
选项,选择 Cookies
2、可以双击其中某个值,进行更改
3、我们还可以使用CookiesManager
插件对Cookie
进行查看修改
4、在实际渗透测试的时候,我们应该注意Cookie
中某些特性,以验证它们是否真的安全
Http Only
:如果Cookie
设置了这个标志,那么它不能通过脚本代码访问,意味着只能从服务端更改cookie
值,虽然不能用页面内的脚本更改Cookie
,但我们仍然可以通过浏览器工具或插件来更改。
Secure
:使用HTTPS
传输Cookie
Expires
:Cookie
过期设置,如果过期时间设置在未来的某个时间,则表示cookie
存储在本地文件中,甚至在浏览器关闭后仍保留,这样攻击者可以直接从文件中获取Cookie
。
2.8 利用robots.txt
进行更进一步的调查,我们需要找到网站中没有呈现给普通用户的网站路径,比如CMS系统的管理页面。找到这些,有助于我们后续的渗透测试。
这时候,我们可以通过查看站点的robots.txt
文件,发现这些隐藏的路径
什么是robots
文件:
robots.txt
(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL
是大小写敏感的,所以robots.txt
的文件名应统一为小写。robots.txt
应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt
,或者使用robots
元数据(Metadata
,又称元数据)。
robots.txt
协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt
是用字符串比较来确定是否获取URL
,所以目录末尾有与没有斜杠/
表示的是不同的URL
。robots.txt
允许使用类似Disallow: *.gif
这样的通配符。
其他的影响搜索引擎的行为的方法包括使用robots
元数据:
<meta name="robots" content="noindex,nofollow" />
这个协议也不是一个规范,而只是约定俗成的,有些搜索引擎会遵守这一规范,有些则不然。通常搜索引擎会识别这个元数据,不索引这个页面,以及这个页面的链出页面。
via Wikipedia
1、打开目标站点
vicnum
是一个有漏洞的Web程序
2、查看robots.txt
文件
在URL
后面加入/robots.txt
我们发现有两个路径是不允许搜索引擎访问的,但是我们可以访问它
3、访问cgi-bin
路径
我们发现了很多pl
脚本文件
再访问另外一个路径看看
点进去可以看到一个清单
jotto
是一个猜字游戏,答案可能就在这个清单里面,我们可以拿去尝试
可以测试一下,确实答案就在这个清单里面
第二章完....
说明
本文由蚁景网安实验室编译,转载请注明来源。
关于蚁景网安实验室
蚁景网安实验室(www.yijinglab.com)-国内领先的实操型网络安全在线教育平台
真实环境,在线实操学网络安全 ; 实验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。