文件包含漏洞

134 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情 LINUX

LINUX查看系统的系列:lsb_release -a

配置网络

linux设置ip和dns

第一步:激活网卡

  系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活。

  # ifconfig eth0 up  

第二步:设置网卡进入系统时启动

  想要每次开机就可以自动获取IP地址上网,就要设置网络服务在系统启动时也启动。Linux有一点与windows不同的是很多服务默认是停止的,而且你在某次使用该服务时启动这个服务,但是没设置它为默认启动,则下次进入系统这个服务依然是停止的。下面是设置网络服务在系统启动时也启动的方法。

  使用chkconfig命令让网络服务在系统启动级别是2345时默认启动。

  # chkconfig --level 2345 network on

第三步:修改网卡文件ifcfg-eth0

  修改ifcfg-eth0文件,设置ONBOOT的值为yes,让网络服务启动时使用该网卡。设置BOOTPROTO的值为dhcp,让网卡从DHCP服务器自动获取IP地址。

  # vi /etc/sysconfig/network-scripts/ifcfg-eth0

  ONBOOT=yes

  BOOTPROTO=dhcp

总结:

  通常情况下第三步是最重要的,因为大部分Linux系统默认网络服务是系统启动时也启动的,网卡也是启用的,只要设置好第三步,然后使用下面的命令启动网络服务就OK。

  # service network start

配置静态IP地址上网与动态IP地址上网同出一辙,修改ifcfg-eth0,然后用命令service network retart重启网络服务。

  DEVICE=eth0

  IPADDR=192.168.1.100

  NETMASK=255.255.255.0

  GATEWAY=192.168.1.1

  DNS=8.8.8.8

  BOOTPROTO=static

  ONBOOT=yes

WEB安全

文件包含漏洞

LFI第二关 00截断绕过

输入之后没反应,于是查看后台文件

如果输入之后将构造成 includes/c://boot.ini.php后面加上php后缀没有这个文件所以没显示

这里想法利用00截断构造pyload: library=c://boot.ini%00使不解析后面的php结果还是不显示

重新查看代码发现includes后面有/所以使用相对路径,同理包含出phpinfo

LFI第三关 点加斜杠绕过

第三关后台代码如图 运行机制为从file变量内容的倒数第四位开始读往后读四位 如果这四位=.php那就执行了else 否则触发文件包含

例如file=1.php 读四位为.php所以if挑战不成立输出You are not allowed to see source files!

绕过payload:?file=1.php. 或者?file=1.php/

由于不直接显示 通过查看网页源代码发现包含成功

原理:当windows文件后缀最后是.时 会自动删除.

斜杠的原理为

理论上这里面的字符都可以如果第三关

其中理论上%00也可以绕过这一关 但是在浏览器输入时候并没有成功 本来以为是浏览器过滤到%00但是抓包修改也没有成功 有待研究

LFI第四关 去掉后缀名绕过

这关感觉用处不大直接:?class=../../../phpinfo绕过直接

LFI第五关 双写绕过

后台代码会将../替换为空 因为include里有pages目录所以要../返回上层目录

构造payload:?file=..././phpinfo.php 当后台替换了一个../之后payload便变为

?file=../phpinfo.php成功执行phpinfo

LFI第六关 文件包含写shell

include($_POST["page"]);只有一行代码

本以为只要制作一个图片马然后菜刀连接即可

但是后来用的时候菜刀醒悟没法用post 所以制作不死马图片马

');?>

通过包含执行生成shell.php然后连接shell.php即可

\

\

包含日志文件getshell

(1) apache+Linux日志默认路径

        /etc/httpd/logs/access_log

或者        

        /var/log/httpd/access_log 

(2) apache+win2003日志默认路径

        D:\xampp\apache\logs\access.log

        D:\xampp\apache\logs\error.log

(3) IIS6.0+win2003默认日志文件 

        C:\WINDOWS\system32\Logfiles

(4) IIS7.0+win2003 默认日志文件

        %SystemDrive%\inetpub\logs\LogFiles

(5) nginx 日志文件

        日志文件在用户安装目录logs目录下

                安装路径为例/usr/local/nginx,

                那日志目录就是在/usr/local/nginx/logs里

利用条件

(1) 日志的物理存放路径

(2) 存在文件包含漏洞

条件很苛刻所以用的机会很少

以我的为例D:\phpstudy_pro11111\Extensions\Nginx1.15.11\logs\access.log

日志文件会存放所有的请求,所以我们只要请求一句php语句 语句就会自动写到日志文件

但是由于浏览器访问url的话会进行转码导致php语句无法正常执行 所以用burp抓包

包含成功

\