服务器端漏洞基础

服务器端漏洞

路径遍历

在linux系统中…/…/…/…/…/返回目录

即…/代表返回上一级目录


存取控制

有的web网站中,对于网页目录可能没有太多限制
如,www.baidu.com/admin ,可能存在后台系统

如,www.baidu.com/robots.txt ,robots.txt是因为python爬虫而存在,告知别人什么可以爬取,什么不可以爬取,但是可能存在一些敏感的目录暴露,如后台系统。

如,有的网站程序员并没有认真,导致在JavaScript中,暴露出了后台系统,jsfinder工具

某些应用程序在登录时确定用户的访问权限或角色,然后将此信息存储在用户可控制的位置。这可能是:

  • 隐藏字段。
  • 一个 cookie。
  • 预设的查询字符串参数

配合burp抓包,发现在登录时,在cookie处,有一个admin=false,这是否代表这是一个判断是否为admin账户的参数,进行修改为true,发现可行,并且可进行admin账户才有的操作。

这属于垂直提权操作


水平提权:

查看carlos发布的文章,查看规律,发现在url处有个id,记录下来,然后使用提供的账户登录,burp抓包,发现登录时,会有这个id,把这个id改成carlos 的试试能不能以他的身份登录,改成后,又给出了API key,再次记录下来,可能后面会用到,逐步抓包放包,上交这个key即可

ID: 11b3c727-8f79-4298-be23-2a667436022a

API KEY : nxNHNBINSN2rT6LFd5lO7mJe1IT5wKak


垂直越权:

使用普通用户登录时,进行抓包,能改的地方都改了试试,这里大概在第二个包的时候,把id改为administrator,然后发现登录上去了,再点击更新密码,burp抓包,获取到了administrator的密码,然后用管理员登录,即可完成越权(注意,这里不是admin,所以也一定不要执着于admin)

password : i6fuonyci54maa4s51gm


暴力破解

通过枚举用户名和密码进行登录的操作,取决于爆破时用的字典


绕过双因素验证

有时,双因素身份验证的实现存在缺陷,以至于可以完全绕过它。

如果系统首先提示用户输入密码,然后在单独的页面上提示用户输入验证码,则用户在输入验证码之前实际上处于“已登录”状态。在这种情况下,值得测试一下,看看是否可以在完成第一个身份验证步骤后直接跳到“仅登录”页面。有时,您会发现网站实际上并没有在加载页面之前检查您是否完成了第二步。


SSRF

服务器端请求伪造是一种 Web 安全漏洞,允许攻击者使服务器端应用程序向非预期位置发出请求。

在典型的 SSRF 攻击中,攻击者可能会导致服务器连接到组织基础结构中的仅限内部的服务。在其他情况下,它们可能能够强制服务器连接到任意外部系统。这可能会泄露敏感数据,例如授权凭据。

为什么应用程序以这种方式运行,并隐式信任来自本地计算机的请求?这可能是由于各种原因造成的:

  • 访问控制检查可以在位于应用程序服务器前面的其他组件中实现。当重新连接到服务器时,将绕过检查。
  • 出于灾难恢复目的,应用程序可能允许来自本地计算机的任何用户在不登录的情况下进行管理访问。这为管理员提供了一种在丢失凭据时恢复系统的方法。这假定只有完全受信任的用户才会直接来自服务器。
  • 管理界面可能侦听主应用程序的不同端口号,并且用户可能无法直接访问。

在这种信任关系中,来自本地计算机的请求的处理方式与普通请求不同,这通常会使 SSRF 成为严重漏洞。

针对其他后端系统的 SSRF 攻击

在某些情况下,应用程序服务器能够与用户无法直接访问的后端系统进行交互。这些系统通常具有不可路由的专用 IP 地址。后端系统通常受网络拓扑保护,因此它们通常具有较弱的安全态势。在许多情况下,内部后端系统包含敏感功能,任何能够与系统交互的人都无需身份验证即可访问这些功能。

在前面的示例中,假设后端 URL 上有一个管理界面。攻击者可以提交以下请求来利用 SSRF 漏洞,并访问管理界面: https://192.168.0.68/admin


文件上传攻击

如果能够成功上传 Web Shell,则实际上可以完全控制服务器。这意味着您可以读取和写入任意文件,泄露敏感数据,甚至使用服务器对内部基础设施和网络外部的其他服务器进行攻击。例如,以下 PHP 单行代码可用于从服务器的文件系统中读取任意文件:

<?php echo file_get_contents('/path/to/target/file'); ?>

上传后,发送对此恶意文件的请求将在响应中返回目标文件的内容。

一个更通用的 Web shell 可能如下所示:

<?php echo system($_GET['command']); ?>

此脚本使您能够通过查询参数传递任意系统命令,如下所示:

GET /example/exploit.php?command=id HTTP/1.1

网站可能尝试验证文件上传的一种方法是检查此特定于输入的标头是否与预期的 MIME 类型匹配。例如,如果服务器只需要图像文件,则它可能只允许像 和 这样的类型。当服务器隐式信任此标头的值时,可能会出现问题。如果没有执行进一步的验证来检查文件的内容是否真的与假定的 MIME 类型匹配,则可以使用 Burp Repeater 等工具轻松绕过此防御。Content-Type``image/jpeg``image/png


OS注入(命令注入)
命令目的Linux操作系统窗户
当前用户的名称whoamiwhoami
操作系统uname -aver
网络配置ifconfigipconfig /all
网络连接netstat -annetstat -an
正在运行的进程ps -eftasklist

SQL注入

SQL 注入 (SQLi) 是一种 Web 安全漏洞,允许攻击者干扰应用程序对其数据库进行的查询。这可能允许攻击者查看他们通常无法检索的数据。这可能包括属于其他用户的数据,或应用程序可以访问的任何其他数据。在许多情况下,攻击者可以修改或删除此数据,从而导致对应用程序的内容或行为进行持续更改。

在某些情况下,攻击者可以升级 SQL 注入攻击,以破坏底层服务器或其他后端基础结构。它还使他们能够执行拒绝服务攻击。

如何检测SQL注入漏洞

您可以使用一组针对应用程序中每个入口点的系统测试来手动检测 SQL 注入。为此,您通常会提交:

  • 单引号字符,并查找错误或其他异常。'
  • 一些特定于 SQL 的语法,用于计算入口点的基本(原始)值和其他值,并查找应用程序响应中的系统差异。
  • 布尔条件(如 和 ),并查找应用程序响应中的差异。OR 1=1``OR 1=2
  • 有效负载设计用于在 SQL 查询中执行时触发时间延迟,并查找响应所需时间的差异。
  • OAST 有效负载,用于在 SQL 查询中执行时触发带外网络交互,并监视任何生成的交互。

或者,您可以使用 Burp Scanner 快速可靠地找到大多数 SQL 注入漏洞。

posted @   whitehe  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示