web安全测试1-信息收集(完整名请用base64解码):c2VjNTQyIFdFQiBBUFAgUEVORVRSQVRJT04gVEVTVElORyAmIEVUSElDQUwgSEFDS0lORw==

信息收集

威胁建模:https://github.com/OWASP/wstg/blob/master/document/2-Introduction/README.md#Threat-Modeling
代码审计 Code review
安全测试方法
Static Application Security Testing (SAST) 静态
Dynamic Application Security Testing (DAST) 动态
Interactive Application Security Testing (IAST) 交互 :https://portswigger.net/burp/documentation/desktop/tools/infiltrator
Out-of-Band Application Security Testing (OAST) 带外 :https://portswigger.net/blog/oast-out-of-band-application-security-testing

  • 威胁建模
    https://csrc.nist.gov/pubs/sp/800/30/r1/final
    https://www.sei.cmu.edu/blog/threat-modeling-12-available-methods/

  • 代码审计
    建议看黑帽大会:《Next-Level Bug Hunting - Code Edition》进行心法辅助

  • 静态应用程序安全测试 (SAST)
    自动化代码审查工具或静态分析工具

  • 动态应用程序安全测试 (DAST)
    渗透测试与漏扫工具

  • 自动化与手动渗透同时进行
    CSRF与逻辑漏洞等无法通过自动化来发现
    黑盒测试不代表真正意义上的攻击行为,白盒测试能加速安全评估的进程,而现实往往介于黑盒与白盒之间
    企业应该在内部使用白盒来喂养安全团队的“代码感”,天天接触就能养成漏洞挖掘的意识,相互成就相互进步

  • 方法论
    https://owasp.org/www-project-web-security-testing-guide/
    http://www.pentest-standard.org/index.php/Main_Page

  • DAST Web扫描器
    Nessus web扫描模块
    ZAP Active Scan
    Arachni Scanner
    Nikto
    Acunetix Vulnerability Scanner
    BurpSuite Pro Active/Live Scan
    Fortify WebInspect
    HCL AppScan
    Qualys WAS
    Rapid7 AppSpider
    Whitehat Sentinel
    Invivti (Formerly Netsparker)
    扫描器对自定义的web应用无效,在检测漏洞方面永远无法与网络漏洞扫描器(Nessus)相媲美

  • 浏览器选择
    Chrome,Chromium,Firefox
    Chromium 是 Chrome 的完全开源版本(Chrome 包含非开源元素)

  • 代理拦截
    https://portswigger.net/burp
    https://www.zaproxy.org/docs/desktop/paros/
    Burp Enterprise 更多意义被应用于SDLC而非渗透中
    Dafydd Stuttard (@PortSwigger):burp工具以及《Web 应用程序黑客手册》(Wiley 出版社)的第一版和第二版的作者都是他,而第三版的“书”则是burp官网的web安全靶场
    burp auditing 审计(逐渐代替扫描一词)代指:主动扫描加漏洞识别

  • 开源情报(OSINT)
    OSINT:可理解为渗透阶段的信息收集,指搜索、收集和分析来自公共来源的数据(包括爬取等一切公网的数据)的过程
    https://github.com/WebBreacher/osinttools

  • web安全与OSINT
    https://mp.weixin.qq.com/s/NQDODVxscZADNhy-Qqb0GQ

  • 搜索引擎
    bing,DuckDuckGo ,google
    信息茧房:基于个人数据对搜索结果进行操纵。在开源情报(OSINT)时,不同的人执行相同的搜索可能会得到不同的结果。已退出登录或使用隐私/隐身模式搜索,也可能出现不同的结果

  • 搜索引擎操作符
    https://duckduckgo.com/duckduckgo-help-pages/results/syntax
    https://support.google.com/websearch/answer/2466433?hl=en
    https://learn.microsoft.com/en-us/previous-versions/bing/search/ff795620(v=msdn.10)
    https://support.microsoft.com/zh-cn/topic/高级搜索关键字-ea595928-5d63-4a0b-9c6b-0b769865e78a
    https://duckduckgo.com/bangs

  • Google Dorks
    Google Dorks,简称 Dorks,针对性编写的搜索规则语法,用于返回针对性的结果。
    Google Hacking Database (GHDB):Offensive Security 维护的 Dorks(未明确指出,则默认为 Google 编写)
    https://www.exploit-db.com/google-hacking-database

  • OSINT 社交媒体

  • OSINT theHarvester或Maltego或SpiderFoot
    https://github.com/laramies/theHarvester
    此类工具综合大多数第三方数据库平台,通常都需要免费或付费的API
    https://www.intel471.com/ 收购SpiderFoot

  • 虚拟主机发现
    HTTP 1.1版本引入虚拟主机:域名来区服务器上的不同Web应用程序
    虚拟主机发现:主动爆破DNS服务器;被动查询第三方DNS数据库;空间测绘;证书透明度数据库;Web 服务器配置等
    并非所有DNS记录都会映射到 Web 应用程序(或虚拟主机上的应用还未部署):浏览web跟目录,强制浏览等即可识别虚拟主机关联的web应用程序

  • DNS
    53 UDP传输小于512字节的数据已成为历史(DNS扩展机制 EDNS 允许通过 UDP 传输高达 4096 字节),53 TCP传输大于512字节的数据,区域传输指下载给定域或子域的DNS区域或名称数据库
    区域传输:在很多情况下,数据量是大于4096 字节的,53 TCP端口的区域传输功能的业务无法关闭

  • 主动查询 DNS 服务器
    大部分情况下区域传输不可用:辅助 DNS 服务器从主 DNS 服务器获取镜像数据。如果成功,则下载整个 DNS 镜像数据。除非组织将 DNS 服务委托给不注重安全的ISP,否则无法公开访问。
    dig 区域传输的语法:$ dig demo.org -t axfr
    通常在虚拟主机发现中大量使用的是反向 DNS 扫描 (PTR)和 DNS 暴力破解扫描(字典)。

  • 反向 DNS 扫描
    许多 DNS 管理员(和 DNS 工具)都会为每个正向记录 (A) 创建反向记录 (PTR) :
    A: www.demo.org -> 192.168.1.1
    PTR: 192.168.1.1 -> demo.test.org
    对目标资产拥有的 IP 地址执行 WHOIS 查询:识别目标组织拥有的公共网段
    然后对每个 IP 地址或网段执行反向 DNS 查询:PTR 记录,很多工具都支持反向查询
    $dnsrecon.py -r 192.168.1.0/24

  • DNS 暴力破解扫描
    大多数公共 DNS 服务器性能都很高,大多数客户端不会注意到大规模 DNS 暴力扫描(持续很多天的高并发)。但是不要指向企业自己的DNS服务器,性能可能没那么高(CDN与waf同理,扫不动往往不是你发了poc,而是速度太快被归于DOS攻击而拉黑)
    https://github.com/darkoperator/dnsrecon/blob/master/dnsrecon/data/subdomains-top1mil.txt
    子域名暴力破解词表的来源之一:对Alexa Top 100 万的网站进行了区域传输测试(成功率 6%,获取到镜像数据 566MB)
    https://github.com/ethicalhack3r/ethicalhack3r.github.io/blob/master/_posts/2013-08-08-zone-transfers-on-the-alexa-top-1-million-part-2.markdown
    DNS 侦察的部分工具列表:
    nslookup
    dig
    Nmap
    DNSRecon

  • nslookup
    nslookup符合:living off the land(大陆上生活或就地取材),适用于所有操作系统,适合盲注,所谓的不出网环境通常也允许 DNS 解析

  • dig
    dig 客户端是 BIND 的一部分:BIND 是开源软件,它是互联网域名系统 (DNS) 协议的具体实现。BIND命名源于Berkeley Internet Name Domain 伯克利互联网名称域(源于加州大学伯克利分校)
    https://www.isc.org/bind/
    $ dig @<nameserver> example.com options:基础语法
    -t mx:mx记录
    –t axfr:区域传输
    -x:PTR反向查找
    dig @名称服务器 version.bind chaos txt:查询域名服务器上的 BIND 版本

  • Nmap DNS NSE 脚本
    $ ls /usr/local/share/nmap/scripts/dns*

  • DNSRecon
    https://github.com/darkoperator/dnsrecon/wiki

  • DNS 第三方数据源
    https://www.domaintools.com/platform :以全球阵列“探针”的形式被动的采集网络流量中的DNS请求数据收集到日志里(全球所有牛逼的SOC分析公司都与其有合作,数据超1000亿条)
    https://dnsdumpster.com/ :第三方数据源(已OSINT的手法来采集,而非爆破与枚举DNS记录)
    https://hackertarget.com/domain-profiler/

  • HTTPS 证书虚拟主机发现
    通用名称和 DNS 名称值代表与 Web 应用程序关联的虚拟主机名
    通过 HTTPS 访问 IP 地址有时也会显示带有 DNS 名称的证书
    证书颁发机构会将已购买证书的详细信息放入日志中,证书日志的数据库是公开的可以通过域名进行查询
    证书透明度:https://certificate.transparency.dev/howctworks/

  • HTTP 语法与语义
    所谓的SPDY, HTTP/2, QUIC, HTTP/3,HTTP/1.1
    以上所有协议在语义上一直没有变化:方法、状态码、头部字段(元数据)和主体(payload)等,变化的只是语法。此认知只需要学一个就能掌握所有。
    https://blog.cloudflare.com/zh-cn/http-3-from-root-to-tip/

  • HTTP/2
    二进制:采用二进制帧结构,在网络传输过程中数据不再是纯文本
    推送:传统的 HTTP 协议会先请求一个URL,然后服务器响应数据。推送功能则会在发送URL之前,主动响应数据
    多路复用:单TCP连接传输,请求可以并行,响应也并发接收和解析
    协议与加密无关:HTTP/2 默认不加密

  • QUIC - HTTP/3
    80端口不验证服务器证书:QUIC 使用 UDP 端口 80 和 443,两端口都已加密
    QUIC 本质上是基于 UDP 的 HTTP/2:类似于基于 UDP 实现的 TCP+TLS+HTTP/2

  • HTTP 语义
    HTTP请求:HTTP 方法/动词;URI/资源;HTTP 版本;HTTP 请求体;HTTP标头等
    HTTP响应:标头;响应体等

  • HTTP方法/动词
    安全方法:GET、HEAD、OPTIONS(指只读,不改变服务器状态)
    不安全的方法:POST、PUT、DELETE
    无关紧要的恐龙名词 Idempotent 幂等:已提出更多的微乎其微的恐龙名词的方式来告诉你,抓住“关键”即可,其他都是垃圾认知
    https://developer.mozilla.org/en-US/docs/Glossary/Idempotent
    如何区分垃圾的恐龙名词与术语:http://www.yinwang.org/blog-cn/2018/11/23/grammar

  • HTTP 请求方法:GET
    通过 HTTPS 传输后的安全隐患:URI 经常被浏览器显示(计算机取证),存储在明文书签中(浏览器书签收藏),并被用户代理历史记录(用户代理指浏览器)和中间应用程序(代理,即你通过VPN或小猫咪的服务器)记录。
    示例:https://www.demo.com?token=fjlsakj.fjdlskajf.fjask (你的JWT认证已被全世界监听)
    URI:https://datatracker.ietf.org/doc/html/rfc3986

  • HTTP 请求:GET 请求和 URI
    URL编码问题(或者说所有的所谓的编码与绕过问题):比如 / 符号,如果它不编码就会变成语义时,你想让它成为数据,则需要进行编码(比如请求 http://demo.com//1.zip 如果//1.zip不编码,你测的是服务器(CDN或waf)对于 //这种不正常的语义是否存在漏洞(效果是否等于 /1.zip)。而/%2F 你测的是服务器接收/%2F之后,将其传入到了代码块中,对于%2F这个数据是否存在什么漏洞(1.zip 禁止访问,可%2F1.zip允许绕过?) )
    https://datatracker.ietf.org/doc/html/rfc3986#section-2.4
    总结:在正常范围之内或之外进行概念验证

  • HTTP 请求方法:POST
    Content-Type: text/plain
    Content-Type: application/x-www-form-urlencoded
    Content-Type: application/json

  • HTTP 请求:动词篡改和 GET/POST 方法互换
    CSRF漏洞常用技巧
    绕过waf技巧

  • HTTP 请求方法:HEAD
    HEAD:速度非常快,适用于简单的 HTTP 响应头评估(例如,不带 HttpOnly 标志的 Cookie)。
    Web 服务器是否被DOS打死了,可以试试 HEAD 是否还具有响应能力
    curl --head或-I

  • HTTP 请求方法:TRACE
    XST攻击:跨站追踪(Cross-Site Tracing,简称 TRACE)绕过 cookie 的 HttpOnly 限制的 JavaScript XSS 攻击访问 cookie 数据的方法。
    https://www.cgisecurity.com/whitehat-mirror/WH-WhitePaper_XST_ebook.pdf
    响应包漏洞示例:

TRACE / HTTP/1.1
Host: *
Cookie:demo=钵钵鸡
  • HTTP 请求方法:CRUD(创建、读取、更新、删除)
    创建:POST(或PUT)
    读取:GET
    更新:POST, PUT, PATCH
    删除:DELETE
    RESTful API的HTTP方法:https://restfulapi.net/http-methods/

  • HTTP 请求:User-Agent 用户代理
    User-Agent 用于标识 HTTP 请求中的 Web 客户端,一般情况下,User-Agent 指的是浏览器
    使用浏览器之外的工具直接与 Web 服务器和应用程序交互时,HTTP 用户代理都可能暴露出我们并非普通用户,尤其是在不断切换UA时。

  • HTTP 请求:Referer
    如果应用程序使用 GET 请求传递敏感信息,则存在通过 Referer 意外泄露信息的风险。
    Referer 字段中包含敏感信息:比如从内部应用点击外部链接时不显示 Referer 字段。
    https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Referer_header:_privacy_and_security_concerns

  • HTTP 请求:Cookie
    应用程序建立/跟踪会话的一种方式是使用 HTTP Cookie。

  • HTTP响应
    Status Codes: 状态码
    Server Header:受代理服务器等影响
    Cache-Control Header:缓存可能会阻止请求的实际发送或服务器无法提供新内容
    Cache-Control:影响缓存最重要的标头
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control
    Set-Cookie Header:通常与会话管理相关

  • 加密故障
    https://owasp.org/Top10/2021/A02_2021-Cryptographic_Failures/index.html

  • HTTPS
    TLS 1.0或SSL 3.0 1996年
    TLS 1.2 2008年
    TLS 1.3 2018年

  • HTTPS SSL/TLS 握手
    https://www.cloudflare.com/zh-cn/learning/ssl/what-happens-in-a-tls-handshake/

  • 密码套件:保密性、完整性和端点认证
    用于完整性验证的多个加密算法叫密码套件,TLS 协商是找到一个双方都支持的密码套件
    非对称(又称公钥)密码系统用于端点认证,并安全地协商会话密钥,该会话密钥是对称密码系统的共享密钥,用于加密传输中的大量数据
    非对称:RSA, DH, DSA, ECDH, ECDSA
    对称: DES, TDES/3DES, AES
    哈希: MD5, SHA, SHA256, SHA384

  • 公钥/证书和证书颁发机构
    公钥或非对称加密系统:源认证和密钥交换/协商
    服务器通过证书来传输公钥(已数字签名的方式来共享公钥)
    数字签名:使用‌私钥‌对数据进行签名(需要公钥来解)
    浏览器:使用‌预装在系统或浏览器中的CA公钥‌(来自受信任的根证书)对签名进行解密(拿到共享公钥)
    拦截代理burp或zap:证书是由 Burp 或 ZAP 动态生成的,而浏览器并未默认信任这些证书
    总结:当你安装证书的时候(或木马帮你安装),已经默认信任其数字签名(解密HTTPS,其实是拦截代理与安装证书来进行的流量解密,流量复制到所有网络侧探针,类似burp或zap那一套)

  • 弱传输层安全测试
    通过测试传输加密的有效性来确保安全
    https://github.com/OWASP/wstg/blob/master/document/4-Web_Application_Security_Testing/09-Testing_for_Weak_Cryptography/01-Testing_for_Weak_Transport_Layer_Security.md

  • 版本和密码套件
    服务器无法配置成只允许使用当前支持的加密套件的 TLS 1.3:除非所有的客户端都同步支持

  • Nmap 评估 HTTPS
    nmap -p 443 --script=ssl-enum-ciphers www.demo.com
    本地编译nmap最新版:已apt的形式安装的软件通常都是比较旧的,以及附带的ssl-enum-ciphers脚本也是旧的。
    https://nmap.org/nsedoc/scripts/ssl-enum-ciphers.html

  • testssl.sh 评估 HTTPS
    https://github.com/testssl/testssl.sh
    ./testssl.sh <HOSTNAME>
    很多工具依赖 OpenSSL 来收集 HTTPS 配置的详细信息,如果 OpenSSL 未编译为支持某些协议(比如SSLv2 和 SSLv3),则工具无法检测与识别这些协议
    testssl.sh 工具可以在不使用 OpenSSL 的情况下执行所有检查

  • Qualys SSL Labs
    在线网站评估HTTPS:https://www.ssllabs.com/ssltest/ (打钩,已非公开的形式生成评估报告)

  • web服务器指纹
    nday评估
    https://github.com/OWASP/wstg/blob/master/document/4-Web_Application_Security_Testing/01-Information_Gathering/02-Fingerprint_Web_Server.md

  • 端口扫描
    谷歌搜软件版本漏洞:versions,vulnerabilities
    漏洞利用网站或工具搜:ExploitDB ,Metasploit
    下载开源软件并寻找漏洞
    扫端扫描工具与云服务:
    • Nmap
    • Zenmap
    • Shodan
    • Netcraft

  • nmap
    -sV:端口背后的服务指纹探测,拿响应与本地指纹进行匹配
    /nmap/nmap-service-probes
    测试网站:http://scanme.nmap.org/
    NSE 脚本引擎:很多脚本硬编码端口或http服务(80或443)的其他端口测试时最好带上(-sV或-A,已识别出非正常端口上的HTTP服务,引导其走另一条代码逻辑并选择其对应的脚本进行评估)
    /nmap/scripts

  • Shodan
    全球联网设备的搜索引擎,定期扫描整个互联网

  • Netcraft 站点报告
    只用于目标为网站的OSINT
    https://sitereport.netcraft.com

  • web应用基础架构
    目标用户画像数据:直接影响到系统的管理或业务
    系统配置:比如数据库3306暴露于公网(比如通过本地文件包含漏洞找到配置文件,泄露了数据库账号密码,再加上数据库又暴露在公网)

  • 识别 Web 服务器组件
    web服务器组件:Web服务器(Apache,IIS,nginx,) ,应用框架(Spring,ASP.NET,),内容管理系统CMS(WordPress,Drupal,Joomla,SharePoint),数据库,其他软件(OpenSSH,FTP,SMB,RDP)
    端口扫描
    默认网页:强制浏览是识别默认内容的一种方法;多页面中的细微差距比较来确认具体版本号
    配置文件:也会间接体现出存在特定的什么组件
    管理页面:也会间接体现出存在特定的什么组件

  • 测试 HTTP 方法
    GET 请求:URI 中的参数可能泄露敏感信息
    POST参数:可用于利用漏洞
    PUT:将文件上传到网站根目录
    TRACE: 识别 Web 服务器前端的负载均衡器或其他设备
    DELETE: 从网站根目录中删除文件
    https://github.com/OWASP/wstg/blob/master/document/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/06-Test_HTTP_Methods.md

  • 检查 Web 服务器元文件是否存在信息泄露
    robots.txt

  • 心脏出血
    https://heartbleed.com/
    CVE-2014-0160
    单次请求直接从存在漏洞的 OpenSSL 服务器远程读取 64KB 的内存块:用户名,密码,会话管理,私钥等其他敏感信息
    https://github.com/wallarm/heartbleed.py/blob/master/heartbleed.py

内容发现,身份认证,会话管理

170

workbook 767

posted @ 2026-03-25 22:22  sec875  阅读(31)  评论(0)    收藏  举报