文件包含拿shell

一些常见的敏感目录信息路径:

Windows系统:

C:\boot.ini //查看系统版本

C:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件

C:\windows\repair\sam //存储Windows系统初次安装的密码

C:\ProgramFiles\mysql\my.ini //Mysql配置

C:\ProgramFiles\mysql\data\mysql\user.MYD //MySQL root密码

C:\windows\php.ini //php配置信息

Linux/Unix系统:

/etc/password //账户信息

/etc/shadow //账户密码信息

/usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置

/usr/local/app/php5/lib/php.ini //PHP相关配置

/etc/httpd/conf/httpd.conf //Apache配置文件

/etc/my.conf //mysql配置文件

通过日志拿shell:

在用户发起请求时,服务器会将请求写入access.log,当发生错误时将错误写入error.log

当我们正常访问一个网页时,如`http://127.0.0.1/phpinfo.php,access日志会进行记录,如下图所示:

如果我们访问一个不存在的资源,也一样会进行记录,例如访问

127.0.0.1<?php phpinfo();?>

但查看日志会发现被成功记录但被编码了

通过burp抓包,把编码改回去,在发送

此时再查看access日志,正确写入php代码

再通过本地文件包含漏洞访问,即可执行

我们可以在此处写入一句话木马,再使用webshell管理工具进行连接。

通过包含SESSION文件拿shell:

可以先根据尝试包含到SESSION文件,在根据文件内容寻找可控变量,在构造payload插入到文件中,最后包含即可。

利用条件:

  • 找到Session内的可控变量
  • Session文件可读写,并且知道存储路径

php的session文件的保存路径可以在phpinfo的session.save_path看到

session常见存储路径:

/var/lib/php/sess_PHPSESSID

/var/lib/php/sess_PHPSESSID

/tmp/sess_PHPSESSID

/tmp/sessions/sess_PHPSESSID

session文件格式:sess_[phpsessid],而phpsessid在发送的请求的cookie字段中可以看到。

PHP伪协议:

file://协议

file:// 用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响

php://filter用于读取源码。

php://input用于执行php代码。

php://filter 读取源代码并进行base64编码输出,不然会直接当做php代码执行就看不到源代码内容了。

php://filter/convert.base64-encode/resource=文件路径

php://input 可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。

利用该方法,我们可以直接写入php文件,输入

file=php://input,然后使用burp抓包,写入php代码:

ZIP://协议

zip:// 可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。从而实现任意代码执行。

zip://中只能传入绝对路径。

要用#分割压缩包和压缩包里的内容,并且#要用url编码成%23(即下述POC中#要用%23替换)

只需要是zip的压缩包即可,后缀名可以任意更改。

相同的类型还有zlib://和bzip2://

data://协议

data:// 同样类似与php://input,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。从而导致任意代码执行。

利用data:// 伪协议可以直接达到执行php代码的效果,例如执行phpinfo()函数:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

claydemo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值