Уважаемые пользователи!
Напоминаем, что с 7 ноября 2020 года phpBB Group прекратила выпуск обновлений для phpBB версии 3.2.
С учетом этого, рекомендуется обновить конференции до версии 3.3.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до отдельного объявления.

Include BBcode MOD

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Include BBcode MOD

Сообщение avm »

Этот мод позволяет администраторам форумов вставлять в сообщения внешние файлы и результаты работы внешних скриптов. Синтаксис аналогичен инструкции php include(). За исключением того, что перед добавлением в сообщение, контент парсится на нежелательные вхождения (javascript, заголовки html, и т.д.).
Сделано в основном для применения с модом Glance v.2, для создания user-dependent или просто динамических объявлений.
Делал для себя - может кому-то будет интересно...

P.S. Возможно название не очень удачное - тогда поправьте меня :)

Код: Выделить всё

################################################################ 
## MOD Title: Include BBcode MOD 
## MOD Author: avm < avm@tverskie.net > (Alex V.Musienko) N/A
## MOD Description: Adds [include(remote_filename_or_url)] BBcode tag for evaluating external scripts/files.
## MOD Version: 1.0.1
##
## Installation Level: Easy
## Installation Time: 5 Minutes
## Files To Edit: includes/bbcode.php
## Included Files: N/A
############################################################## 
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes:
## Tag behaviour is similar to php include() statement.
## This mod gives an ability for administrator to make dinamic posts.
## Using it with Glance v.2 MOD, administrator can make visitor-dependent annotations.
## Since PHP 4.3.0 it is available to include remote files if allow_url_fopen is true.
##
## IMPORTANT: Use it carefully, because of possible security holes in external scripts/pages.
## 
############################################################## 
## MOD History: 
## 
##   2005-02-05 - Version 1.0.1
##      - modified behaviuor, if tag used not by forum administrator
##      - modified order of tag processing (now it goes after [i]...[/i] tags)
##      - added cut of frameset from external file
##
##   2005-01-25 - Version 1.0.0
##      - Initial Release 
##
############################################################## 
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD 
############################################################## 

# 
#-----[ OPEN ]---------------------------------
# 
includes/bbcode.php
# 
#-----[ FIND ]---------------------------------
# 
	$text = str_replace("[/i:$uid]", $bbcode_tpl['i_close'], $text);
# 
#-----[ AFTER, ADD ]---------------------------
# 
	// [include] for external script use
	$text = preg_replace("#\[include\((.*?)\):$uid\]#sie", "use_include('\\1')", $text);
# 
#-----[ FIND ]--------------------------------- 
# 
function bbencode_first_pass($text, $uid)
{
# 
#-----[ AFTER, ADD ]---------------------------
# 
	global $userdata;
# 
#-----[ FIND ]---------------------------------
# 
	$text = preg_replace("#\[i\](.*?)\[/i\]#si", "[i:$uid]\\1[/i:$uid]", $text);
# 
#-----[ AFTER, ADD ]---------------------------
# 
	// [include] for external script use
	$text = preg_replace("#\[include\((.*?)\)\]#si", (($userdata['user_level'] == ADMIN) ? "[include(\\1):$uid]" : "[u:$uid]\\1[/u:$uid]") , $text);
# 
#-----[ FIND ]---------------------------------
# 
?>
# 
#-----[ BEFORE, ADD ]--------------------------
# 

function use_include($link) {
    $map = array(
	"'.*?<body[^>]*?>'si",			"",		// replace all before BODY
	"'</body[^>]*?>.*?'si",			"",		// replace all after BODY
	"'.*?<html[^>]*?>'si",			"",		// replace all before HTML
	"'</html[^>]*?>.*?'si",			"",		// replace all after HTML
	"'<head[^>]*?>.*?</head>'si",		"",		// replace all HEADers
	"'<script[^>]*?>.*?</script>'si",	"",		// replace all javaScript
	"'(^|[\r\n])[\s]+'",			"\\1",		// replace all leading spaces
	"'<frameset[^>]*?>.*?</frameset>'si",	"",		// replace all FRAMESETs
    );
/*
	"'<[\/\!]*?[^<>]*?>'si",		"",		// replace html-tags
	"'&(quot|#34);'i",			"\"",
	"'&(amp|#38);'i",			"&",
	"'&(lt|#60);'i",			"<",
	"'&(gt|#62);'i",			">",
	"'&(nbsp|#160);'i",			" ",
	"'&(iexcl|#161);'i",			chr(161),
	"'&(cent|#162);'i",			chr(162),
	"'&(pound|#163);'i",			chr(163),
	"'&(copy|#169);'i",			chr(169),
	"'&#(\d+);'e",				"chr(\\1)",
*/
    $i=0; while ($i < count($map)) { $srch[]=$map[$i++]; $repl[]=$map[$i++]; }
    ob_start();
    @include($link);
    $result=ob_get_contents();
    ob_end_clean();
    return trim(preg_replace($srch, $repl, $result));
}
# 
#-----[ SAVE/CLOSE ALL FILES ]-----------------
# 
# EoM
Последний раз редактировалось avm 25.03.2005 13:25, всего редактировалось 2 раза.
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 18 лет 2 месяца
Откуда: Estonia, Tallinn

Сообщение Vladson »

Я такого мода себе не поставил бы, этот мод из категории повышенной опасности
У меня уже родилась идея как взломать этот мод, и получить админский доступ к форуму где он стоит, но пока я не попробовал это только догадки
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение avm »

Не так страшен черт... Этот мод не опаснее, чем простой инклуд в любом php скрипте. Если конечно, не попросить админа форума использовать в [include(...)] полный урл своего скрипта :) . Если админ сам себе враг и на это поведется, то для такой мартышки опасно вообще быть админом ;)
Уточню, чтобы не было разнотолков: этот мод добавляет тег только для использования админом!
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение Coagulant »

// [sub] for subscript text
Такого тега по умолчанию нет в phpbb :)

Да, мод не добавляет безопасности форуму, скорее наоборот. Достаточно получить логин-пароль адмна (модератора) на форум и можно попрощаться с сайтом. Маловероятно, но всё же.
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 18 лет 2 месяца
Откуда: Estonia, Tallinn

Сообщение Vladson »

Если конечно, не попросить админа форума использовать в [include(...)] полный урл своего скрипта
Достаточно получить логин-пароль адмна
Поверьте мне не обязательно, админ сам поставит хотя и не будет знать даже о том что он на форуме был в этот момент есть такая вещь как XSS и благодаря этому моду её использовать проще простого...
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение avm »

Внес изменения направленные на улучшение безопасности. Также, спасибо Coagulant, "переставил" обработку тега.

Единственная угроза была в том, что этот тэг в сообщениях от "не администратора" вставлялся как текст, и если администратор ответил бы на такое сообщение, то обработка тега происходила. Таким образом, при условии невнимательности администратора, была реальная угроза подставить свой обработчик с помощью этого тега. В данный момент, если этот тег используется не администратором, то ссылка на внешний скрипт лишь отображается "с подчеркиванием" (сохраняется в БД не как [include(...)], а как текст с подчеркиванием!) и не будет никогда исполняться (инклудится).
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение avm »

Господа, еще кто-нибудь видит логические/фактические дыры? Хотя б намекните...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
[test]
phpBB 1.2.0
Сообщения: 17
Стаж: 17 лет 4 месяца

Сообщение [test] »

Если я тыркну цитировать, то я вижу путь к твоему скрипту.
Но это опять таки, больше вопрос глупости админа.
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение avm »

В общем, да, юзер может определить путь инклудуемого скрипта... Максимум что из этой фичи можно извлечь - попробовать запустить его напрямую и пропереться от счастья, если админ положил скрипт в папку в которой не стоит .htaccess "Deny from all". При этом, если скрипт выполнит вредоносное действие, то он уже должен был ето сделать еще раньше (прямо в сообщении :D ) по воле самого админа ;)

Вывод: этот тег неопасен для тех кто понимает, либо требуется описалово с количесвом строк раза в два больше самого мода :D
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
[test]
phpBB 1.2.0
Сообщения: 17
Стаж: 17 лет 4 месяца

Сообщение [test] »

ну скажем знать хотя бы домашнюю директорию пользователя уже полезно :). Особено если хостинг не персональный, как правило можно поиметь доступ файлам других пользователей этогоже сервера.

Но в целом соглашусь, криворукому админу всегда моды мешают.
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение avm »

Хмм. Если б я был хостером, я б всех засовывал в CHROOT !
Хотя я знаю, что на ValueHost'е года 2 назад можно было вообще по всему диску шеллом бродить...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Аватара пользователя
Сергей Секирин
phpBB 2.0.0
Сообщения: 244
Стаж: 17 лет 4 месяца

Проблема после установки мода

Сообщение Сергей Секирин »

avm
Установил на локальной версии Include BBcode MOD http://www.phpbbguru.net/community/topic1478.html

МОД РАБОТАЕТ!!! Выводит содержимое внешних файлов с оформлением (как раз то, что и нужно!!!)

Но после установке МОДА форум не покажешь пользователям:-) Вот, что получилось после установки Мода:


1. Отныне при добавлении любой темы в форум или исправлении (posting.php?mode=editpost...) старой над колонтитулом появляется вот что:

?>
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 496
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 498
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 499

А иногда (особенно после длительного просмотра темы, а затем попытке редактирования) пишет:
?>
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\sessions.php on line 305
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\sessions.php on line 306
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 496
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 498
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 499

2. сразу по добавлении (при подтверждении, что тема успешно добавлена) пишет:

?>
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\posting.php on line 590
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 496
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 498
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 499


2. Просто, при просмотре Админом любого сообщения форума, отныне, пишет:

?>
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\viewtopic.php on line 561
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 496
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 498
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 499

Если просматривает не админ, то:
?>
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 496
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 498
Warning: Cannot modify header information - headers already sent by (output started at c:\www\forum\includes\bbcode.php:853) in c:\www\forum\includes\page_header.php on line 499

При этом всё работает, всё открывается, просматривается, добавляется и удаляется, никаких помех, кроме этих предупреждений над верхним колонтитулом.

Вот строки вышеуказанных файлов:

page_header.php:
line

Код: Выделить всё

496	header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
497     }
498     header ('Expires: 0');
499     header ('Pragma: no-cache');
posting.php:
line

Код: Выделить всё

590				setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);

viewtopic.php:
line

Код: Выделить всё

561 	setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);

sessions.php:
line

Код: Выделить всё

305	tcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
306	setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);

В чём может быть проблема? Подскажите!!!

Добавлено спустя 22 минуты 57 секунд:

Может быть там в коде МОДА что-то лишнее? типа

?>
:?
Апология здравомыслия - странное занятие Православия:-)
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 17 лет 5 месяцев
Откуда: Москва

Сообщение avm »

Сергей Секирин

В файле includes/bbcode.php в самом конце сейчас у Вас дважды повторяется последовательность "?>" - уберите одну из них...

P.S. В моде эту досадную опечатку я исправил... благодарю.
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Аватара пользователя
Сергей Секирин
phpBB 2.0.0
Сообщения: 244
Стаж: 17 лет 4 месяца

Сообщение Сергей Секирин »

avm

Спасибо за такой прекрасный МОД.
Его обязательно нужно выложить в раздел МОДЫ, а не в форуме, где его не найдёшь (я поиском искал - не нашёл :? ), потому, что он значимо расширяет возможности администратора форума.

И пожалуйста, когда выйдет обновление phpBB (обещают ведь какие-то глобальные изменения, даже слышно, что хотят почти полностью переписать кода форума) - перепишите этот МОД!

Он так гибок и позволяет форматирование HTML инклудируемого полностью сохранить, причём действуют оба форматирования. Я ставил во внешнем файле ссылку с использованием классов subSilver.css типа class="postlink" href="/viewtopic.php?t=87" и это форматирование работает.

Вставка у меня работает и под модератором и даже в сообщениях пользователей, когда этот код инклуда вставляет админ! (например админ может добавить в сообщение 1 или 100 пользователей ма-аленькую строчку инклуда и у всех буде бо-ольшая прибавка к их тексту, к тому-же отформатированная и красивая.

Спасибо!
Апология здравомыслия - странное занятие Православия:-)
Аватара пользователя
Сергей Секирин
phpBB 2.0.0
Сообщения: 244
Стаж: 17 лет 4 месяца

Сообщение Сергей Секирин »

Не могу понять: у меня на локальной версии инклудируемый файл формата HTML вставляется как надо, т.е. текст идёт непрерывным по всей ширине страницы и т.д. На хост я перенёс скрипты через FTP, так что код идентичный. (МОжет что-то забыл перенести??? Давно было...)

А на хосте строки читаются как в
редакторе HTML - строками!!!, по стольку
символов,
сколько их в строках source кода, т.
е. как здесь написано.

В чём может быть дело - почему конец строк в файле источнике воспринимается как новый абзац, когда там нет никакого тэга и переноса быть не должно в выводе текста?
Помогите, кто разбирается.

Добавлено спустя 18 минут 42 секунды:

В принципе это мелочь, я уже приспособился готовить тексты, делая в редакторе HTML каждый абзац в одной очень длинной строке. Но подготовка текста занимает время и подумалось - может кто-то знает, хотя бы где искать ошибку... :oops:
Апология здравомыслия - странное занятие Православия:-)

Вернуться в «Бета-версии модов для phpBB 2.0.x»