web渗透测试 第19课:文件上传漏洞

在本节中,我们将介绍如何使用文件上载功能来获取代码。

 

在Web应用程序(尤其是使用文件系统来确定应运行哪些代码的应用程序)中,如果您设法上传具有正确文件名的文件(通常取决于扩展名),则可以在服务器上执行代码。在本节中,我们将看到这些类型的攻击的基础知识。

 

首先,由于我们正在开发一个PHP应用程序,我们需要一个PHP Web shell。Web shell只是一个简单的脚本或Web应用程序,它运行所提供的代码或命令。例如,在PHP中,以下代码是一个非常简单的Web shell:

<?php
  system($_GET["cmd"]);
?>

更复杂的Web shell可以执行更高级操作,例如提供数据库和文件系统访问,甚至TCP隧道。

 

Example 1

第一个例子是一个非常基本的上传表单,没有任何限制。通过使用上面的Web shell,并使用.php扩展名命名,您应该能够将其上传到服务器上。上传后,您可以访问脚本(例如参数cmd=name -a)来执行命令。文件上传漏洞

 

Example 2

在第二个示例中,开发人员对文件名进行了限制。文件名不能以.php。结尾。要绕过此限制,您可以使用以下方法之一:

  • 将扩展名更改为.php3。在其他系统上,扩展类似.php4.php5可能也有效。这取决于Web服务器的配置。
  • 使用Apache .blah在扩展后不知道的扩展名.php。由于Apache不知道如何处理扩展.blah,它将转移到下一个:.php并运行PHP代码。
  • 上传.htaccess文件,启用另一个扩展程序由PHP运行。

 

具体原理如下:

获取命令执行的最常见方法是使用任意扩展的处理程序:

AddType application/x-httpd-php .blah

这一行将告诉Apache使用PHP引擎解释扩展名为.blah的文件。 由于.blah文件不太可能被应用程序过滤。

这是因为AllowOverride设置为All(其默认值),这意味着服务器遇到`.htaccess`文件时会解释它。

一旦我们上传了带有上述内容的.htaccess文件。 我们现在可以将我们的文件shell.php重命名为shell.blah并上传它。

上传两个文件后,我们就可以执行命令了!

 

使用这些方法之一,您应该能够获得命令执行。

文件上传漏洞

 

文件上传漏洞

    A+
发布日期:2018年07月07日 14:05:51  所属分类:Web Pentester
最后更新时间:2018-07-07 16:56:31
付杰
  • ¥ 999元
  • 市场价:4999元
  • ¥ 99.9元
  • 市场价:299元
  • ¥ 98.0元
  • 市场价:298.0元
  • ¥ 129.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:6   其中:访客  0   博主  0

  1. 头像 小杰杰 1

    很不错的文章!

    • 付杰 付杰

      @小杰杰 欢迎常来!

    • 付杰 付杰

      @小杰杰 此评论是测试邮件回复功能!

    • 付杰 付杰

      @小杰杰 文章内容写得真的不错,我也本地搭环境做实验了,但是真正的网站根本不会存在这些漏洞的,随便一个安全软件或CDN都可以防这些的,难道不是吗?

  2. 头像 小菜鸟 1

    哈哈哈

  3. 头像 小菜鸟 1

    测试test