贤达官网_临沂贤达网络科技有限公司
    • 网站首页
    • 公司简介
      公司简介
      企业文化
    • 产品展示
    • 新闻动态
      公司新闻
      行业新闻
    • 成功案例
      成功案例
    • 客户服务
      售后服务
      技术支持
    • 人才招聘
    • 联系我们
      联系我们
      在线留言

    新闻动态Site navigation

    公司新闻
    行业新闻

    联系方式Contact


    地 址:北京市门头沟区66号
    电 话:18069106274
    网址:91martech.com
    邮 箱:62003607@qq.com

    网站首页 > 新闻动态
    新闻动态Welcome to visit our

    php session利用总结

    分享到:
      来源:贤达官网_临沂贤达网络科技有限公司  更新时间:2026-10-01 08:30:28  【打印此页】  【关闭】
    这里主要讲讲传统的利用PHP中的“服务端Session”。至于什么是总结服务端Session,什么是利用客户端Session,可以看看P神的总结**客户端 session 导致的安全问题。Session概念:在计算机中,利用尤其是总结在网络应用中,称为“会话控制(zhi)”。利用(yong)Session 对象存储特定用户会话所需的(de)总结属性及配置信息。这样,利用当用户在应用程序的总结 Web 页之(zhi)间跳转时,存储在(zai) Session 对象中的利(li)用(yong)变量将不会(hui)丢失,而(er)是总结在(zai)整个用户会话中一直存在(zai)下去。下(xia)面就由新网小(xiao)编和(he)大家讲一讲php session利用总结。利(li)用 当用户请求来自应用程(cheng)序的总结 Web 页时,如(ru)果该用户还没有会话,利用则 Web 服务器将自动创建一个(ge) Session 对(dui)象。当会话过期或被放弃后,服务器将终止该会话。 Session机制:session内容一般以(yi)文(wen)件(jian)的形式存储于服务器中,而(er)本地浏览器会存储一个与(yu)服务器中session文件对(dui)应的Cookie值,Cookie存储的是键值为“PHPSESSID”的Seeion_id值(zhi),用户在访问web应用时,每次跳转发生(sheng)http请求时,会(hui)自动把这(zhe)个存储session_id的Cookie值发送过去,因此web应(ying)用的所有页面都可以获取到这(zhe)个SESSION_ID值,也就可以通过session_id获取服务器中存储的session值,当用户关闭浏览器后,cookie存储的session_id自动清除,一般服务器存储的(de)session文件也会(hui)在30分钟后自动清除。 一、比如在wamp环境下,index.php如下: session_start(); phpinfo(); ?> 首先理解一下session_start() 当会话自动开始或者通过 session_start() 手动(dong)开始的时(shi)候, PHP 内部会依据客户端传来的PHPSESSID来获取现有的对应的会话数据(即session文件(jian)),PHP 会自动反序列化session文件的内容,并将之填充到 $_SESSION 超级全局变(bian)量中。如果不(bu)存在对应的会话数据,则创建名(ming)为sess_PHPSES SID(客户端传来的)的(de)文件。如果客户端未发送PHPSESSID,则创建一个由32个字母组成的PHPSESSID,并(bing)返回set-cookie。 可以看到请求中对(dui)应的PHPSESSID:ifrvi9r7ui81r0fjq569b06862 在服务(wu)器(qi)端,即/wamp/tmp下我(wo)们就可以发现一个生(sheng)成的记录Session的文件,因为也没有记录什么会话信息,因此(ci)该文件是一个空文(wen)件。 补充一下关于php-Session相关配置的说明 在php.ini中(zhong)对Session存在许多配置,这里我们通过phpinfo来说明几个(ge)重要的点。 说明如下: session.save_path="" --设置session的存储路径 session.save_handler='' --设定用户自定义存储函数,如果想使(shi)用PHP内置会话存储机制之外(wai)的可(ke)以使用本函数(数据(ju)库等方式(shi)),默认files以文件存储 session.auto_start boolen --指定会话模块是否在请求开始时启动一个会话,默认为0不启动 session.serialize_handler string --定义用来序列化/ 二、常见的php-session存放位置 /var/lib/php5/sess_PHPSESSID/var/lib/php7/sess_PHPSESSID/var/lib/php/sess_PHPSESSID/tmp/sess_PHPSESSID/tmp/sessions/sess_PHPSESSED0x02 Session可能导致的攻击面 Session序列化攻击Session文件包含Session伪造用户登录Session逻辑漏洞0x03 Session序列化攻击 Serialize_handler 要了解Session序列化攻击,先来了解一下Session机制中对序列化是如(ru)何处理的。 在php中存在三种序列化处理引擎 本地测试如下: Session文件内容分别对应结果为 test|s:7:"CoCo1er"; tests:7:"CoCo1er"; a:1:{ s:4:"test";s:7:"CoCo1er";} 攻击利用原理 payload千万条,原理第一条。 (这里补充说一点,PHP中的Session的实现是没有的问题,危害主要是由于程序员的Session使用不当而引起的(de)。如下) 使用不同引擎来处理session文件 如果在PHP在反序列化存储的$_SESSION数据时使用的引擎和序列化使用的引擎不一样,会导致数据无法正确第反序列(lie)化。通过精心构造的(de)数据包,就可以绕过程序的验证或者是执行一些系统(tong)的方法。例如: 在这么一种情况下: 假如我们使用php_serialize引擎时进行数据存储时的序列化,可以得到内容 $_SESSION[‘key’] = ‘Boby’; a:1:{ s:3:”key”;s:4:”Boby”;}

    三、这时我们的解析采用了另一种引擎:php 思考一下这时会发生什(shen)么情况?(php引擎中以竖线(xian)来分隔键和(he)值) 如果像上面我们的payload换一下,传入内容以(yi)及得到的存储内容如下: $_SESSION['key'] = '|O:4:"User":0:{ }'; a:1:{ s:3:"key";s:16:"|O:4:"User":0:{ }";} 这时候a:1:{ s:3:"key";s:16:"被当作了key,而(er)后(hou)续的O:4:"User":0:{ }";}被当作了value从而被反序列化。这里可能有人会问了,为什么会被反序列化? 看看官方(fang)文档 这里可能还会有人问?那(na)串value不符合"正常"的被反序列化的字符串规则。这个也(ye)不用担心,这里提到一个unserialize的特性,之前(qian)也做题也遇到过。在执行unserialize的时候,如果字符串前面满足了可被反序列化的规则即后续的不规则字符会被(bei)忽略。 四、如果(guo)不太好理解不(bu)如直接来看一个在线测试用例: 总结一下,在php以php_serialize引擎生成session,然而又以php引擎来解析时,我们通过传入类似 $_SESSION[‘name’] = |序列化内容 这种形式的payload即有可(ke)能触发反序列化漏洞。当然这里只是提(ti)到了能够找到反序列化利用的点,至于能不能真正触发反序列化(hua)漏洞还需要结合当前环境以及一些魔术函数中是否存(cun)在可利(li)用点。这就涉及到php反序列化漏洞的利用知识(shi)点了,这里也就不详细讲了。关于(yu)Session反序列化攻击的复杂利用方式,可(ke)以参考2018LCTF中的bestphp’s revenge一题。 五、没有$_SESSION变量赋值 从上(shang)面的情况中我们可以发现我们对session的赋值可控。那如果(guo)代码中不存在对$_SESSION变(bian)量赋值的情况下如何利用(yong)呢?来看下面(mian)一个点。 php还存在一个(ge)upload_process机制,即自动在$_SESSION中创建一个键值对,值中刚(gang)好存在用户可控的(de)部分。 写入的方(fang)式主要是利用PHP中Session Upload Progress来进行设置,具(ju)体为,在上传文件时,如果POST一个名为PHP_SESSION_UPLOAD_PROGRESS的(de)变量,就可以将filename的值赋值到session中。 //上传表单 既然filename字段能够写入session中那么就(jiu)满足了session可控条件,后续的利用条件同上面所述的情(qing)景一致,两种不同引擎先后作用导致了恶意的序列化字符串被解(jie)析。 六(liu)、0x04 Session文件包含 这(zhe)个(ge)也(ye)是一个比(bi)较旧的知识点了,其实不仅是Session文件包含,仔细想想,理论上只(zhi)要能够在文件中写入php代码,再被include包含进来不都可以实(shi)现getshell嘛?只不过在(zai)这里我们的(de)可控点是Session文件(jian),如果能向其中写入php代码,也是可以实现文件包含漏洞利用的。 作为(wei)文件包含的利用这里就不展示了,网上关于(yu)这个(ge)的基础资料早就烂大街了。 值得一提的(de)是,往往现在的CTF出题不会仅限于文件包含这一个点来出题,而(er)是利用诸如session+lfi的形式来入题获取(qu)源码等。而且可(ke)能加入(ru)open=""_basedir来限制路径,此时就需要(yao)熟悉了解session的机制,通过函数(shu)来改变(bian)save路径来利用。这个思(si)路是在(zai)XCTF Final中出现的bestphp一题中的考点。感兴趣的同学可以(yi)去找到环境复现一波。 七、0x05 Session伪造用户登录 前几天正好(hao)3CTF出了一个(ge)这个考点,这里以(yi)那个题目来说明一下利用方式。(由于没有提供复现环境,此处也只能限于“纸上谈兵”,希望大家(jia)能够理解一下利(li)用原理即可(ke)。) **利用前提:**session可控;知道session存储格式。 这里的考题是多个攻击面的组合。题面index.php下(xia)提示要以admin登录。 sql盲注可以跑sqlmap拿到执行shellsql root用户存在(zai)file权限,但是往站点直接写shell无(wu)法成功(猜测应该是站点根目录有限制,但是可以猜测/tmp可写扫后台发现test.php,访问(wen)发现回显了session的数据结构Array([username]=>test),知道了session的格式。key为(wei)username,至于采用了哪种序列化引擎?三种都测一下就完事。这(zhe)里满足了两个利用前提。通过sqlmap-shell往/tmp写入文件伪造adminpayload:select 'username|s:5:"admin";' into outfile '/tmp/sess_PHPSESSID'最后修改成对应设计的PHPSESSID即可(ke)伪造admin登录拿到flag。0x06 Session逻辑漏洞 很遗憾这个点也没有可以复现的环境。(官方买断...)这个是上两(liang)周unctf中出现的一道web题考点(dian)。这个逻辑漏洞处在(zai)重置密码处。过程大致如下(xia)。 八、密码重置分为三个步骤 填写需要重置的用户名用户名绑定的邮箱中收到验证码填写验(yan)证码,进入重置密码页面(mian),填写完新密码完成重置。这里存在的逻辑漏洞在于第一个页面的填写用户名处,猜测后台有(you)设置session。类似:$_SESSION[‘name’] = $_POST['name']; 九、利用方式:重置admin密码 打开一个正常页面完(wan)整流程走到最后一步(bu),填写完验证码通过后,填写新密码,此时并(bing)不提交。新开另外一个页面完成第一步,重置用户填写admin,此时Session不再是我们之前自己的用户,而变成了admin。这(zhe)时完成之前页面的提交。成功重置admin密码。这里逻辑漏洞产生的原因在(zai)于对填写验证码后没有(you)对相关用户绑定做记录,在最后一步重置密码时没有对Session的可靠性进行检查就直接执行了功能。而我(wo)们都知(zhi)道Session存储在服务器端,因此我们再开一个页面即可完成对单一session文件内(nei)容的修改(保证在同一个PHPSEEID下)。 这里仅仅是记录了自己关于PHP的session机制相关的(de)学习,举的都是自己最近在(zai)CTF题(ti)中(zhong)接触到的点,但关于session的利用点怎么可能只有这几(ji)个?遇到了再补充学习吧。限于篇幅没有展开讲拓展利(li)用,但是说白了(le),拓展利用就(jiu)是多个复杂知识点(dian)的综合。我认为只有把原理性的问题搞清楚了才有可能(neng)去理(li)解(jie)复杂的组合攻击。另外如果文(wen)中(zhong)有(you)什么理解表达错误的地方还望师傅们指正。小伙伴们要(yao)想获得更多php session的内容,请关注新网!

    php session利用总结

    上一篇:龙岗网站制作_石岩网站制作价格_1
    下一篇:高端网站建设公司排名_深圳建网站哪家公司好

    相关文章

    • 黄冈最大的建筑公司_黄冈网站建设单位_1
    • 网站推广软件_网站建设软件推广方案模板
    • 网站推广引流最快方法_莱西网站开发方案_5
    • 网站推广网络营销_网络营销十种推广方式
    • 黄石志诚网络科技有限公司_黄石网站建设怎么收费
    • 网站推广网络营销_网络营销李琳简介资料
    • 网站推广营销运营方式_晋城运营网络推广优势_2
    • 网站推广公司_衡水网站建设推广哪家好_1
    • 龙岩住房和城乡建设局_龙岩网站建设存在的问题
    • 网站推广软件费用是多少_江门seo外包费用

    友情链接:

    • 胶州辉迎网络科技有限公司
    • 阜新汇易网络科技有限公司
    • 安庆界博网络科技有限公司
    • 麻城鸿真网络科技有限公司
    • 漯河览纳网络科技有限公司
    • 桂林正鼎网络科技有限公司
    • 合肥巨建网络科技有限公司
    公司简介|产品展示|新闻动态|成功案例|客户服务|人才招聘|联系我们

    Copyright © 2026 Powered by 贤达官网_临沂贤达网络科技有限公司   sitemap

    0.3103s , 49769.609375 kb