当我们要对一个站点进行渗透测试之前,一般渗透测试人员常见方法是直接通漏洞扫描器来对指定目标站点进行渗透,当指定的目标站点无漏洞情况,渗透测试员就需要进行信息收集工作来完成后期的渗透。
目前一般域名漏洞扫描工具分为Web与系统扫描器,Web主要有:AWVS、APPSCAN、Netspark、WVSS、WebInspect,系统扫描器有:Nmap、Nessus、天镜、明鉴、RSAS等,后面会分开给大家讲解。
根据主域名,可以获取二级域名、三级域名、......主要姿势可以有:
【1】DNS域传送漏洞(不得不称赞)
如果存在,不仅能搜集子域名,还能轻松找到一枚洞,这样子的好事百试不厌。如果SRC一级域名不多,直接在kali下dnsenumoldboyedu.com。
工具说明及用法可参考如下:
dnsenum的目的是尽可能收集一个域的信息,它能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器、mxrecord(函件交换记录),在域名服务器上执行axfr请求,通过谷歌脚本得到扩展域名信息(googlehacking),提取自域名并查询,计算C类地址并执行whois查询,执行反向查询,把地址段写入文件。
参数说明:
-h查看工具使用帮助
--dnsserver
--enum快捷选项,相当于"--threads5-s15-w"
--noreverse跳过反向查询操作
--nocolor无彩色输出
--private显示并在"domain_ips.txt"文件结尾保存私有的ips
--subfile
--threads
-v,--verbose显示所有的进度和错误消息
-o,--output
-e,--exclude
-w,--whois在一个C段网络地址范围提供whois查询
-fdns.txt指定字典文件,可以换成dns-big.txt也可以自定义字典
【2】备案号查询
【3】SSL证书
通过查询SSL证书,获取的域名存活率很高,这应该也是不错的思路。
【4】google搜索C段
这招用的比较少,国内没条件的就用bing或百度吧(国内站点足矣),在没什么进展的时候或许会有意外惊喜。
方法一:参考GoogleHack用法
方法二:用k8工具,前提条件记得注册bing接口
10.
【5】APP提取
【7】字典枚举法
字典枚举法是一种传统查找子域名的技术,这类工具有DNSReconcile、Layer子域名挖掘机、DirBuster等。
【8】公开DNS源
1)DNS解析记录可以反查IP,比较早的解析记录有时可以查到真实IP,需要留意一下。
【9】威胁情报查询
【10】JS文件域名、ip探测
【11】网站在线查找
查找目标域名信息的方法有:
(1)FOFAtitle="公司名称"
(2)百度intitle=公司名称
(3)Googleintitle=公司名称
(5)钟馗之眼site=域名即可
找到官网后,再收集子域名,下面推荐几种子域名收集的方法,直接输入domain即可查询
(6)子域名在线查询
(7)子域名在线查询
(8)Layer子域名挖掘机4.2(使用方便,界面整洁):
(9)Layer子域名挖掘机5.0(使用方便,界面整洁):
(9)SubDomainBrute
(10)Sublist3r
提示:以上方法为爆破子域名,由于字典比较强大,所以效率较高。
(7)IP138查询子域名
(8)FOFA搜索子域名
语法:domain=”baidu.com”
提示:以上两种方法无需爆破,查询速度快,需要快速收集资产时可以优先使用,后面再用其他方法补充。
(9)Hackertarget查询子域名
注意:通过该方法查询子域名可以得到一个目标大概的ip段,接下来可以通过ip来收集信息。
【1】Web源代码泄露
信息泄露收集可能会用到如下地址:
其它:威胁情报:微步在线、ti.360.cn、Virustotal
zhangxiaosan@xxx.comxiaosan.zhang@xxx.comzxiaosan@xxx.com
手工的方式:
2.github等第三方托管平台
3.社工库
工具方式:
使用方式很简单:
./theHarvester.py-d域名-11000-ball
【3】历史漏洞收集
仔细分析,大胆验证,发散思维,对企业的运维、开发习惯了解绝对是有很大的帮助。可以把漏洞保存下来,进行统计,甚至炫一点可以做成词云展示给自己看,看着看着或者就知道会有什么漏洞。
【4】工具信息收集
如:7kbscan、破壳Web极速扫描器等
【5】whois查询
1、在线whois查询
(1)站长之家域名WHOIS信息查询地址
(2)爱站网域名WHOIS信息查询地址
(3)腾讯云域名WHOIS信息查询地址
(4)美橙互联域名WHOIS信息查询地址
(5)爱名网域名WHOIS信息查询地址
(6)易名网域名WHOIS信息查询地址
(7)中国万网域名WHOIS信息查询地址
(8)西部数码域名WHOIS信息查询地址
(9)新网域名WHOIS信息查询地址
(10)纳网域名WHOIS信息查询地址
(11)中资源域名WHOIS信息查询地址
(12)三五互联域名WHOIS信息查询地址
(13)新网互联域名WHOIS信息查询地址
(14)国外WHOIS信息查询地址
在这个过程中,可以加入端口扫描、敏感文件扫描之类的操作,工具可自由选择,如:
御剑WEB指纹识别系统、whatweb、Wapplyzer等工具。
一、在线识纹识别:
1、云悉
2、潮汐指纹
3、CMS指纹识别
二、工具识别
2、Waf识别
3、CDN识别
如果目标网站使用了CDN,那么我们就需要找到它的真实ip
注意:很多时候,主站虽然是用了CDN,但子域名可能没有使用CDN,如果主站和子域名在一个ip段中,那么找到子域名的真实ip也是一种途径。
1、多地ping确认是否使用CDN
2、查询历史DNS解析记录
在查询到的历史解析记录中,最早的历史解析ip很有可能记录的就是真实ip,快速查找真实IP推荐此方法,但并不是所有网站都能查到。
(1)DNSDB
(2)微步在线
(3)在线网站查找
3、phpinfo
如果目标网站存在phpinfo泄露等,可以在phpinfo中的SERVER_ADDR或_SERVER[“SERVER_ADDR”]找到真实ip
4、绕过CDN
绕过CDN的多种方法具体可以参考
5、参考fofa绕过
参考扩展fafo
旁站往往存在业务功能站点,建议先收集已有IP的旁站,再探测C段,确认C段目标后,再在C段的基础上再收集一次旁站。
旁站是和已知目标站点在同一服务器但不同端口的站点,通过以下方法搜索到旁站后,先访问一下确定是不是自己需要的站点信息。
1、站长之家
同ip网站查询
2、网络空间搜索引擎
如FOFA搜索旁站和C段
该方法效率较高,并能够直观地看到站点标题,但也有不常见端口未收录的情况,虽然这种情况很少,但之后补充资产的时候可以用下面的方法nmap扫描再收集一遍。
3、Nmap,Msscan扫描等
例如:
nmap-p80,443,8000,8080-Pn39.97.3.0/24
4、常见端口表
21,22,23,80-90,161,389,443,445,873,1099,1433,1521,1900,2082,2083,2222,2601,2604,3128,3306,3311,3312,3389,4440,4848,5432,5560,5900,5901,5902,6082,6379,7001-7010,7778,8080-8090,8649,8888,9000,9200,10000,11211,27017,28017,50000,50030,50060
注意:探测C段时一定要确认ip是否归属于目标,因为一个C段中的所有ip不一定全部属于目标。
SRC众测平台
国内平台
国外平台
威胁情报
社工库
a)一台可以正常访问互联网的设备(通常为PC)
b)一个常用浏览器(IE、Chrome等等)
c)掌握强大的搜索关键词
inurl:用于搜索网页上包含的URL.这个语法对寻找网页上的搜索,帮助之类的很有用.
intext:只搜索网页部分中包含的文字(也就是忽略了标题,URL等的文字).
site:可以限制你搜索范围的域名.
filetype:搜索文件的后缀或者扩展名
intitle:限制你搜索的网页标题.
allintitle:搜索所有关键字构成标题的网页.但是推荐不要使用
link:可以得到一个所有包含了某个指定URL的页面列表.例如:link:www.google.com就可以得到所有连接到Google的页面。
一般常见用法有:
site:ooxx.comfiletype:xls
site:xxx.xxxadmin
site:xxx.xxxlogin
site:xxx.xxxsystem
site:xxx.xxx管理
site:xxx.xxx内部
site:xxx.xxx系统
site:xxx.xxx邮件
site:xxx.xxxemail
site:xxx.xxxqq
site:xxx.xxx群
site:xxx.xxx企鹅
site:xxx.xxx腾讯
site:ooxx.com
inurl:jmx-console
实例:
1)intext:管理
2)filetype:mdb
3)inurl:file
4)site:baidu.comfiletype:txt查找TXT文件其他的依次类推
5)site:baidu.comintext:管理
6)site:baidu.cominurl:login
7)site:baidu.comintitle:后台
查看服务器使用的程序
8)site:baidu.comfiletype:asp
9)site:baidu.comfiletype:php
10)site:baidu.comfiletype:jsp
查看上传漏洞:
11)site:baidu.cominurl:file
12)site:baidu.cominurl:load
查找注射点:
13)site:twinurl:aspid=这个是找台湾的
优势:
l只需一台可以访问Google的联网设备,部署简单;
l检索资源库丰富;
劣势:
l搜索关键词多,记忆复杂;
lGoogleHack需要借助浏览器,属于在线工具,离线不能使用;
由于是在win7上面使用,所以要使用兼容win7的winpcap驱动,这里我们使用最新版4.1.2版
功能架构图:
两种部署方式:
lKail集成环境
l单独安装(使用yum工具直接安装就可以)
Nmap<扫描选项><扫描目标>
(一)主机发现
主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMPECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTPINIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
l-sL:ListScan列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
l-sn:PingScan只进行主机发现,不进行端口扫描。
l-Pn:将所有指定的主机视作开启的,跳过主机发现的过程。
l-PS/PA/PU/PY[portlist]:使用TCPSYN/ACK或SCTPINIT/ECHO方式进行发现。
l-PE/PP/PM:使用ICMPecho,timestamp,andnetmask请求包发现主机。
l-PO[protocollist]:使用IP协议包探测对方主机是否开启。
l-n/-R:-n表示不进行DNS解析;-R表示总是进行DNS解析。
l--dns-servers
l--system-dns:指定使用系统的DNS服务器
l--traceroute:追踪每个路由节点
扫描局域网10.1.1.1-10.1.1.100范围内哪些IP的主机是活动的。
命令如下:nmap–sn10.1.1.1-100
由图可知:10.1.1.2、10.1.1.100两台主机处于存活状态。
(二)端口扫描
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。Nmap通过探测将端口划分为6个状态:open:端口是开放的。closed:端口是关闭的。filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。open|filtered:端口是开放的或被屏蔽。closed|filtered:端口是关闭的或被屏蔽。
端口扫描方面非常强大,提供了很多的探测方式:
lTCPSYNscanning
lTCPconnectscanning
lTCPACKscanning
lTCPFIN/Xmas/NULLscanning
lUDPscanning
l其他方式
l-sS/sT/sA/sW/sM:指定使用TCPSYN/Connect()/ACK/Window/Maimonscans的方式来对目标主机进行扫描。
l-sU:指定使用UDP扫描方式确定目标主机的UDP端口状况。
l-sN/sF/sX:指定使用TCPNull,FIN,andXmasscans秘密扫描方式来协助探测对方的TCP端口状态。
l--scanflags
l-sI
l-sY/sZ:使用SCTPINIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
l-sO:使用IPprotocol扫描确定目标机支持的协议类型。
l-b
在此,我们以主机10.1.1.100为例。命令如下:nmap-sS-sU-T4-top-ports3001.1.1.100
(三)版本侦测
简要的介绍版本的侦测原理。版本侦测主要分为以下几个步骤:
l首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
l如果通过“WelcomeBanner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
l如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
l如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
l如果探测到应用程序是SunRPC,那么调用brute-forceRPCgrinder进一步探测具体服务。
l-sV:指定让Nmap进行版本侦测
l--version-light:指定使用轻量侦测方式(intensity2)
l--version-all:尝试使用所有的probes进行侦测(intensity9)
l--version-trace:显示出详细的版本侦测过程信息。
对主机10.1.1.100进行版本侦测。
命令如下:nmap–sV10.1.1.100
(四)OS侦测
Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。具体实现方式如下:Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
l-O:指定Nmap进行OS侦测。
l--osscan-limit:限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
l--osscan-guess:大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。
命令:nmap-O10.1.1.100
(五)漏洞扫描
扫描端口并且标记可以爆破的服务
nmap目标--script=ftp-brute,imap-brute,smtp-brute,pop3-brute,mongodb-brute,redis-brute,ms-sql-brute,rlogin-brute,rsync-brute,mysql-brute,pgsql-brute,oracle-sid-brute,oracle-brute,rtsp-url-brute,snmp-brute,svn-brute,telnet-brute,vnc-brute,xmpp-brute判断常见的漏洞并扫描端口
nmap目标--script=auth,vuln精确判断漏洞并扫描端口
l功能灵活强大,支持多种目标,大量计算机的同时扫描;
l流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。
lNmap参数众多,难以一一记忆;
此方法为在线检测,虽然功能简单,但图形界面十分方便且速度快。
常见端口及对应服务和攻击方式整理如下:
DirBuster是一款路径及网页暴力破解的工具,可以破解出一直没有访问过或者管理员后台的界面路径。
Java运行环境+DirBuster程序包
详细教程,参见:
l双击运行DirBuster.jar
l在URL中输入目标URL或者主机IP地址
l在filewithlistofdirs/files栏后点击browse,选择破解的字典库为directory-list-2.3-small.txt
l将Fileextension中填入正确的文件后缀,默认为php,如果为jsp页面,需要填入jsp
l其他选项不变,点击右下角的start,启动目录查找
l观察返回结果,可点击右下角的report,生成目录报告
优点:
l敏感目录发掘能力强
lOWASP安全机构极力推荐
缺点:
l程序运行线程小
l探测目录依赖字典文件
一、手机端配置
1.让安卓手机和电脑连入同一个WIFI,即是在同一个无线局域网环境下。
2.查看电脑的本地IP地址,命令行下输入ipconfig。
无线局域网的IP地址3.设置手机代理IP,我这里以oppo系统为例。
代理设置为“手动”,设置主机名为电脑无线局域网IP地址,端口可以随便设置,其他的设置可以默认。
二、电脑端配置
1.打开Burpsuite,设置Burpsuite代理服务器,点击“Proxy”然后“Options”
点击“add”添加和手机一样的IP地址和端口,要跟手机上设置的那个端口一致。记得勾上前面的括号。2.设置好了后,在“Proxy”:〉“Intercept”下开启“Interceptison”就可以对安卓APP的网络数据进行抓包了。
三、证书安装
导出Burp证书步骤为:Proxy---Options----import\exportCA
选择第一个,然后next
选择保存的CA路径,文件后缀命名为.cer,非常重要,因为手机只能安装.cer的证书类型,默认的der格式是不能被识别安装的。
找到下载的目录,将证书文件复制到手机存储的根目录。
打开手机设置--其它设置--安全和隐私--更多安全设置--从SD卡安装
到根目录下,找到.cer文件,安装.cer证书,重命名个名字
成功安装后,可以在手机----设置----安全和隐私----更多安全设置----受信任的凭据----用户----看到PortSwigger文件。
至此,安装完成。全部工作完成,可以打开burp,准备抓包了。
一、Git导致文件泄露
由于目前的web项目的开发采用前后端完全分离的架构:前端全部使用静态文件,和后端代码完全分离,隶属两个不同的项目。表态文件使用git来进行同步发布到服务器,然后使用nginx指向到指定目录,以达到被公网访问的目的。在运行gitinit初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件,用来记录代码的变更记录等等。在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码
二、DS_store导致文件泄露
三、SVN导致文件泄露
Subversion,简称SVN,是一个开放源代码的版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上越来越多的控制服务从CVS转移到Subversion。Subversion使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。在服务端是存放着所有受控制数据的Subversion仓库,另一端是Subversion的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。在这两端之间,是通过各种仓库存取层(RepositoryAccess,简称RA)的多条通道进行访问的。这些通道中,可以通过不同的网络协议,例如HTTP、SSH等,或本地文件的方式来对仓库进行操作。SVN漏洞在实际渗透测试过程中,利用到也比较多,由于一些开发管理员疏忽造成,原理类似DS_Store漏洞。我们这里不再进行搭建环境,给大家推荐工具,利用方法如下:
四、WEB-INF/web.xml泄露
WEB-INF是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF主要包含一下文件或目录:/WEB-INF/web.xml:Web应用程序配置文件,描述了servlet和其他的应用组件配置及命名规则。/WEB-INF/classes/:含了站点所有用的class文件,包括servletclass和非servletclass,他们不能包含在.jar文件中/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。/WEB-INF/database.properties:数据库配置文件原因:通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取
ZoomEye支持公网设备指纹检索和Web指纹检索的网站,指纹检索包括应用名称、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据库等。设备指纹包括应用名、版本、开放端口、操作系统、服务名、地理位置等。
1、实战搜索
我们今天主要讲下如何使用他的语法规则去高级搜索,搜索有用信息。
例3:查询开放3389端口的主机:port:3389
例4:查询操作系统为Linux系统的服务器,os:linux
例5:查询公网摄像头:service:”routersetup”
例6:搜索美国的Apache服务器:app:Apachecountry:US后面还可以接city:城市名称
例7:搜索指定ip信息,ip:121.42.173.26
例8:查询有关taobao.com域名的信息,site:taobao.com
例9:搜索标题中包含该字符的网站,title:weblogic
例10:keywords:Nginx
host="oldboyedu.com/"搜索包含有特定字符的URL
title="poweredby"&&os==windows搜索网页标题中包含有特定字符并且系统是windows的网页
案例一:找知乎的真实ip,可以打开知乎网站右击查看源代码,找到Title=”关键字”,直接fofa里面输入:title="知乎.有问题,上知乎"
一串16进制字符,我们需要将其调整为10进制来满足知乎的搜索结果