网安实训Day2

一、DNS解析步骤

1.当用户在浏览器中输入www.baidu.com域名访问网站时,先检查本地hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 

2.若没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 

 3.若没有没有相应的网址映射关系,客户机发送查询请求至本地DNS服务器,如果该域名包含在服务器的本地配置区域资源中,则返回解析结果给客户机,完成域名解析。 

4.如果本地DNS服务器本地区域文件与缓存解析都失效,本地DNS服务器就把请求发至根DNS服务器,根DNS服务器收到请求后会返回一个负责.com顶级域名服务器的一个IP。

5.本地DNS服务器收到IP信息后,将会联系负责.com域的服务器。这台服务器收到请求后,返回一个管理baidu.com域的下一级DNS服务器ip给本地DNS服务器。

6.当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,返回查询IP地址给本地DNS服务器

7.本地DNS服务器缓存该IP地址映射并将IP地址发送给客户机
提示:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询。

二、绕过CDN查找主机真实IP的方法

(一)验证CDN

1.使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:

多个地点Ping服务器,网站测速 - 站长工具

网站测速工具_超级ping _多地点ping检测 - 爱站网

http://ce.cloud.360.cn/

2.使用 nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN

(二)绕过CDN

1.查询历史DNS记录

查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:

https://dnsdb.io/zh-cn/ ###DNS查询

https://x.threatbook.cn/ ###微步在线

http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询

http://viewdns.info/ ###DNS、IP等查询

https://tools.ipip.net/cdn.php ###CDN查询IP

2.查询子域名

很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个 C 段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实 IP

常用的子域名查找的方法和工具:

(1)微步在线https://x.threatbook.cn/

(2)Dnsdb查询法https://dnsdb.io/zh-cn/

(3)Google搜索,Google site:baidu.com -www 就能查看除 www 外的子域名

3.网络空间引擎搜索

常见的有以前的钟馗之眼,shodanfofa搜索

4.利用SSL证书寻找真实IP

SSL证书可以暴露真实IP。通过扫描互联网获取SSL证书,进而找到服务器的真实IP,常用工具:Censys:用于搜索联网设备信息,扫描整个互联网。

假如你在xyz123boot.com上托管了一个服务,原始服务器IP是136.23.63.44。在Censys Search上搜索parsed.names:xyz123boot.com,可以找到该域名的证书,并获取其真实IP。

5.利用HTTP标头寻找真实原始IP

借助 SecurityTrails 、CensysSearch这样的平台,任何人都可以在茫茫的大数据搜索到自己的目标,甚至可以通过比较 HTTP 标头来查找到原始服务器。

6.利用网站返回的内容寻找真实原始 IP

如果原始服务器 IP 也返回了网站的内容,那么可以在网上搜索大量的相关数据。浏览网站源代码,寻找独特的代码片段。在 JavaScript 中使用具有访问或标识符参数的第三方服务(例如 Google Analytics,reCAPTCHA)是攻击者经常使用的方法。

7.使用国外主机解析域名

国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实 IP

8.漏洞查找

(1)目标敏感文件泄露,例如:phpinfo 之类的探针、GitHub 信息泄露等

(2)XSS 盲打,命令执行反弹 shell,SSRF 等。

(3)无论是用社工还是其他手段,拿到了目标网站管理员在 CDN 的账号,从而在从 CDN 的配置中找到网站的真实 IP

9.网站邮件订阅查找

RSS 邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了

三、子域名信息收集常用手段

子域名收集通常分为两种方式,分别为被动收集和主动收集。

(一)被动收集是指,在不与目标系统进行交互的情况下,通过第三方进行收集。这种方式有着明显的优势,因为不需要和目标系统进行交互,所以不会对目标系统造成任何影响,更不会触发任何安全产品的告警

主要方式有:信息泄露、搜索引擎、网络空间测绘引擎、证书透明、第三方DNS服务、AS号码查询、SAN收集、使用公共数据集

(二)主动收集是指,通过与目标系统进行交互,对子域名进行收集。因为需要和目标系统进行交互,很可能出现高频访问等情况,有触犯安全产品告警的风险。

主要方式有:字典枚举、置换扫描、域传送漏洞、DNSSEC、DNS缓存

四、Nmap全端口扫描(皮卡丘靶场)

SYN半开扫描是指在扫描时只建立TCP连接的第一步,即SYN包,而不完全建立连接。其基本原理是利用TCP三次握手机制发送一个SYN包给目标主机,如果收到SYN/ACK包,说明目标主机开放了该端口;若收到RST包,说明该端口关闭;若没有收到响应,表示该端口被过滤或或防火墙拦截。因为不完全建立TCP连接,也就不容易被目标主机的安全设备发现。

跳过主机存活检测扫描使用常见:-p0完全跳过Nmap发现阶段。通常Nmap在进行高强度的扫描时用它确定正在运行的机器。 默认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。用-P0禁止 主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。所以如果在命令行指定一个B类目标地址空间(/16), 所有 65,536 个IP地址都会被扫描。 -P0的第二个字符是数字0而不是字母O。 和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。

五、dirmap目录探测工具实践(pikachu靶场)

可能遇到的问题:在使用命令python dirmap.py -i http://127.0.0.1/pikachu -lcf时会有许多块缺失,使用pip install 模块名下载即可,但是有俩个模块imp和progressbar要注意,imp在高版本python已被弃用,改为了importlib,因此要pip install importlib,然后把dirmap-master\lib\core目录下的option.py中import的imp改为imporlib即可,progressbar要pip install progressbar2,不然很可能报错:

Traceback (most recent call last):

  File "D:\tools\dirmap-master\lib\controller\engine.py", line 44, in scan

    bruter(target)

  File "D:\tools\dirmap-master\lib\controller\bruter.py", line 586, in bruter

    bar.log.start(tasks.task_length)

TypeError: ProgressBar.start() takes 1 positional argument but 2 were given

使用命令python dirmap.py -i http://127.0.0.1/pikachu -lcf对靶场扫描结果

Dirmap每次扫描条数不一样的原因:因为目标系统动态性(有动态生成内容或随机元素)、网络环境不稳定(延迟波动致请求超时失败或服务器响应时间不一致)以及扫描策略和字典变化等原因

Dirmap高级应用:自定义dirmap配置,开始探索dirmap高级功能,暂时采用加载配置文件的方式进行详细配置,不支持使用命令行参数进行详细配置!编辑项目根目录下的dirmap.conf,进行配置

#递归扫描处理配置

[RecursiveScan]

#是否开启递归扫描:关闭:0;开启:1

conf.recursive_scan = 0

#遇到这些状态码,开启递归扫描。默认配置[301,403]

conf.recursive_status_code = [301,403]

#设置排除扫描的目录。默认配置空。其他配置:e.g:['/test1','/test2']

#conf.exclude_subdirs = ['/test1','/test2']

conf.exclude_subdirs = ""

#扫描模式处理配置(4个模式,1次只能选择1个)

[ScanModeHandler]

#字典模式:关闭:0;单字典:1;多字典:2

conf.dict_mode = 1

#单字典模式的路径

conf.dict_mode_load_single_dict = "dict_mode_dict.txt"

#多字典模式的路径,默认配置dictmult

conf.dict_mode_load_mult_dict = "dictmult"

#爆破模式:关闭:0;开启:1

conf.blast_mode = 0

#生成字典最小长度。默认配置3

conf.blast_mode_min = 3

#生成字典最大长度。默认配置3

conf.blast_mode_max = 3

#默认字符集:a-z。暂未使用。

conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"

#默认字符集:0-9。暂未使用。

conf.blast_mode_num = "0123456789"

#自定义字符集。默认配置"abc"。使用abc构造字典

conf.blast_mode_custom_charset = "abc"

#自定义继续字符集。默认配置空。

conf.blast_mode_resume_charset = ""

#爬虫模式:关闭:0;开启:1

conf.crawl_mode = 0

#解析robots.txt文件。暂未实现。

conf.crawl_mode_parse_robots = 0

#解析html页面的xpath表达式

conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"

#是否进行动态爬虫字典生成:关闭:0;开启:1

conf.crawl_mode_dynamic_fuzz = 0

#Fuzz模式:关闭:0;单字典:1;多字典:2

conf.fuzz_mode = 0

#单字典模式的路径。

conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"

#多字典模式的路径。默认配置:fuzzmult

conf.fuzz_mode_load_mult_dict = "fuzzmult"

#设置fuzz标签。默认配置{dir}。使用{dir}标签当成字典插入点,将http://target.com/{dir}.php替换成http://target.com/字典中的每一行.php。其他配置:e.g:{dir};{ext}

#conf.fuzz_mode_label = "{ext}"

conf.fuzz_mode_label = "{dir}"

#处理payload配置。暂未实现。

[PayloadHandler]

#处理请求配置

[RequestHandler]

#自定义请求头。默认配置空。其他配置:e.g:test1=test1,test2=test2

#conf.request_headers = "test1=test1,test2=test2"

conf.request_headers = ""

#自定义请求User-Agent。默认配置chrome的ua。

conf.request_header_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"

#自定义请求cookie。默认配置空,不设置cookie。其他配置e.g:cookie1=cookie1; cookie2=cookie2;

#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"

conf.request_header_cookie = ""

#自定义401认证。暂未实现。因为自定义请求头功能可满足该需求(懒XD)

conf.request_header_401_auth = ""

#自定义请求方法。默认配置get方法。其他配置:e.g:get;head

#conf.request_method = "head"

conf.request_method = "get"

#自定义每个请求超时时间。默认配置3秒。

conf.request_timeout = 3

#随机延迟(0-x)秒发送请求。参数必须是整数。默认配置0秒,无延迟。

conf.request_delay = 0

#自定义单个目标,请求协程线程数。默认配置30线程

conf.request_limit = 30

#自定义最大重试次数。暂未实现。

conf.request_max_retries = 1

#设置持久连接。是否使用session()。暂未实现。

conf.request_persistent_connect = 0

#302重定向。默认False,不重定向。其他配置:e.g:True;False

conf.redirection_302 = False

#payload后添加后缀。默认空,扫描时,不添加后缀。其他配置:e.g:txt;php;asp;jsp

#conf.file_extension = "txt"

conf.file_extension = ""

#处理响应配置

[ResponseHandler]

#设置要记录的响应状态。默认配置[200],记录200状态码。其他配置:e.g:[200,403,301]

#conf.response_status_code = [200,403,301]

conf.response_status_code = [200]

#是否记录content-type响应头。默认配置1记录

#conf.response_header_content_type = 0

conf.response_header_content_type = 1

#是否记录页面大小。默认配置1记录

#conf.response_size = 0

conf.response_size = 1

#是否自动检测404页面。默认配置True,开启自动检测404.其他配置参考e.g:True;False

#conf.auto_check_404_page = False

conf.auto_check_404_page = True

#自定义匹配503页面正则。暂未实现。感觉用不着,可能要废弃。

#conf.custom_503_page = "page 503"

conf.custom_503_page = ""

#自定义正则表达式,匹配页面内容

#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"

conf.custom_response_page = ""

#跳过显示页面大小为x的页面,若不设置,请配置成"None",默认配置“None”。其他大小配置参考e.g:None;0b;1k;1m

#conf.skip_size = "0b"

conf.skip_size = "None"

#代理选项

[ProxyHandler]

#代理配置。默认设置“None”,不开启代理。其他配置e.g:{"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}

#conf.proxy_server = {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}

conf.proxy_server = None

#Debug选项

[DebugMode]

#打印payloads并退出

conf.debug = 0

#update选项

[CheckUpdate]

#github获取更新。暂未实现。

conf.update = 0

六、Fscan实践(pikachu靶场)

使用命令fscan.exe -h 127.0.0.1结果

七、插件安装成功截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值