Múlt héten milw0rm SQL injection jellegű biztonsági rést talált a WordPress Forum plugin 1.7.4 verziójában. Én pedig itt megmutatom, hogyan lehet a hibát kijavítani.
Az eredeti hibajelentés itt található.
Mint ahogyan a bevezetőben is említettem, ez egy standard SQL parancs befecskendezésés hiba, vagy szépen angolul SQL injection. A hiba a _GET paraméter trehány kezelésén és a forum_get_posts_by_user funkció hibás hívásán alapul.
A forum_show_profile funkció a ludas, ami egy alias a forum_get_profile funkcióra, a wp-forum.php 917. sorában:
function forum_show_profile(){
return forum_get_profile($_GET['user']);
}
Nos, nézzük mit is csinál a forum_get_profile funkció. Erre választ a forum_functions.php 363. sorában találhatunk:
function forum_get_profile($user){
global $user_ID, $table_threads, $wpdb, $rss_link, $profile_link;
$profile = new WP_User($user);
...
Recent posts: ".forum_get_posts_by_user($user, 10)."
...
Azt hiszem, a legegyszerűbb megoldás az, hogy a kapott $user változót erőszakosan számmá konvertáljuk még WP_User osztály hívása előtt. Valahogy így:
$user = intval($user);
$profile = new WP_User($user);
Nos, ennyi volt 🙂
Comments
2 587 hozzászólás a(z) “Megoldás a WordPress WP-Forum 1.7.4 SQL injection sebezhetőségre” bejegyzéshez
[…] cikket, amit itt syntax highlighter hiányában nem tudok publikálni. De elérhető magyarul itt, angolul pedig […]