本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
CDN(Content Delivery Network,内容分发网络)是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。
CDN 绕过就是要绕过 CDN 服务,找到其主服务器真实 ip。
国内测速:
https://tool.chinaz.com/speedtest
傻蛋(shodan):
https://www.shodan.io
X 情报社区:
https://x.threatbook.com
Ping 检测:
https://ping.chinaz.com
check ip and location:
https://get-site-ip.com
fuckcdn:
https://github.com/Tai7sy/fuckcdn
w8fuckcdn:
https://github.com/boy-hack/w8fuckcdn
实战秒杀 BC 下的 CDN 节点:
https://mp.weixin.qq.com/s?__biz=MzA5MzQ3MDE1NQ==&mid=2653939118&idx=1&sn=945b81344d9c89431a8c413ff633fc3a&chksm=8b86290abcf1a01cdc00711339884602b5bb474111d3aff2d465182702715087e22c852c158f&token=268417143&lang=zh_CN#rd
网站架构搭建的习惯有以下几种:
示例:
www.test.com/dir 与 www.test.com/tql 是两个不同页面或网站
示例:
www.test.com:80 与 www.test.com:8080 是两个不同网站
示例:
www.test.com 与 blog.test.com 是两个不同网站
示例:
www.test.com 与 www.example.com 是同一个网站
示例:
在 192.168.10.1 服务器上,搭建了 www.a.com 与 www.b.com 等多个不同站点。
示例:
在 192.168.10.1 服务器上,搭建了 www.a.com 与 www.b.com 等多个不同站点。
在 192.168.10.2 服务器上,搭建了 www.c.com 与 www.d.com 等多个不同站点。
相关资源:
同 ip 网站查询:https://www.webscan.cc/
WAF,Web Application Firewall,Web 应用防护系统,也称为:网站应用级入侵防御系统
可以使用 WAFw00f 工具识别 WAF。
工具链接:https://github.com/EnableSecurity/wafw00f
Kali 已经集成了 WAFw00f 工具。
WAF 识别对之后的绕过很有帮助。
在安全测试中,若 WEB 无法取得进展或无 WEB 的情况下,需要借助 APP 或其他资产在进行信息收集,从而开展后续渗透。
apk 反编译提取信息
使用反编译工具,尝试获取包里的源码、url 信息等。
配合抓包工具获取更多信息
使用 burp suite 设置代理,查看 history 记录。或 wireshark 抓包分析。
第三方相关探针技术
钟馗之眼:https://www.zoomeye.org/
fofa:https://fofa.info/
傻蛋:https://www.shodan.io/
站长工具:https://tool.chinaz.com/
Nmap
服务接口相关探针
相关资源:
https://sct.ftqq.com/login
https://crt.sh
https://dnsdb.io
https://tools.ipip.net/cdn.php
https://github.com/bit4woo/teemo
https://securitytrails.com/domain/www.baidu.com/history/a
示例:GitHub 监控代码
# Title: wechat push CVE-2020
# Date: 2020-5-9
# Exploit Author: weixiao9188
# Version: 4.0
# Tested on: Linux,windows
# cd /root/sh/git/ && nohup python3 /root/sh/git/git.py &
# coding:UTF-8
import requests
import json
import time
import os
import pandas as pd
time_sleep = 60 # 每隔 20 秒爬取一次
while(True):
headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"}
# 判断文件是否存在
datas = []
response1 = None
response2 = None
if os.path.exists("olddata.csv"):
# 如果文件存在则每次爬取 10 个
df = pd.read_csv("olddata.csv", header=None)
datas = df.where(df.notnull(), None).values.tolist() # 将提取出来的数据中的 nan 转化为 None
requests.packages.urllib3.disable_warnings()
response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE2020&sort=updated&per_page=10", headers=headers1, verify=False)
response2 = requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&per_page=10", headers=headers1, verify=False)
else:
# 不存在爬取全部
datas = []
requests.packages.urllib3.disable_warnings()
response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE2020&sort=updated&order=desc", headers=headers1, verify=False)
response2 = requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&order=desc", headers=headers1, verify=False)
data1 = json.loads(response1.text)
data2 = json.loads(response2.text)
for j in [data1["items"], data2["items"]]:
for i in j:
s = {"name": i['name'], "html": i['html_url'], "description": i['description']}
s1 = [i['name'], i['html_url'], i['description']]
if s1 not in datas:
print(s1)
情欲意识,尽属妄心消杀得,妄心尽而后真心现。
——《菜根谭》(明)洪应明