วันพุธที่ 22 มกราคม พ.ศ. 2557

HTTP POST Hijacking [HACK]

** รู้ทัน ป้องกัน Clear Cache Cookies ทุกครั้ง หลังใช้งาน **
** บทความนี้ไม่ได้สนับสนุนการละเมิดสิขสิทธิ์ของผู้ใด **
การสวมรอย login เป็นคนๆ นั้น ทำได้หลายแบบ และหนึ่งในแบบที่มีการใช้กันมากพอสมควรคือการขโมย cookie โดยข้อดีคือเราไม่ต้องรู้ password ของเหยื่อเลย
ทำไมแค่ cookie ถึงเป็นสวมรอยได้
เว็บไซต์หลายๆ เว็บไซต์จะมีจุดอำนวยความสดวกแก่ user ในการ login คือการ “จำการเข้าสู่ระบบ” หรือ “remember login” นั่นเอง แล้วแต่ละเว็บไซต์จะรู้ได้ไงว่าพอเปิดมาหน้านี้แล้ว เป็น user คนไหน นั่นก็เพราะเค้าใช้ cookie ในการเก็บค่าเอาใว้นั่นเอง
QQ25560923-1


สมัยก่อนการเก็บข้อมูล  login  ใน cookie นั้น จะเก็บในรูปแบบ username, password เลยซึ่งเมื่ออินเตอร์เน็ตบูมมากขึ้นมันก็จะรู้สึกเชย(แฮกง่าย) และเปลี่ยนมาเป็นการเข้ารหัสแทน โดยอาจจะเข้ารหัส check sum หรืออื่นๆ ต่างๆ นานา ที่ไม่ให้ user แก้ไขได้ แต่การขโมย cookie นั่น เราไม่สนใจหรอกว่าจะเข้ารหัสกี่ชั้น หรือมีอะไรบ้าง แต่เราจะสนใจแค่ว่า เราจะได้ cookie นั่นมาได้อย่างไรเท่านั้นเอง
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
require_once 'database.class.php';
$db = new DB();
// นำ cookie มาใส่ค่าในตัวโปร
$username = $_COOKIE['username'];
// นำ username มาเชื่อม string กับ secret string  ที่เรากำหนด
// และนำมาเข้ารหัส
$checksum = md5($username . 'secret string');
// เช็คว่า  cookie checksum กับรหัสลับตรงกันรึเปล่า
// เพื่อเช็คว่า cookie ได้มีการแก้ไขรึเปล่า
if ($checksum != $_COOKIE['checksum']){
    
    // ถ้ามีการแก้ไข ให้ลบ cookie ทิ้ง แล้วไล่ไปหน้าแรก
    cookieset('username','');
    cookieset('checksum','');
    redirect('/');
}
// ถ้าผ่านฉลุย ก็ไปเอา user มาเบยยยยยย
$sql = "SELECT * FROM users WHERE username = ?";
$user = $db->query($sql,$username);
if ($user){
    redirect('/' . $user->username);
}
?>
จากโค้ดจะแสดงให้เห็นถึงระบบไม่สามารถรู้ได้เลยว่า cookie มันถูกขโมยมารึเปล่า จะรู้ก็แค่ cookie มันถูกดัดแปลงรึเปล่าเท่านั้นเอง
มีหลายๆ วิธีที่จะสามารถขโมย cookie ของ user นั้นมาได้ และวิธีหนึ่งคือการใช้ช่องโหว่ XSS นั่นเอง (บทความใช้ช่องโหว่ XSS ภาคปฏิบัติ) เมื่อเราได้ cookie มาแล้ว ให้เราจัดการนำ cookie ที่ได้มา สวมรอยเป็นคนๆ นั้น โดยแต่ละเว็บก็จะใช้ชื่อตัวแปรไม่เหมือนกัน อันนี้ลองดูชื่อตัวแปรกันเอาเองนะครับ
QQ25560923-5
ตอนนี้ยังไม่ไม่สามารถ login ได้

QQ25560923-3
นำ cookie ที่ขโมยได้ไปใส่

QQ25560923-4
เมื่อใส่เสร็จแล้ว refresh หนึ่งครั้ง ฮูเร่
เห็นมั๊ยครับว่าถ้าเรา hack  และสวมรอยเป็นคนอื่นแล้ว จะมีสิทธิพิเศษอะไรบ้าง (โหลดไม่สนใจ ratio อิอิ)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น