信息搜集与利用

信息搜集

渗透测试的流程

  1. 确定目标
  2. 信息搜集
  3. 漏洞扫描
  4. 漏洞利用
  5. 形成报告

域名信息的搜集

域名是代替IP地址的方便记忆的字段,域名与IP通过dns解析

whois搜集

whois可以查询到注册人等很多的信息,一下是常用whois网站

https://whois.chinaz.com
http://whoissoft.com
https://whois.cnnic.cn/WelcomeServlet

kali中也有自带的工具可以查询,使用whois命令

whois baidu.com

就可以查到很多信息

有些域名隐藏了这些信息所以可能查询不到

域名反查

可以使用域名反查的工具查询到目标的所有域名注册信息

http://whois.chinaz.com/reverse
https://mwhois.chinaz.com

可以使用邮箱反查,注册人反查,电话反查

第二个是通过域名反查其他注册域名

ICP备案查询

因为国内的所有服务器厂商经过域名注册的时候都要进行ICP备案,所以可以通过ICP备案的信息查询到目标注册人的姓名

一个人只有一个备案号,域名较多会在后面加-1、-2解决,所以如果可以试试猜到目标有多少域名,然后通过备案号查询域名

https://icp.chinaz.com
https://beian88.com

通过公司名获取信息

天眼查可以查询到目标公司的很多信息

https://www.tianyancha.com/

小结

通过以上的方式调查可以获得姓名,邮箱,手机号,邮箱可以用来钓鱼,姓名手机号是社工的基础,可以利用这些信息弄一个自定义的社工字典爆破密码,查询到多个域名可能每个域名的安全等级不一样,可以尝试等级较低的域名,这些域名对应网站可能是部署在同一个服务器上的

子域名信息

子域名就是主域名下的另一个应用或服务的域名,一般是主域名的下一级如www.baidu.com,其中的www就是一个子域名,一般默认是百度首页,域名从右至左等级越来越低

news.baidu.com

map.baidu.com

以上都是百度的子域名百度新闻和百度地图

寻找子域名的方式可以是通过域名进行枚举访问,返回200就是存在,不过一般的子域名都是有特点的,可以通过字典的方式猜解

工具:layer子域名挖掘机

在线网站

https://phpinfo.me/domain/

域名DNS信息

标签信息
AA 记录是最常用类型,将域名指向一个IPv4 地址,如 8.8.8.8
CNAME将域名指向另一个域名地址,与其保持相同解析,如 https://www.dnspod.cn
MX用于邮件服务器,相关参数一般由邮件注册商提供
TXT可填写附加文本信息,常用于域名验证
NS域名服务器记录,可将指定域名交由其他 DNS 服务商解析管理
AAAA将域名指向一个IPv6 地址,如 ffo6:0:0:0:0:0:0:c3

DNS也可以获取很多信息,如真实IP地址等

dbcha.com
sitereport.netcraft.com
jsons.cn/nslookup

也可以使用kali命令

host baidu.com
dig baidu.com

IP信息搜集

DNS解析域名和IP的流程
在这里插入图片描述

使用ping命令可以得到目标IP

ping baidu.com

也可以使用kali中自带的nslookup

nslookup -type="MX"baidu.com
#其中双引号里面的就是dns的包含信息的标签,可以使用默认命令不带type

IP归属地址

http://ipwhois.cnnic.net.cn/

CDN

Content Delivery Network:内容分发网络

简而言之就是如果只有一台主服务器,用户的数量是极其庞大的,那么可以在各个地区弄出一个分服务器,然后用户使用时可以就近就方便原则选择最近的一台分服务器来减少主服务器的负担,只有在这个所谓的分服务器没有内容缓存的时候才会直接访问主服务器
在这里插入图片描述

  1. 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。

  2. LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。

  3. 当授权DNS解析www.a.com时,返回域名CNAMEwww.a.tbcdn.com对应IP地址。

  4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。

  5. LDNS获取DNS返回的解析IP地址。

  6. 用户获取解析IP地址。

  7. 用户向获取的IP地址发起对该资源的访问请求。

如果一个网站使用了cdn服务,那么渗透难度将加大,因为我们所渗透的IP并不是目标的IP,而是一个cdn服务商的IP,cdn上有防火墙的措施使渗透难度加大;所以我们需要找到cdn的IP后面对应的真实IP;

如何去找:

  1. 超级ping

    ping.chinaz.com    //使用这个可以看各个地方的网速,如果一致并都比较小就是使用了cdn,并可以探测到多个IP都是cdn的IP
    nslookup    //kali命令;可以查看目标的cdn服务商
    
  2. 历史DNS

    以前并没有使用cdn的技术,可以使用历史dns解析信息去寻找真实IP

    http://dnshistory.org/
    http://toolbar.netcraft.com/site_report?url=
    https://tools.ipip.net/cdn.php
    https://github.com/vincentcox/bypass-firewalls-by-DNS-history
    
  3. 子域名查询

    不是所有的公司所有业务都使用cdn,可以通过子域名的方式去寻找目标真实IP

  4. 国外主机解析

    国外没有相关cdn的节点就会访问到真实IP

    https://asm.ca.com/zh_cn/ping.php
    http://host-tracker.com/
    http://www.webpagetest.org/
    https://dnscheck.pingdom.com/
    
  5. 其他的方式

    fofa

    censys

    邮件

    手机APP抓包:目标公司有手机软件并没有使用cdn技术

    微信服务号抓包:目标微信服务号没有使用cdn技术

端口服务信息

端口扫描思路和代码实现

查看本机端口号

Windows:netstat -aon|findstr 3306

Linux:netstat -an|gr

其他主机端口探测:

telnet 192.168.142.137 80
wget 192.168.142.137 80
nc -vz 192.168.142.137 80-9000        //可以批量扫描

代码实现扫描

import socket, threading

def TCP_connect(ip, port_number, delay, output):
    TCPsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    TCPsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    TCPsock.settimeout(delay)
    try:
        TCPsock.connect((ip, port_number))
        output[port_number] = 'Listening'
    except:
        output[port_number] = ''

def scan_ports(host_ip, delay):

    threads = []        # To run TCP_connect concurrently
    output = {}         # For printing purposes

    # Spawning threads to scan ports
    # 先扫10000个端口
    for i in range(10000):
        t = threading.Thread(target=TCP_connect, args=(host_ip, i, delay, output))
        threads.append(t)

    # Starting threads
    for i in range(10000):
        threads[i].start()

    # Locking the script until all threads complete
    for i in range(10000):
        threads[i].join()

    # Printing listening ports from small to large
    for i in range(10000):
        if output[i] == 'Listening':
            print(str(i) + ': ' + output[i])

def main():
    host_ip = input("Please enter host IP: ")
    # 超时抛出异常
    delay = int(input("How many seconds the socket is going to wait until timeout: "))   
    scan_ports(host_ip, delay)
    input("Press Any Key to Exit")

if __name__ == "__main__":
    main()

常见的端口及服务

文件共享服务端口
端口号端口说明攻击方向
21/22/69FTP/SFTP文件传输协议允许匿名上传、下载、爆破和嗅探操作
2049NFS服务配置不当
139Samba服务爆破、未授权访问、远程代码和执行
389LDAP目录访问协议注入、允许匿名访问、弱口令
远程连接服务端口
端口号端口说明攻击方向
22SSH远程连接爆破、SSH隧道及内网代理转发、文件爆破
23telnet远程连接爆破、嗅探、弱口令
3389RDP远程桌面连接shift后门(windows server2003一下的系统)爆破
5900VNC弱口令爆破
5632PcAnywhere远程控制服务抓密码代码执行
web应用服务端口
端口号端口说明攻击方向
80/443/8080常见的web服务端口Web攻击、爆破、对应服务器版本漏洞
7001/7002Weblogic控制台Java反序列化、弱口令
8080/8089Jboss/resin/jetty/Jenkins反序列化、控制台弱口令
4848Glassfish控制台弱口令
1352Lotus domino邮件服务弱口令、信息泄露、爆破
10000Webmin-web控制面板弱口令
9090Websphere控制台Java反序列化、弱口令
数据库服务端口
端口号端口说明攻击方向
3306MySQL注入、提权、爆破
1433MSSQL数据库注入、提权、SA弱口令
1521Oracle数据库TNS爆破、注入、反弹shell
5432PostgreSQL数据库爆破、注入、弱口令
27017/27018MongoDB爆破、未授权访问
6379Redis数据库可尝试未授权访问、弱口令爆破
5000Sysbase/DB2数据库爆破、注入
邮件服务端口
端口号端口说明攻击方向
25SMTP邮件服务邮件伪造
110POP3协议爆破、嗅探
143IMAP协议爆破
网络常见协议端口
端口号端口说明攻击方向
53DNS域名系统允许区域传送、DNS劫持、缓存投毒、欺骗
67/68DHCP服务劫持、欺骗
161SNMP协议爆破、搜集目标内网信息
特殊服务端口
端口号端口说明攻击方向
2181Zookeeper服务未授权访问
8069Zabbix服务远程执行、SQL注入
9200/9300ElasticSearch服务远程执行
11211Memcached服务未授权访问
512/513/514Linux Rexec服务爆破、rlogin登录
873Rsync服务匿名访问、文件上传
3690SVN服务SVN泄露、未授权访问
50000SAP Management Console远程执行

工具扫描

NMAP

1)扫描主机(Host Discovery)

2)扫描端口(Port Scanning)

3)探测操作系统、软件版本 (Operating System Detection、Version Detection)

kali中自带namp

使用方式:

#简单扫描
nmap -sP 192.168.142.137
#指定端口或范围扫描:
nmap -p0-65535 192.168.142.137
#探测操作系统:
nmap -O 192.168.142.137
#只进行主机发现,不进行端口扫描
nmap -sn 192.168.40.195/24

IP后面的 /24是什么意思?

掩码的位数。

子网掩码8位,11111111.00000000.00000000.00000000

代表:255.0.0.0(A类IP地址)

子网掩码16位,11111111.11111111.00000000.00000000

代表:255.255.0.0(B类IP地址)

子网掩码24位,11111111.11111111.11111111.00000000

代表:255.255.255.0(C类IP地址)

旁站:和目标网站在同一台服务器但端口不同的其他网站。

C段 :和目标服务器IP处在同一个C段的其它服务器。192.168.25.xx

在线扫描
http://coolaf.com/tool/port

CMS指纹识别

什么是指纹识别

通过关键特征,识别出目标的CMS系统、服务器、开发语言、操作系统、CDN、WAF的类别版本等等。

  • 1、CMS信息:比如Discuz、织梦、帝国CMS、PHPCMS、ECshop等;
  • 2、前端技术:比如HTML5、jquery、bootstrap、Vue、ace等;
  • 3、开发语言:比如PHP、Java、Ruby、Python、C#等;
  • 4、Web服务器:比如Apache、 Nginx、IIS、lighttpd等;
  • 5、应用服务器:比如Tomcat、Jboss、Weblogic、Websphere等;
  • 6、操作系统信息:比如Linux、win2k8、win7、Kali、Centos等;
  • 7、CDN信息:是否使用CDN,如cloudflare、帝联、蓝讯、网宿、七牛云、阿里云等;
  • 8、WAF信息:是否使用WAF,如D盾、云锁、宝塔、安全狗、360等

指纹识别的思路

通过特定的文件代码找到特定的特征

  • 版权信息:在底部,在标题,在源码找

  • 特定文件MD5值

  • 查看网页源代码

  • 通过特定文件分析

    网站目录下都有一个robots.txt文件,用来设置搜索引擎可不可以爬取到该网站的规则

指纹识别的工具

kali中自带的工具whatweb

whatweb -v www.discuz.net

浏览器插件:

whatruns

wappalyzer

在线网站:

http://whatweb.bugscaner.com/
http://finger.tidesec.com/

工具

御剑指纹扫描器(需要.NET Framework)
Test404轻量CMS指纹识别 v2.1

另外kali中可直接安装

cmseek -u www.coolshell.cn   //很强大

CDN 指纹识别

CDN指纹识别思路

1、超级ping

2、历史DNS

3、通过子域名查询IP

4、国外主机解析

5、其他

CDN指纹识别工具

  • ping
  • nslookup
  • 超级ping
  • ldb(load balance detector)

国内:

http://cdn.chinaz.com/

国外:

https://www.cdnplanet.com/tools/cdnfinder/

脚本:

https://github.com/boy-hack/w8fuckcdn/

https://github.com/3xp10it/xcdn

WAF指纹识别

什么是WAF

Web Application Firewall Web 应用防火墙

过滤HTTP/HTTPS的请求

WAF作用

  • SQL Injection (SQLi):阻止SQL注入
  • Cross Site Scripting (XSS):阻止跨站脚本攻击
  • Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
  • Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击
  • Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
  • PHP Code Injectiod:阻止PHP代码注入
  • HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
  • HTTPoxy:阻止利用远程代理感染漏洞进行攻击
  • Sshllshock:阻止利用Shellshock漏洞进行攻击
  • Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
  • Scanner Detection:阻止黑客扫描网站
  • Metadata/Error Leakages:阻止源代码/错误信息泄露
  • Project Honey Pot Blacklist:蜜罐项目黑名单
  • GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

常见WAF厂商

各种云:阿里云、腾讯云、华为云、百度云……

安全狗、宝塔、360、知道创宇、长亭、安恒……

宝塔:

在这里插入图片描述

安全狗:

在这里插入图片描述

腾讯云:

在这里插入图片描述

阿里云:

在这里插入图片描述

WAF指纹识别思路

  • 额外的cookie;
  • 任何响应或请求的附加标头;
  • 响应内容(如果被阻止请求);
  • 响应代码(如果被阻止请求);
  • IP地址(云WAF);
  • JS客户端模块(客户端WAF)

指纹库:

https://github.com/CSecGroup/wafid/blob/master/finger.xml

如何触发拦截

使用特定攻击特征字符串

xsstring = '<script>alert("XSS");</script>' 
sqlistring = "UNION SELECT ALL FROM information_schema AND ' or SLEEP(5) or '"
lfistring = '../../../../etc/passwd' 
rcestring = '/bin/cat /etc/passwd; ping 127.0.0.1; curl google.com' 
xxestring = '<!ENTITY xxe SYSTEM "file:///etc/shadow">]><pwn>&hack;</pwn>'

WAF指纹识别工具

kali自带

wafw00f https://www.12306.cn

namp

nmap www.12306.cn --script=http-waf-detect.nse

sqlmap

sqlmap -u "xxx.com?id=1" --identify-waf

其他

https://github.com/0xInfection/Awesome-WAF

搜索引擎收集信息

google高级搜索Google Hacking

运算符

完整匹配:“”

剔除不需要的内容: -

任意字符:批发 OR 特价

高级语法

功能语法
只搜索某个网站的内容site:zhihu.com
网页的内容包括allintext: Powered by Discuz
intext: Powered by Discuz
标题出现allintitle: 后台登录
intitle: 后台登录
URL地址包括allinurl: admin.php
inurl: index.php?id=1
文件类型指定filetype:pdf

可以结合使用

google语法库:

https://www.exploit-db.com/google-hacking-database
https://github.com/BullsEye0/google_dork_list

网络空间搜索引擎

网络空间包含网络设备如主机,摄像头,打印机等,空间搜索引擎可以搜索到这些设备

最早的网络空间搜索引擎Shodan

shodan.io

付费功能可以在淘宝买会员得到

kali中可以直接使用

入侵示例

ld246.com/article/1544157102767

工具:

https://github.com/jakejarvis/awesome-shodan-queries (语法)
https://github.com/random-robbie/My-Shodan-Scripts (python脚本)

命令:

命令英文解释
alertManage the network alerts for your account管理账户的网络提示
convertConvert the given input data file into a…转换输入文件
countReturns the number of results for a search返回查询结果数量
downloadDownload search results and save them in a…下载查询结果到文件
honeyscoreCheck whether the IP is a honeypot or not检查 IP 是否为蜜罐
hostView all available information for an IP…显示一个 IP 所有可用的详细信息
infoShows general information about your account显示账户的一般信息
initInitialize the Shodan command-line初始化命令行
myipPrint your external IP address输出用户当前公网IP
parseExtract information out of compressed JSON…解析提取压缩的JSON信息,即使用download下载的数据
scanScan an IP/ netblock using Shodan使用 Shodan 扫描一个IP或者网段
searchSearch the Shodan database查询Shodan 数据库
statsProvide summary information about a search…提供搜索结果的概要信息
streamStream data in real-time实时显示

用法示例:

shodan host 172.67.167.88
shodan count apache
shodan count vuln:cve-2019-0708
shodan search --fields ip_str,port,org,hostnames microsoft iis 6.0
shodan stats port:445 SMB
shodan download --limit -1 test net:172.67.167.88/24

其他工具

  • Censys

    censys.io
    

    不收费,收录了证书

  • ZoomEye-钟馗之眼

    网络空间资源测绘,搜索引擎是Xmap

  • Fofa

    fofa.so
    
https://www.knowledgenile.com/blogs/top-osint-tools-2021/
https://securitytrails.com/blog/osint-tools

基于网络空间所有引擎的工具

https://github.com/knownsec/Kunyu
https://github.com/coco413/DiscoverTarget
https://github.com/saucer-man/saucerframe

目录扫描

什么是目录扫描

网站存在一些敏感文件比如配置文件,数据文件,敏感目录等,是不允许访问的,但是如果配置不当等原因,就会造成敏感文件泄露,一般会泄露的信息有数据库的用户名和密码,服务器的用户名密码,网站源码,数据库文件等。

为什么会造成泄露,多数原因是因为配置不当的问题,还有本地文件包含可以读取任意文件等

常见的敏感目录和文件

  • robots.txt:禁止搜索引擎搜索到的目录,可以试试没准可以访问,里面还有cms指纹信息

  • sitemap.xml:指导搜索引擎搜索到的目录

  • 网站的备份文件

  • 后台登录的目录:/admin

  • 安装包(源码):1、非开源的商用的做代码审计找漏洞

    ​ 2、1.zip

  • 文件上传的目录:/upload

  • mysql的管理界面:/phpadmin

  • 程序的安装路径:/install 可以重新安装网站

  • php探针:phpinfo 雅黑php探针

  • 网站的文本编辑器:富文本编辑器,可能存在文件上传等漏洞,可以搜索哪些编辑器存在漏洞

  • Linux:/etc/passwd 包含了账户密码等信息

    ​ /etc/shadow 包含了密码等信息,使用了SHA512加密

    ​ /etc/sudoers 哪些用户可以执行sudo命令

  • MacOS:.DS_Store 目录结构及内容——ds_store_exp

  • .swp文件:Linux系统临时备份的文件

  • 目录穿越

  • tomcat WEB-INF:1、WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.

    ​ 2、WEB-INF/database.properties : 数据库配置文件

    ​ 3、WEB-INF/classes/ : 一般用来存放Java类文件(.class)

    ​ 4、WEB-INF/lib/ : 用来存放打包好的库(.jar)

    ​ 5、WEB-INF/src/ : 用来放源代码(.asp和.php等)

    Java开发中常见,有个字典:

    github.com/BlackFan/WEB-INF-dict/blob/master/web-inf.txt
    

目录扫描思路

直接在域名后拼接

扫描方法:

  • 递归
  • 字典
  • 暴力破解
  • 爬虫
  • fuzz模糊测试

kali中自带:

  • dirb
  • dirbuster

其他:

  • 御剑
  • burp suite
  • dirbrute
  • dirsearch
  • dirmap
  • wfuzz

Git泄露

版本控制系统VCS

在创建一个项目的时候经常需要修改代码,进行版本的更替,那么修改一个代码如果想换回之前的代码就需要再次修改,这时候我们就想能不能创建一个仓库,把修改过的代码按照版本存放在里面,然后修改的时候寻找对应的版本信息就可以修改,也就是早期的本地VCS,但是一个项目往往是多人协作的,也就是说没有只在本地电脑上弄一个仓库是不行的,那个就需要建立一个远程的仓库可以一起存放在上面,这样就有了远程的版本控制系统,也就是集中化的VCS——CVCS,代表有CVS\SVN等,于是就想到远程的服务器损毁了那么整个项目就没了,这时候就要去中心化,采用分布式CVS——DVCS,也就是现在多数的版本控制系统,特点是每一个客户端都保存了其历史的提交记录,然后集中提交给远程仓库,代表有github、gitlab、码云。其中git是使用最广泛的一种协议,git是Linux的创始人开发的。

在这里插入图片描述

为什么会导致泄露

git的存放机制是,先在工作区创建文件,编辑后放入暂存区,保存后放入git分支master(在本地仓库),接着提交到远程仓库

git init      //将仓库交给git管理
git add 1.txt    //添加到暂存区
git commit -m "这里是注释"    //交给git分支并添加注释
git push      //交给远程仓库

在这里插入图片描述

如果把私有仓库/隐私文件提交到了github,或者部署项目的时候,不小心把 .git 文件一起打包进去,放到web网站的目录下,就会造成git泄露,通过仓库可以获得的有用的信息有哪些:

  • 编译的.class、.java等的源文件等
  • .git/logs/HEAD:存储了git的历史log信息,可以找到历史的commit项
  • .git/index:缓存git add的文件,暂存区
  • .git/refs/stash:使用git stash命令时把代码存入缓存区
  • .git/refs/heads/master:记录了master的commit的hash,拿到hash可以把最后一个版本的所有内容给还原出来。
  • .git/objects/pack/.pack:压缩文件

GitHub搜索技巧

  • kali in:file:搜索文件中包含kali的代码
  • kali in:path :搜索路径中包含kali的代码
  • kali in:path,file:搜索路径、文件中包含kali的代码
  • shodan language:python:搜索关键字shodan,语言为python的代码
  • filename:config.php language:php:搜索文件名为config.php,且语言为php
  • kali topics:>=5 :标签数量大于等于5的
  • kali size:<1000 :文件小于1KB的
  • kali stars:10…50:star大于10小于50的
  • kali pushed:>2021-08-15:搜索在2021年8月15日之后提交的
  • kali pushed:2021-07-01…2021-08-01 :搜索在此区间
  • kali created:>=2021-06-01 :创建时间
  • kali pushed:<2021-08-01 -language:java :搜索在2020年8月1日前push代码且排除java语言

Git泄露的利用方式

找到.git文件
  • 目录扫描
  • robots.txt
  • 搜索引擎搜索:“intitle:Index of /.git”
把.git下载到本地

工具:

最常用的:https://github.com/BugScanTeam/GitHack——python GitHack.py xxx.com/.git/

https://github.com/lijiejie/GitHack

https://github.com/wangyihang/githacker

https://github.com/WangWen-Albert/JGitHack:图形化界面

用git的命令获取内容
  • git log:获取提交记录
  • git reset --hard [log hash]:恢复到某个版本
  • git diff:对比版本差异
  • 自动化工具:https://github.com/gakki429/Git_Extract
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值