安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
14. 常用的扫描器用过那些?有他们也会用GET或者HEAD
2025年HW(护网面试) 52
1、jsonp原理,防御,怎么利用的,什么位置什么功能点 2、cors原理,防御,怎么利用 3、同源策略,举个例子 4、sql注入5、0之前和5、0之后有什么区别 5、sql注入写shell条件 6、csrf原理,防御,利用 7、csrf防御为什么要check refer字段 8、xss分为几种类型,具体是什么 9、dom型原理 10、xss蠕虫 11、怎么手动判断一个网站是用的什么操作系统(不用工具) 12常见的请求方式有哪些 13、get和head请求有什么区别 14、常用的扫描器用过那些?有他们也会用get或者head 15、refer字段是干啥的
Web安全基础主题
1. JSONP原理、防御、怎么利用、什么位置什么功能点
JSONP(JSON with Padding)是一种跨域数据交换技术,常用于绕过浏览器的同源策略。以下是关键点:
- 原理:
浏览器同源策略禁止跨域请求,但允许加载外部脚本(如<script src="外部URL">
)。JSONP利用这一点:客户端定义回调函数(如callback=handleData
),服务器将数据包装在该函数中(如handleData({"data":"value"})
)返回。客户端执行脚本时,数据被回调函数处理。- 防御:
由于JSONP易引发安全风险,推荐:①避免使用JSONP,改用更安全的CORS(跨域资源共享);②若必须使用,服务器端应验证回调函数名(只允许字母数字字符);③设置Content-Type为application/javascript
而非JSON,防止内容嗅探攻击。- 怎么利用:
攻击者可:①实施XSS(跨站脚本攻击),通过恶意回调函数注入代码;②窃取敏感数据(如用户Token),通过诱导用户访问恶意页面加载JSONP脚本。例如,攻击者在钓鱼页面嵌入<script src="https://victim.com/api?callback=maliciousFunction">
,获取数据。- 位置和功能点:
JSONP常见于API接口中需要跨域数据交换的场景,如:社交媒体分享按钮、地图集成功能(如加载地理位置数据)或第三方登录(如OAuth回调)。风险点在回调参数处理不当处。 补充信息:JSONP在现代Web中逐渐被淘汰,CORS更为安全,但它仍在一些老旧系统中使用。2. CORS原理、防御、怎么利用
CORS(Cross-Origin Resource Sharing)是W3C标准,用于安全处理跨域请求。
- 原理:
浏览器发送跨域请求(如XMLHttpRequest)时,添加Origin
头(如Origin: https://client.com
)。服务器响应时,设置Access-Control-Allow-Origin
头(如*
或指定域名)允许访问。对于复杂请求(如PUT),浏览器先发送OPTIONS预检请求检查权限。- 防御:
防止CORS滥用:①服务器严格配置响应头,如Access-Control-Allow-Origin
设置为可信域名(避免使用*
);②限制HTTP方法(如只允许GET/POST);③添加Access-Control-Allow-Credentials: false
防止凭据泄露;④实施请求验证(如Token检查)。- 怎么利用:
攻击者可:①利用配置错误(如Access-Control-Allow-Origin: *
),直接窃取数据(如API响应);②结合CSRF攻击,强迫用户执行跨域操作。例如,恶意站点读取银行API数据(如果CORS允许任意来源)。 补充信息:CORS是主动防御机制,但错误配置会导致严重漏洞(如数据泄露),常见于RESTful API。3. 同源策略,举个例子
同源策略(Same-Origin Policy)是浏览器安全机制,限制不同源页面间的交互。
- 原理:
“源”由协议、域名、端口三者定义(如https://example.com:443
)。同源时允许访问DOM、Cookie等;不同源时禁止读取资源(如脚本、iframe内容)。目的是防止恶意站点窃取数据。- 举个例子:
假设用户访问https://shop.com
(源A)和嵌入的https://ads.com
(源B)。同源策略阻止源B读取源A的Cookie或DOM。例如,源B的脚本无法调用源A的API(除非通过CORS或JSONP)。 补充信息:同源策略保护用户隐私,但常需绕过(如跨域资源共享),现代Web应用依赖它作为基础防线。
SQL注入相关主题
4. SQL注入5.0之前和5.0之后有什么区别
问题指MySQL数据库SQL注入在版本5.0前后的差异(关键变化是
information_schema
的引入)。
- 5.0之前(如MySQL 4.x):
缺乏系统元数据表(如information_schema
),注入攻击依赖猜测:①表名和列名需手动枚举(如通过错误消息或盲注);②利用默认表(如mysql.user
)获取权限信息;③攻击效率低,容易失败。- 5.0之后(MySQL 5.0+):
引入information_schema
数据库,存储所有表、列等元数据。注入更高效:①直接查询information_schema.tables
或information_schema.columns
获取表结构;②示例Payload:' UNION SELECT table_name FROM information_schema.tables --
;③自动化工具(如SQLMap)利用此简化攻击。- 核心区别:5.0后的版本使信息收集更系统化,注入攻击更精准;防御需强化输入过滤(如参数化查询)。 补充信息:MySQL 5.0发布于2005年,现代数据库(如PostgreSQL)也类似。防御应使用预编译语句。
5. SQL注入写shell条件
通过SQL注入写入Web Shell(如PHP文件),需满足特定条件:
- 必要条件:
①数据库用户有文件写入权限(如MySQL的FILE
权限);②知道Web目录绝对路径(如/var/www/html
);③数据库配置允许文件输出(如MySQL的secure_file_priv
为空);④注入点能执行写入语句(如SELECT ... INTO OUTFILE
)。- 利用过程:
攻击者构造Payload(如' UNION SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/shell.php' --
)。成功后,访问shell.php?cmd=id
即可执行系统命令。- 防御:
限制数据库权限(禁用FILE
权限);配置secure_file_priv
;使用Web应用防火墙(WAF)。 补充信息:写Shell常用于持久化攻击,但条件苛刻(成功率低),多见于权限配置错误场景。
跨站请求伪造(CSRF)主题
6. CSRF原理、防御、利用
CSRF(Cross-Site Request Forgery)攻击强迫用户执行非意愿操作。
- 原理:
用户登录可信站点(如银行)后,会话Cookie有效。攻击者诱导用户访问恶意页面,该页面发送请求到银行(如转账操作)。浏览器自动携带Cookie,服务器误认合法用户操作。- 防御:
核心方法:①使用CSRF Token(服务器生成唯一Token,嵌入表单或头;请求时验证);②检查Referer/Origin头(确保来源可信);③设置Cookie属性(如SameSite=Strict
)。- 怎么利用:
攻击者创建恶意页面,嵌入表单或脚本(如<img src="https://bank.com/transfer?to=attacker&amount=1000">
)。用户访问时,自动发送请求完成转账。 补充信息:CSRF依赖用户会话,常与XSS结合;防御Token需随机且绑定会话。7. CSRF防御为什么要check Referer字段
Referer字段是HTTP请求头,指示请求来源URL。检查Referer是CSRF防御的辅助手段:
- 原因:
①验证来源可信:服务器检查Referer是否为自身域名(如https://bank.com
),阻止来自恶意站点的请求;②简单高效:无需额外Token,适用于旧系统;③配合Token增加安全性。- 局限性:
Referer可能被伪造(如代理修改)、隐私设置禁用(Referer为空)或跨协议问题(HTTP到HTTPS)。因此,它常作为次要防线,优先使用Token。 补充信息:OWASP推荐以Token为主,Referer为补充;现代浏览器支持Origin
头(更安全)。
跨站脚本(XSS)主题
8. XSS分为几种类型,具体是什么
XSS(Cross-Site Scripting)分为三种主要类型(控制在10个要点内):
- 存储型(持久型):
恶意脚本存储在服务器(如数据库),用户访问受影响页面时自动执行(如论坛评论中的脚本)。- 反射型(非持久型):
恶意脚本作为请求参数(如URL中的?search=<script>alert(1)</script>
),服务器返回时执行(用户需点击恶意链接)。- DOM型:
脚本在客户端DOM解析时执行,不经服务器(如document.location.hash
被注入);纯前端漏洞。
- 其他注意事项:
- 基于Mutation XSS(DOM变异引起)和Self-XSS(社会工程类)。
- 所有类型都可窃取Cookie、重定向用户或安装恶意软件。 补充信息:XSS危害大(如会话劫持),防御需输入输出过滤(如HTML编码)。
9. DOM型原理
DOM型XSS基于客户端文档对象模型(DOM)操作:
- 原理:
攻击者操纵DOM元素(如URL片段#
或document.write
输出),注入恶意脚本。例如,页面JavaScript使用eval(location.hash.substring(1))
,用户访问example.com#alert(1)
时执行代码。服务器不参与,纯客户端漏洞。- 关键点:
①触发点:DOM API(如innerHTML
、location
);②漏洞位置:前端代码逻辑错误;③利用:通过恶意URL或用户输入。- 防御:
避免不安全DOM操作;使用textContent
替代innerHTML
;实施CSP(内容安全策略)。 补充信息:DOM型XSS难检测(传统扫描器可能忽略),需手动代码审计。10. XSS蠕虫
XSS蠕虫是一种自我传播的恶意脚本:
- 原理:
蠕虫代码(如JavaScript)在受害者页面自动执行后,复制自身到其他用户页面(如通过社交分享功能)。例如,Samy蠕虫(2005年)在MySpace中通过好友请求传播。- 利用条件:
①存在存储型XSS(如用户内容区);②有传播途径(如API或表单);③用户交互(如点击)。- 危害:
大规模感染(如数据泄露、服务中断);防御需严格输入过滤和CSP。 补充信息:蠕虫展示XSS的灾难性,现代社交平台已加强防护。
操作系统识别主题
11. 怎么手动判断一个网站是用的什么操作系统(不用工具)
通过观察HTTP响应和网站行为手动判断(无需扫描器):
- HTTP头分析:
Server
头:如Apache/2.4
(常见于Linux)、Microsoft-IIS/10.0
(Windows Server)。X-Powered-By
头:如PHP/8.0
(暗示Linux)、.NET
(Windows)。- URL和路径特征:
- Linux:路径大小写敏感(如
/home
vs/Home
错误)、斜杠/
分隔。- Windows:路径不敏感(大小写一致)、反斜杠
\
常见(但Web中多用/
)。- 错误消息:
- 故意触发404:Linux错误消息可能包含 “Not Found” 或文件路径(如
/var/www/error
);Windows消息可能提及 “IIS” 或驱动器(如C:\inetpub
)。- 行为和文件扩展名:
- 访问
.php
文件(暗示Linux + PHP);.aspx
(Windows + IIS)。- TTL值(网络层):Ping网站,TTL≈64(Linux)、TTL≈128(Windows),但需基础网络知识。 补充信息:手动方法不可靠(可被服务器伪装),但适用于初步评估;结合多个指标提高准确性。
HTTP协议相关主题
12. 常见的请求方式有哪些
HTTP请求方式(方法)定义客户端操作(控制在10个要点内):
- GET:请求数据(只读),参数在URL中(如
?id=1
)。- POST:提交数据(如表单),参数在请求体。
- HEAD:类似GET,但只返回响应头(无正文),用于检查资源。
- PUT:上传或替换资源。
- DELETE:删除资源。
- OPTIONS:查询服务器支持的HTTP方法(用于CORS预检)。
- PATCH:部分更新资源。
- TRACE:回显请求(用于诊断,但易导致安全风险)。
- CONNECT:建立隧道(如代理)。
- 其他:PROPFIND(WebDAV);现代API常用RESTful方法(GET/POST/PUT/DELETE)。 补充信息:GET和POST最常用;安全设计应限制方法(如禁用PUT/DELETE)。
13. GET和HEAD请求有什么区别
GET和HEAD是HTTP方法,主要区别在于响应内容:
- GET请求:
①获取完整资源(响应包括头和正文);②支持查询参数(URL中);③用于数据检索(如加载网页)。- HEAD请求:
①只获取响应头(无正文);②参数传递方式同GET;③用于检查资源状态(如是否存在、修改时间),节约带宽。- 核心区别:
HEAD是轻量级GET,适用于预验证(如链接检查);攻击者可能用HEAD探测站点(减少网络流量)。 补充信息:HEAD响应头应与GET一致(RFC标准);扫描器常用HEAD进行快速侦察。14. 常用的扫描器用过那些?有他们也会用GET或者HEAD
常用Web扫描器列表(控制在10个要点内),并解释其HTTP方法使用:
- Burp Suite:渗透测试工具,支持GET/POST/HEAD等,用于爬取和分析。
- Nmap:网络扫描器,脚本引擎(NSE)可用GET/HEAD探测Web服务。
- OWASP ZAP:安全扫描器,默认使用GET/HEAD收集信息。
- Nikto:漏洞扫描器,主要用GET请求测试常见漏洞。
- SQLMap:SQL注入工具,用GET/HEAD检测注入点。
- Acunetix:商业扫描器,支持多种方法自动化测试。
- Nessus:综合漏洞扫描,Web模块用GET/HEAD。
- HTTP方法使用:
扫描器优先使用HEAD(快速、低开销)检查资源可用性;然后用GET获取详情(如响应正文)。例如,扫描站点时先用HEAD确认页面存在,再GET扫描XSS。 补充信息:扫描器方法选择可配置;防御需监控异常请求(如高频HEAD)。15. Referer字段是干啥的
Referer(或Referrer)是HTTP请求头字段,指示当前请求的来源URL:
- 功能:
①告诉服务器请求是从哪个页面发起的(如从https://news.com
链接到https://shop.com
,Referer为news.com
);②用于分析流量来源、防CSRF或防盗链。- 安全应用:
在CSRF防御中,服务器检查Referer是否可信(如只允许自家域名);但易被伪造或缺失(隐私模式)。- 示例:
用户点击A页面的链接到B页面时,B的请求中Referer: https://A.com
。 补充信息:Referer拼写错误是历史原因(RFC标准保留);现代替代品包括Origin
头(更安全)。