User-Profile-Image
hankin
  • 5
请到[后台->外观->菜单]中设置菜单。
  • 分类
    • 靶机渗透
    • 计算机小技巧
    • 漏洞复现
    • 未分类
    • 数据结构
    • 内网渗透
    • 代码审计
    • XSS
    • WEB安全漏洞学习
    • Web
    • python
    • PHP
    • NodeJS
    • MYSQL
    • Misc
    • JavaScript
    • Docker
    • CTF相关知识点
    • CTFWP
    • Crypto
    • Cobalt Strike
  • 页面
  • 友链
    • 三哥的博客
    • Root师傅的博客
    • EDS师傅的博客
    • 天正哥的博客
    • 天尘翼师傅的博客
    • 熵增师傅的github
    • 信仰的博客
    • Jadore的博客
Help?

Please contact us on our email for need any support

Support
    首页   ›   WEB安全漏洞学习   ›   正文
WEB安全漏洞学习

phar协议初探学习

2020-01-18 13:13:42
262  0 0

Contents

  • 1 前提:
  • 2 正题
        • 2.0.0.1 可以在不使用php函数unserialize()的前提下,引起严重的php对象注入漏洞。(其实就是不使用unserialize函数,从而进行反序列化)
    • 2.1 phar原理
    • 2.2 a stub(必须理解)
    • 2.3 将phar伪造成其他格式的文件(重点)
  • 3 参考文章

前提:

理解本篇内容:我的建议是先学习php面向对象部分的知识,对序列化和反序列化及其漏洞有一定了解,理解起来能事倍功半

正题

可以在不使用php函数unserialize()的前提下,引起严重的php对象注入漏洞。(其实就是不使用unserialize函数,从而进行反序列化)

phar原理

a stub(必须理解)

可以理解为一个标志,格式为xxx<?php xxx;__HALT_COMPILER();?>,前面内容不限,但必须以__HALT_COMPILER();?>来结尾,否则phar扩展将无法识别这个文件为phar文件。(这部分仔细看下,其实识别phar文件的也主要是根据__HALT_COMPILER();?>这部分)

将phar伪造成其他格式的文件(重点)

在前面分析phar的文件结构时可能会注意到,php识别phar文件是通过其文件头的stub,更确切一点来说是__HALT_COMPILER();?>这段代码,对前面的内容或者后缀名是没有要求的。那么我们就可以通过添加任意的文件头+修改后缀名的方式将phar文件伪装成其他格式的文件

生成phar文件,打开phpstudy确定好对应版本,在php.ini中找到phar.readonly把On改成Off,前面;去掉,这样运行的时候才能生成phar文件

下面运行一个demo,深入理解

<?php
    class TestObject {
    }
    $phar = new Phar("phar.phar"); //后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
    $o = new TestObject();
    $o -> data='purplet';
    $phar->setMetadata($o); //将自定义的meta-data存入manifest
    $phar->addFromString("test.txt", "test"); //添加要压缩的文件
    //签名自动计算
    $phar->stopBuffering();
?>

可以看到生成如图所示的phar文件,接下来我们从winhex中看一下

利用方式即:phar://加phar文件

我们返回去看下上面的demo,从第一个$o前面开始都是套路,后面的$o则是一个对象了,我们通过对这个对象的调用赋值,最后将其作为phar文件的meta-data部分传入到这个phar文件,后面三行也是固定格式,最后生成phar文件。

参考文章

https://xz.aliyun.com/t/2715

 

 

评论 (0)

点击这里取消回复。

欢迎您 游客  

近期文章
  • 记一次Docker问题排错
  • 免杀钓鱼XLSM
  • 彻底理解Kerberos认证
  • 免杀QuasarRAT
  • 密码保护:python反序列化免杀上线CS
近期评论
    文章归档
    • 2021年4月
    • 2021年3月
    • 2021年2月
    • 2021年1月
    • 2020年12月
    • 2020年11月
    • 2020年9月
    • 2020年7月
    • 2020年6月
    • 2020年5月
    • 2020年4月
    • 2020年3月
    • 2020年2月
    • 2020年1月
    分类目录
    • Cobalt Strike
    • Crypto
    • CTFWP
    • CTF相关知识点
    • Docker
    • JavaScript
    • Misc
    • MYSQL
    • NodeJS
    • PHP
    • python
    • Web
    • WEB安全漏洞学习
    • XSS
    • 代码审计
    • 内网渗透
    • 数据结构
    • 未分类
    • 漏洞复现
    • 计算机小技巧
    • 靶机渗透
    功能
    • 登录
    • 条目feed
    • 评论feed
    • WordPress.org
    分类目录
    Copyright © 2021 网站备案号: 蒙ICP备20000552号-1
    smarty_hankin 主题. Designed by hankin
    主页
    页面
    博主
    purplet 管理员
    努力并有所方向
    170 文章 0 评论 51018 浏览
    测试
    测试