Автор Гілка: Що не так? (Арахні)  (Прочитано 1422 раз)

gdekjifgb

  • Гість
Що не так? (Арахні)
« : 2017-09-10 16:21:26 »
Арахноїд тут http://www.arachni-scanner.com/

Всі форми, крім однієї, мають ProtectFormKey. Тобто форми з pfk-ключом, який перевіряється.

Все що іде в send.php спочатку перевіряється на валідність pfk

В show.php є єдина не захищена форма. Значення її змінних впливає тільки на вивід деяких даних. До скл не має ніякого відношення, значення цих змінних жорстко перевіряється.

search.php взагалі іще нема

в ulogin.php також э перевірка pfk.
із цієї форми йде передача даних в ulogin.php
<form name="loginfrm" action="/ulogin.php" method="POST">
 <b> login: </b>
<br> </br>
<input type="text" required="" name="login" size="32" maxlength="64">
 </input>
 <br> </br> <br> </br>
<b> password: </b> <br> </br>
<input name="upsw" required="" type="password" size="32" maxlength="255" value=""> </input>
<br> </br> <br> </br>
 <input class="send_but" type="submit" value="login">
</input> <a href="/reset.php"> Забули пароль? </a>
 <input type="hidden" name="pfk" value="rLAnWqJC||8535cb0dd37344705edf411fc3abc85f"> </input>
</form>
Що не подобається Арахні? Про які CSRF воно мені розказує?
« Змінено: 2017-09-10 16:31:01 від gdekjifgb »

Миха́йло Даниле́нко

  • Гість
Re: Що не так? (Арахні)
« Відповідей #1 : 2017-09-11 13:25:33 »
Значення поля pfk статичне? Якщо так — то правильно лається.

gdekjifgb

  • Гість
Re: Що не так? (Арахні)
« Відповідей #2 : 2017-09-11 17:47:57 »
? еее-м.... статичне - це як?
---
Кожного разу при оновленні сторінки значення буде нове.

Миха́йло Даниленко

  • Гість
Re: Що не так? (Арахні)
« Відповідей #3 : 2017-09-11 18:44:15 »
Значить не статичне. Як вираховується? (на основі чого)

gdekjifgb

  • Гість
Re: Що не так? (Арахні)
« Відповідей #4 : 2017-09-11 19:06:20 »
та тут нічого секретного. В колі програміств воно називається токеном. Але мені така назва не подобається.

1 є деяка сесійна змінна - для поточної сесії вона одна і значення (для сесії) не змінне. (cзм1)

2 генерується рандомний ключ (рк1)

3 робиться мд5 з ( плюс мінус множення ділення конкатенація cзм1 і рк1 ). Отримуємо мд5

4 у формі записаний рк1 (rLAnWqJC) і мд5 (8535cb0dd37344705edf411fc3abc85f)
---
Всим програмам довіряти не можна. не виключаю, що це то такий бзік(?) у Архані.

але інший шукач skipfish також щось типу того каже:

HTML form with no apparent XSRF protection

http://mbs/send.php [ show trace + ] 
http://mbs/show.php?wsh=8&pg=1&id=1 [ show trace + ]
http://mbs/send.php [ show trace + ] 
http://mbs/show.php?wsh=12&pg=1&id=1 [ show trace + ] 
http://mbs/show.php?wsh=13&pg=1&id=1 [ show trace + ] 
http://mbs/show.php?wsh=8&pg=1&id=1 [ show trace + ] 
http://mbs/uregistr.php [ show trace + ] 
http://mbs/search.php?ss=1 [ show trace + ]

« Змінено: 2017-09-11 19:12:50 від gdekjifgb »

Миха́йло Даниленко

  • Гість
Re: Що не так? (Арахні)
« Відповідей #5 : 2017-09-11 23:26:43 »
Іще одне — pk1 точно рандомний? Ви перевіряли, що ключ таки міняється у формі? Можливо треба задати зерно (seed) генератора випадкових чисел?

gdekjifgb

  • Гість
Re: Що не так? (Арахні)
« Відповідей #6 : 2017-09-12 00:19:41 »
Іще одне — pk1 точно рандомний? Ви перевіряли, що ключ таки міняється у формі? Можливо треба задати зерно (seed) генератора випадкових чисел?
рк1 отримується не із генератора рандомних чисел - то 8 символів з малих та великих англолітер. Нижче приклад.

 На практиці все чітко працює. Думаю що не варто ДУЖЕ зациклюватись на цьому, хоча все-таки цікаво (тому і запитав).

Скоро в продакшн - вирішив детально все просканувати спецпрограмами.

Буду я далі програмити (гроші на хостинг є).

Цитата
Ви перевіряли, що ключ таки міняється у формі?
[smiley=rofl.gif] *
Я його (код генерації і перевірки) сам написав. Кожного разу для кожної форми на сторінці (є не одна сторінка з багатьма формами) pfk різний.

---
* - прошу вибачити мене за такий смайл.
---
рк1 у формах нижче можна побачити. pfk має такий вигляд РандомнийКлюч||МД5

<h1>myFriends</h1>
<div class="oldfr">
<div class="ava_fleft"> <a class="nbg" href="/user.php?id=10"><img src="http://mbs/ava/J/vT/qbgTUWBjpX0973934001504965932M" width="75" height="75"></a></div>

<div class="usname">Я дИсятый пользовател</div><!--usname-->

<div class="pcf">
p: <a href="show.php?wsh=16&pg=1&id=10">4294967295</a> | c: <a href="show.php?wsh=17&pg=1&id=10">4294967295</a> | f: 4294967295
</div><!--pcf-->

<div class="frendbuts">


<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="stop friendship">
<input type="hidden" name="exe" value="stopfr">
<input type="hidden" name="id" value="10">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="QTcBpVDX||f28cc23704a183082ac84775e0965f11">
</form>



<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="block user">
<input type="hidden" name="exe" value="block">
<input type="hidden" name="id" value="10">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="PYMBZwXJ||c6f4e145b3c30fd0ab24b57dce29e39d">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="Alert...">
<input type="hidden" name="exe" value="alert">
<input type="hidden" name="id" value="10">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="lLtOUZER||3c5d7d728237de19b0689292c3c9ed3f">
</form>
</div><!--frendbuts-->

</div><!--newfr_oldfr-->

<div class="oldfr">
<div class="ava_fleft"> <a class="nbg" href="/user.php?id=5"><img src="http://mbs/ava/k/Vt/XJZFSHqhfY0886741001504170841M" width="75" height="75"></a></div>

<div class="usname">User5</div><!--usname-->

<div class="pcf">
p: <a href="show.php?wsh=16&pg=1&id=5">0</a> | c: <a href="show.php?wsh=17&pg=1&id=5">0</a> | f: 0
</div><!--pcf-->

<div class="frendbuts">


<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="stop friendship">
<input type="hidden" name="exe" value="stopfr">
<input type="hidden" name="id" value="5">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="mdakADCK||e8b56cec69dc2463ee99184d1c28d581">
</form>



<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="block user">
<input type="hidden" name="exe" value="block">
<input type="hidden" name="id" value="5">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="ZWLhUFoy||f148f12468b5f0e04a955d0e074836de">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="Alert...">
<input type="hidden" name="exe" value="alert">
<input type="hidden" name="id" value="5">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="mdfVFYNg||8af0833258243783b701e533632b9a29">
</form>
</div><!--frendbuts-->

</div><!--newfr_oldfr-->

<div class="oldfr">
<div class="ava_fleft"> <a class="nbg" href="/user.php?id=2"><img src="http://mbs/ava/w/et/HjNwXPSIli0300554001504170684M" width="75" height="75"></a></div>

<div class="usname">User222QQQQQQQQQQQQQQ</div><!--usname-->

<div class="pcf">
p: <a href="show.php?wsh=16&pg=1&id=2">2</a> | c: <a href="show.php?wsh=17&pg=1&id=2">5</a> | f: 0
</div><!--pcf-->

<div class="frendbuts">


<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="stop friendship">
<input type="hidden" name="exe" value="stopfr">
<input type="hidden" name="id" value="2">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="WVnLhOay||d861f6a65e4cdb03c27f55f6eccc5c45">
</form>



<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="block user">
<input type="hidden" name="exe" value="block">
<input type="hidden" name="id" value="2">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="ehqCUmlZ||ef322782bad339c6c61acc12975e5dd4">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="Alert...">
<input type="hidden" name="exe" value="alert">
<input type="hidden" name="id" value="2">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="DgosFTAa||cd27d6b3001e86366c15b45ad9a726a0">
</form>
</div><!--frendbuts-->

</div><!--newfr_oldfr-->

<div class="oldfr">
<div class="ava_fleft"> <a class="nbg" href="/user.php?id=4"><img src="http://mbs/ava/Q/YN/QgcRPmqlMY0507560001504170807M" width="75" height="75"></a></div>

<div class="usname">User4 QQQQQQQQQQQQQQQ</div><!--usname-->

<div class="pcf">
p: <a href="show.php?wsh=16&pg=1&id=4">0</a> | c: <a href="show.php?wsh=17&pg=1&id=4">0</a> | f: 0
</div><!--pcf-->

<div class="frendbuts">


<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="stop friendship">
<input type="hidden" name="exe" value="stopfr">
<input type="hidden" name="id" value="4">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="KpLnlUrI||6f0330d5fd09139b5a081c28560cf7a9">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="users friends">
<input type="hidden" name="exe" value="showfr">
<input type="hidden" name="id" value="4">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">
<input type="hidden" name="pfk" value="WXoKacnf||aec4cc9585c1fe2b1b98f3911920fca3">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="block user">
<input type="hidden" name="exe" value="block">
<input type="hidden" name="id" value="4">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="snGXeIqA||cb020fb81a9b19b2cf705995af80d16f">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="Alert...">
<input type="hidden" name="exe" value="alert">
<input type="hidden" name="id" value="4">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="vRbruHoc||0e4a8218371e63565d2a607f07a72708">
</form>
</div><!--frendbuts-->

</div><!--newfr_oldfr-->

<div class="oldfr">
<div class="ava_fleft"> <a class="nbg" href="/user.php?id=3"><img src="http://mbs/ava/K/xq/KMSfZEcDNI0339560001504170751M" width="75" height="75"></a></div>

<div class="usname">User3</div><!--usname-->

<div class="pcf">
p: <a href="show.php?wsh=16&pg=1&id=3">149672</a> | c: <a href="show.php?wsh=17&pg=1&id=3">29495</a> | f: 967295
</div><!--pcf-->

<div class="frendbuts">


<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="stop friendship">
<input type="hidden" name="exe" value="stopfr">
<input type="hidden" name="id" value="3">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="joZqmYsN||899d75809ce0aca600510f4d07231ed3">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="users friends">
<input type="hidden" name="exe" value="showfr">
<input type="hidden" name="id" value="3">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">
<input type="hidden" name="pfk" value="wKTCOHVz||3af8d5790b8540119eb297a1f288755c">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="block user">
<input type="hidden" name="exe" value="block">
<input type="hidden" name="id" value="3">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="wLQxAmOg||d540571a057ba2e931cd03cf63e12c20">
</form>

<form action="/exeuser.php" method="post">
<input class="pad rmrg" type="submit" value="Alert...">
<input type="hidden" name="exe" value="alert">
<input type="hidden" name="id" value="3">
<input type="hidden" name="ref" value="relsh">
<input type="hidden" name="pg" value="1">
<input type="hidden" name="wsh" value="1">

<input type="hidden" name="pfk" value="fvzeUPpF||ca178fbdc465d902c8d02855ee9e3044">
</form>
</div><!--frendbuts-->

</div><!--newfr_oldfr-->


ага, також цікаво що про exeuser.php я у звітах програм нічого не помітив. Потрібно ще раз глянути.
---
ну і у мене іще є багато пи тань про горизонтальне масштабування, але то вже інша історія.
« Змінено: 2017-09-12 00:47:52 від gdekjifgb »

Миха́йло Даниле́нко

  • Гість
Re: Що не так? (Арахні)
« Відповідей #7 : 2017-09-12 10:58:32 »
рк1 отримується не із генератора рандомних чисел - то 8 символів з малих та великих англолітер. Нижче приклад.
Ок, а звідки беруться ці великі і малі літери? Тобто як ви вибираєте, які літери брати, які не брати? Мабуть же ж з використанням генератора випадкових чисел?

Цитата
Я його (код генерації і перевірки) сам написав.
Оце мене і бентежить.

Цитата
Кожного разу для кожної форми на сторінці (є не одна сторінка з багатьма формами) pfk різний.
Ви це точно перевірили? Перезавантаження сторінки призводить до зміни коду в усіх формах? Код не повторюється в межах 1000 звернень?

gdekjifgb

  • Гість
Re: Що не так? (Арахні)
« Відповідей #8 : 2017-09-12 11:37:16 »
Цитата
Ви це точно перевірили? Перезавантаження сторінки призводить до зміни коду в усіх формах? Код не повторюється в межах 1000 звернень?

Цитата
Цитата
Я його (код генерації і перевірки) сам написав.
Оце мене і бентежить.
коли писав і перевіряв випадковість рк1,то випадковість (неповторюваність) на 8 символах хороша.  Перевіряв  зберігаючи рк1 у  файл і потім
sort -h file.php |uniq -c|sort -hзараз знову таку перевірку зроблю.
---
іще раз перевірив.

На 1 000 000 ключів з 8 символів нема жодного повтору (думаю це хороша частотновипадковість (чи як воно по науковому називається))

sort -h 1000000.txt |uniq -c|sort -h
...
...
      1 ZzYtCGco
      1 zZYUGDSM
      1 zZyUqKXo
      1 zZYxFVmX
      1 zZyxFVYw
      1 zZYyfknA


а якщо на 4 символа (1 000 000 варіантів), то співпадання є

sort -h 1000000.txt |uniq -c|sort -h
...
...
      3 ZpyV
      3 ZqCG
      3 ZQFR
      3 ZqlK
      3 zQVR
      3 ZqWx
      3 zQYA
      3 Zrac
      3 zRbv
      3 zRDB
      3 ZrGn
      3 ZRjG
      3 ZrsC
      3 ZRYM
      3 ZScD
      3 ZsGE
      3 zSsf
      3 zSvJ
      3 zsvk
      3 zsyY
      3 ZSzp
      3 ZtbF
      3 ZTCM
      3 ztMY
      3 ztRT
      3 ztSv
      3 ztWP
      3 ZuaQ
      3 zuFk
      3 ZUhb
      3 ZuHC
      3 zUhN
      3 ZUWe
      3 ZVCw
      3 zVgG
      3 zVgl
      3 zvhj
      3 zVjk
      3 zVNa
      3 ZvrG
      3 ZvWO
      3 zwdl
      3 ZWQp
      3 ZwRF
      3 zWtP
      3 zwUY
      3 zwYk
      3 zxBb
      3 zXeE
      3 zXnf
      3 zxZg
      3 zyAJ
      3 ZykG
      3 ZYRn
      3 zYSD
      3 zYTj
      3 ZzBI
      3 zZNS
      3 ZzoX
      4 aALD
      4 akVY
      4 aMIh
      4 APnY
      4 AToZ
      4 aVEf
      4 Bqsp
      4 byFt
      4 byRC
      4 cmQi
      4 cpQX
      4 DgWv
      4 DmUR
      4 dnGy
      4 Dnjp
      4 DTeY
      4 dxis
      4 eGij
      4 EGZj
      4 Epjw
      4 FLrq
      4 fpea
      4 fqvF
      4 GflP
      4 GgVH
      4 GhMW
      4 giWx
      4 gKLd
      4 GPah
      4 GRrf
      4 GSJk
      4 haqD
      4 heJF
      4 HiQU
      4 HlwL
      4 HSOl
      4 Htab
      4 huTX
      4 HVpr
      4 HWXD
      4 HZfE
      4 HZJn
      4 iDpz
      4 ihbF
      4 IhjR
      4 ILjP
      4 iqoa
      4 IUaz
      4 iumc
      4 iWcQ
      4 IyjX
      4 iYqV
      4 jbKH
      4 JcMm
      4 Jinf
      4 JmlQ
      4 JyAF
      4 kADv
      4 KTHE
      4 LoaI
      4 lQNo
      4 Lqsd
      4 lRUz
      4 lRwu
      4 LStN
      4 LudW
      4 Lumc
      4 LzAj
      4 mfyD
      4 NKXT
      4 nTfx
      4 NUae
      4 NUhq
      4 oFWQ
      4 OlHB
      4 oMtL
      4 oVgB
      4 ovMn
      4 OZLz
      4 pbxf
      4 PFQz
      4 PGLF
      4 pGlg
      4 pHqO
      4 qBFk
      4 QDen
      4 QEpL
      4 QETY
      4 Qhbv
      4 qKvg
      4 QNBr
      4 qOSI
      4 qspR
      4 Qtei
      4 QTWY
      4 QVpj
      4 qXjg
      4 rfXq
      4 RVph
      4 rzyJ
      4 Sfgw
      4 SFwQ
      4 sgxP
      4 sjZm
      4 sQeD
      4 srGL
      4 sRkV
      4 srmS
      4 swWX
      4 syzY
      4 TFmO
      4 tgpq
      4 thBW
      4 ubJL
      4 uhEX
      4 UKuh
      4 VCWc
      4 vFTO
      4 VOJP
      4 vPed
      4 vRLm
      4 vybl
      4 vZyt
      4 WAof
      4 wBVg
      4 wsZT
      4 WVfe
      4 WyJC
      4 XEhF
      4 Xfpk
      4 xhCO
      4 XpCk
      4 xyGO
      4 YcAD
      4 yFJG
      4 yiHO
      4 YinF
      4 zylZ
      4 zYTQ
      5 fRXw
      5 HqPV
      5 HXKg

Ну звісно ж я можу рандомний ключ легко зробити з 20 або 40 англобукв.
« Змінено: 2017-09-12 12:17:43 від gdekjifgb »

Миха́йло Даниле́нко

  • Гість
Re: Що не так? (Арахні)
« Відповідей #9 : 2017-09-12 12:16:56 »
коли писав і перевіряв випадковість рк1,то випадковість (неповторюваність) на 8 символах хороша.  Перевіряв  зберігаючи рк1 у  файл і потім
sort -h file.php |uniq -c|sort -h
Ну то звідки беруться ці літери? Ви точно впевнені, що live код на сайті працює точно так же, як ви генеруєте перевірку? Може ви тут запускаєте генератор у циклі, і він видає багато різних значень, а там при кожному окремому старті обробки запиту видає одні і тіж значення?

gdekjifgb

  • Гість
Re: Що не так? (Арахні)
« Відповідей #10 : 2017-09-12 12:33:07 »
Ну то звідки беруться ці літери? Ви точно впевнені, що live код на сайті працює точно так же, як ви генеруєте перевірку? Може ви тут запускаєте генератор у циклі, і він видає багато різних значень, а там при кожному окремому старті обробки запиту видає одні і тіж значення?
та ніякого циклу нема. ніяких генераторів нема.

Код на сайті... ем-м-м.... У мене поки що лише на локалхості сайт.

ехх, доведеться відкрити  вам "бальшую тайну".

1 є деякий масив
2 йому робиться shuffle() і array_slice()

обмеження довжини ключа - це кількість елементів масиву.
« Змінено: 2017-09-12 12:38:18 від gdekjifgb »

Миха́йло Даниле́нко

  • Гість
Re: Що не так? (Арахні)
« Відповідей #11 : 2017-09-12 14:16:46 »
А як ви його тоді тестували на веб-тестерах, якщо воно лише на локалхості?

shuffle() як раз і використовує генератор випадкових чисел. Цілком можливо, що без ініціалізації генератора порядок виходить завжди однаковий.

gdekjifgb

  • Гість
Re: Що не так? (Арахні)
« Відповідей #12 : 2017-09-12 15:00:11 »
А як ви його тоді тестували на веб-тестерах, якщо воно лише на локалхості?

shuffle() як раз і використовує генератор випадкових чисел. Цілком можливо, що без ініціалізації генератора порядок виходить завжди однаковий.
2 ну я ж явно не використав генератора випадкових.

а по першому питанню...  :-\ не дуже зрозумів.

на локалхості крутиться веб-сервер, доступ до сайту (точніше "до проекту". Можливо вас заплутало те що я вжив слово "сайт*"?) отримується по http.

---
* - можливо слово САЙТ ви зрозуміли, як  вже існуючий сайт в мережі?