PDA

View Full Version : Fix hack sql inject ở 1 ố web thông dụng hiện nay



bachcotsau
18-07-08, 11:49 PM
Hôm nay tôi đã hỏi qua người đã phát hiện ra lỗi của sql inject và đã fix cái này ,nay tôi share code này cho anh em nào đang dùng web mà bị hạck pass acc thì dùng code này để fix lại .

Vào thư mục includes tìm file web_modules.php open nó ra và tìm đoạn code



function modules()

xóa hết code function này đi và thay vào đoạn code dưới để fix ,đảm bảo 100% chống dc lỗi .


function modules(){
if(isset($_GET['op'])){
$op = $_GET['op'];
$bachcotsau = chr(92);
$op = str_replace($bachcotsau , "", $_GET['op']);
$op = str_replace("/" , "", $op);
$op = str_replace("%00" , "\0", $op);
$op = str_replace("?" , "", $op);
$op = htmlspecialchars($op);
if (is_file("modules/".$op.".php")) {
include("modules/".$op.".php");

} else {
require("config.php");
Echo ("<br>$warning_start Bạn hãy xem lại đường link! $warning_end<br>");
}
}
}


Thank to NyLan, người phát hiện lỗi .

Nylan
18-07-08, 11:59 PM
Hi...ngoài Bug này ra..còn khá nhiều Bug...nếu tìm ra được và khắc phục được em sẽ share lên cho mọi người.Thank to bachcotsau.

Bose Online
19-07-08, 12:06 AM
ủa chổ này là gì vậy bạn , có ý nghĩa gì ko ?

$bachcotsau = chr(92);
$op = str_replace($bachcotsau , "", $_GET['op']);

Nylan
19-07-08, 12:09 AM
Không có sao đâu bạn..nó chỉ là 1 hàm gọi nhanh chr(92) .."bachcotsau" chỉ đổi tên lại thôi mà...(không bik có phải hem >_^)

bachcotsau
19-07-08, 12:24 AM
Nói chung cái code trên chỉ chống dc lỗi của tất cả các file có trong thư mục includes .Còn các file trong thư mục admin chưa được chống ở các bản thông thường hiện nay :0 . Vì thế nếu bạn muốn đảm bảo và thủ công thì đổi tên thư mục quản lý admin đi khi nào muốn dùng thì đổi tên lại =)) .

LoveBol
19-07-08, 07:05 PM
Khuyên các bạn chèm thêm câu :


$op = str_replace(".." , "", $op);


Bị 1 lần chừa rồi......................

LoveBol
20-07-08, 08:06 AM
Bài của bachcotsau còn thiếu

Tớ xin bổ xung:

ở file : \includes\web_modules.php

Tìm các function modules() function user_modules() và function bank_modules()

Sau đó sửa thành như sau :





function modules(){
if(isset($_GET['op'])){
$op = $_GET['op'];
$g = chr(92);
$op = str_replace($g , "", $_GET['op']);
$op = str_replace("/" , "", $op);
$op = str_replace("%00" , "\0", $op);
$op = str_replace("?" , "", $op);
$op = str_replace(".." , "", $op);
$op = htmlspecialchars($op);
if (is_file("modules/".$op.".php")) {
include("modules/".$op.".php");

} else {
require("config.php");
Echo ("<br>$warning_start Module $op Could Not Be Found By MuWeb! $warning_end<br>");
}
}
}
function user_modules(){
if($_GET['option']) {
$op=$_GET['option'] ;
$g = chr(92);
$op = str_replace($g , "", $_GET['option']);
$op = str_replace("/" , "", $op);
$op = str_replace("%00" , "\0", $op);
$op = str_replace("?" , "", $op);
$op = str_replace(".." , "", $op);
$op = htmlspecialchars($op);
$adr='./modules/user/'.$op.'.php' ;
include($adr);
}
}
function bank_modules(){
if($_GET['option']) {
$op=$_GET['option'] ;
$g = chr(92);
$op = str_replace($g , "", $_GET['option']);
$op = str_replace("/" , "", $op);
$op = str_replace("%00" , "\0", $op);
$op = str_replace(".." , "", $op);
$op = str_replace("?" , "", $op);
$op = htmlspecialchars($op);

$adr='./modules/bank/'.$op.'.php' ;
include($adr);
}
}