CSRF in SpiceFuse Shoutbox (mybb)
Credit
Johnburn
The stories:
Tadi xda keje aku tgk2 code mybb dengan target nk bypass xss filter mybb melalui bbcode dia. dlm aku tgk2 tu aku nmpk satu bnda yg agak menarik pada code shoutbox (aku install plugin SpiceFuse Shoutbox yg sama mcm kt TBD and my0d). Plugin ni vulnerable kepada CSRF melalui image tag.
PoC:
Jika user post yang berikut kat shoutbox, mana2 user len yg view shoutbox secara automatik akan turut post sebarangPost jika browser diset untuk load image (default).
Quick Fix:
Bleh elak dengan menggunakan token pada shoutbox. Untuk tmbah token, bleh ikut yg berikut:
inc/plugins/tpl_sf_shoutbox.txt
cari line berikut:
dan gantikan dengan line ni:
jscripts/shoutbox.js
cari line:
tambah line berikut selpas code di atas:
cari line berikut:
dan gantikan dengan line ni:
inc/plugins/spicefuse_shoutbox.php
cari line berikut:
tambah code berikut selepas baris code di atas:
p/s: mungkin perlu reactivate blk shoutbox supaya apa yg diubah pada template untuk take effect.
Tadi xda keje aku tgk2 code mybb dengan target nk bypass xss filter mybb melalui bbcode dia. dlm aku tgk2 tu aku nmpk satu bnda yg agak menarik pada code shoutbox (aku install plugin SpiceFuse Shoutbox yg sama mcm kt TBD and my0d). Plugin ni vulnerable kepada CSRF melalui image tag.
PoC:
Jika user post yang berikut kat shoutbox, mana2 user len yg view shoutbox secara automatik akan turut post sebarangPost jika browser diset untuk load image (default).
Code:
[img]http://my0d.my/forum/xmlhttp.php?action=add_shout&shout_data=sebarangPost[/img]
Quick Fix:
Bleh elak dengan menggunakan token pada shoutbox. Untuk tmbah token, bleh ikut yg berikut:
inc/plugins/tpl_sf_shoutbox.txt
cari line berikut:
Code:
<td class="trow2" align="center"><form onSubmit="ShoutBox.postShout(); $('shout_data').value = ''; return false;">{$lang->sf_sb_shout} <input type="text" id="shout_data" size="50" /> - <input type="submit" value="{$lang->sf_sb_shoutnow}" id="shouting-status" /></form></td>
dan gantikan dengan line ni:
Code:
<td class="trow2" align="center"><form onSubmit="ShoutBox.postShout(); $('shout_data').value = ''; return false;">{$lang->sf_sb_shout} <input type="hidden" id="shout_key" value="{$mybb->post_code}" /><input type="text" id="shout_data" size="50" /> - <input type="submit" value="{$lang->sf_sb_shoutnow}" id="shouting-status" /></form></td>
jscripts/shoutbox.js
cari line:
Code:
message = $("shout_data").value;
tambah line berikut selpas code di atas:
Code:
key = $("shout_key").value;
cari line berikut:
Code:
postData = "shout_data="+encodeURIComponent(message).replace(/\+/g, "%2B");
dan gantikan dengan line ni:
Code:
postData = "shout_data="+encodeURIComponent(message).replace(/\+/g, "%2B")+"&shout_key="+key;
inc/plugins/spicefuse_shoutbox.php
cari line berikut:
PHP Code:
if ($mybb->user['usergroup'] == 1 OR $mybb->user['uid'] < 1 OR !sb_can_view()) {
die("failed!");
}
tambah code berikut selepas baris code di atas:
PHP Code:
verify_post_check($mybb->input['shout_key']);
p/s: mungkin perlu reactivate blk shoutbox supaya apa yg diubah pada template untuk take effect.
0 comments:
Post a Comment