Tóm tắt quá trình hack athena.com.vn
Tóm tắt quá trình hack athena.com.vn
(Local attack)
Bỏ qua mấy giai đoạn lặt vặt bây giờ làm việc với trường hợp đã có sẵn con webshell //http://12a6dh.info/forum/cache/skin_cache/cacheid_2/skin_public.php
Chạy con backdoor trên kết nối vào mysql của 12a6 sau đó tiến hành lấy sources của athena. Trong trường hợp này xác định link của trang quản trị là /admin nên chỉ chú trọng vào việc lấy code của các file liên quan đến cái này thui (khi nào có con backdoor trên host của nó rùi lấy tiếp). Lấy code bằng mấy câu query sau:
CREATE TABLE test(text LONGTEXT);
load data local infile 'path/file' into table test FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY '\n';
Có code rùi thì ngồi đọc nó, trước hết là thằng index.php
session_start(); // quản lý bằng session chứ ko phải bằng cookie, có nghĩa là khi ta vào link admin nó sẽ tạo cho ta một phiên làm việc, phiên làm việc này sẽ được server tạo ra và lưu vào file sess_...... (VD: sess_2d193503319fefd5a48b208d48b69d36) nằm trên server, mặc định của phiên làm việc này là ko hợp lệ nhưng nếu ta đăng nhập thành công thì server sẽ chỉnh sửa file sess_ kia thành hợp lệ (hack được athena phải cảm ơn thằng này nhiều ). Tiếp tục nào case 'login' : include "_login.php"; break; thằng index sơ sơ như vậy là được rùi bây giờ chuyển sang thằng _login.php
if (isset($_POST['txtUsername'])) $admin_user=$_POST['txtUsername']; else $admin_user='';
if (isset($_POST['txtPassword'])) $admin_pass=$_POST['txtPassword']; else $admin_pass='';
if (isset($_POST['txtPassSec'])) $admin_sec=$_POST['txtPassSec']; else $admin_sec='';
hô hô user, pass1, pass2.
$admin_sec = md5(base64_encode($admin_sec));
if ($admin_sec == "53f8797e875fb1b667c86e4ae15cee24") {
if ( (!empty($admin_user)) && (!empty($admin_pass)) )
{
$admin_pass = md5($admin_pass);
$query = "select * from admin WHERE username='$admin_user' AND password='$admin_pass'";
ặc ặc cái pass2 của nó vừa base64_encode vừa md5, nó mà đặt pass dài xíu là ngồi decode đù người luôn mà chưa chắc gì có kết quả, còn cái pass1 cũng bị md5 luôn.
Có 2 cách giải quyết được đặt ra, thứ nhất là dò 2 cái pass của nó, thứ 2 là fake cookie. Cách thứ nhất ko chơi, ngu gì mà ngồi dò pass trong khi cách thứ 2 có vẻ dễ ăn hơn và khả năng thành công cũng cao hơn. Hồi nãy coi file index thấy nó quản lý phiên làm việc bằng session coi bộ ngon ăn. Vậy là quyết định chọn cách 2.
Có 2 hướng giải quyết cho cách 2:
+ Thứ nhất là khi ta mở trang index.php ra nó sẽ tạo cho ta một session trên server, công việc của ta là tìm cách edit cái phiên làm việc sao cho nó trở thành hợp lệ. Coi cái phpinfo() của nó xem nào session.save_path=/tmp. Ok rùi mở cái thư mục /tmp coi thử có gì trong đó. Ặc ặc …. bị access denied rùi coi bộ hướng đi này ko ổn, chuyển hướng đi thui.
+ Thứ hai nếu ta edit cái file session ko được thì tại sao ta ko tạo ra một cái file session mới hợp lệ với cái source đã có kia rùi fake cookie của web browser với cái session mới đó. Vậy là đã xác định được chính xác hướng đi và những cái cần phải làm, công việc tiếp theo là up sources của athena lên host 12a6, edit lại cái pass2 trong file _login.php, edit cái pass1 trong db của nó, xong rùi login nào … vừng ơi mở ra…. bùm vào được admin control panel rùi (cái này là đồ giả nằm trên host của 12a6) vào phần quản lý cookie của web browsers (opera) coi thử cái session của nó là gì nào, copy nó lại bây giờ chuyển qua thằng athena fake bằng cái session đó, refresh lại nào …. bùm …. he he heeeeee vào được admin control panel của athena rùi (hàng thật chất lượng cao ), tìm chỗ up con shell…..
(Local attack)
Bỏ qua mấy giai đoạn lặt vặt bây giờ làm việc với trường hợp đã có sẵn con webshell //http://12a6dh.info/forum/cache/skin_cache/cacheid_2/skin_public.php
Chạy con backdoor trên kết nối vào mysql của 12a6 sau đó tiến hành lấy sources của athena. Trong trường hợp này xác định link của trang quản trị là /admin nên chỉ chú trọng vào việc lấy code của các file liên quan đến cái này thui (khi nào có con backdoor trên host của nó rùi lấy tiếp). Lấy code bằng mấy câu query sau:
CREATE TABLE test(text LONGTEXT);
load data local infile 'path/file' into table test FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY '\n';
Có code rùi thì ngồi đọc nó, trước hết là thằng index.php
session_start(); // quản lý bằng session chứ ko phải bằng cookie, có nghĩa là khi ta vào link admin nó sẽ tạo cho ta một phiên làm việc, phiên làm việc này sẽ được server tạo ra và lưu vào file sess_...... (VD: sess_2d193503319fefd5a48b208d48b69d36) nằm trên server, mặc định của phiên làm việc này là ko hợp lệ nhưng nếu ta đăng nhập thành công thì server sẽ chỉnh sửa file sess_ kia thành hợp lệ (hack được athena phải cảm ơn thằng này nhiều ). Tiếp tục nào case 'login' : include "_login.php"; break; thằng index sơ sơ như vậy là được rùi bây giờ chuyển sang thằng _login.php
if (isset($_POST['txtUsername'])) $admin_user=$_POST['txtUsername']; else $admin_user='';
if (isset($_POST['txtPassword'])) $admin_pass=$_POST['txtPassword']; else $admin_pass='';
if (isset($_POST['txtPassSec'])) $admin_sec=$_POST['txtPassSec']; else $admin_sec='';
hô hô user, pass1, pass2.
$admin_sec = md5(base64_encode($admin_sec));
if ($admin_sec == "53f8797e875fb1b667c86e4ae15cee24") {
if ( (!empty($admin_user)) && (!empty($admin_pass)) )
{
$admin_pass = md5($admin_pass);
$query = "select * from admin WHERE username='$admin_user' AND password='$admin_pass'";
ặc ặc cái pass2 của nó vừa base64_encode vừa md5, nó mà đặt pass dài xíu là ngồi decode đù người luôn mà chưa chắc gì có kết quả, còn cái pass1 cũng bị md5 luôn.
Có 2 cách giải quyết được đặt ra, thứ nhất là dò 2 cái pass của nó, thứ 2 là fake cookie. Cách thứ nhất ko chơi, ngu gì mà ngồi dò pass trong khi cách thứ 2 có vẻ dễ ăn hơn và khả năng thành công cũng cao hơn. Hồi nãy coi file index thấy nó quản lý phiên làm việc bằng session coi bộ ngon ăn. Vậy là quyết định chọn cách 2.
Có 2 hướng giải quyết cho cách 2:
+ Thứ nhất là khi ta mở trang index.php ra nó sẽ tạo cho ta một session trên server, công việc của ta là tìm cách edit cái phiên làm việc sao cho nó trở thành hợp lệ. Coi cái phpinfo() của nó xem nào session.save_path=/tmp. Ok rùi mở cái thư mục /tmp coi thử có gì trong đó. Ặc ặc …. bị access denied rùi coi bộ hướng đi này ko ổn, chuyển hướng đi thui.
+ Thứ hai nếu ta edit cái file session ko được thì tại sao ta ko tạo ra một cái file session mới hợp lệ với cái source đã có kia rùi fake cookie của web browser với cái session mới đó. Vậy là đã xác định được chính xác hướng đi và những cái cần phải làm, công việc tiếp theo là up sources của athena lên host 12a6, edit lại cái pass2 trong file _login.php, edit cái pass1 trong db của nó, xong rùi login nào … vừng ơi mở ra…. bùm vào được admin control panel rùi (cái này là đồ giả nằm trên host của 12a6) vào phần quản lý cookie của web browsers (opera) coi thử cái session của nó là gì nào, copy nó lại bây giờ chuyển qua thằng athena fake bằng cái session đó, refresh lại nào …. bùm …. he he heeeeee vào được admin control panel của athena rùi (hàng thật chất lượng cao ), tìm chỗ up con shell…..