Tuesday, July 1, 2008

บทเรียน hack มั่ว (ตอนที่ 1) การ xss

เริ่มจาก การ xss หรือ Cross-site scripting
(ผมรู้ว่าหลายคนไม่เข้าใจว่าไอ้ Cross-site scripting คืออะไร แปลว่าอะไร มาจากไหน ไว้ทำอะไร)
ไอ้การอธิบายอะไร ยาวๆ เป็นน้ำๆ ผมไม่ค่อยสันทัดซะด้วย ดังนั้นถ้าอยากรู้น้ำๆ ไปอ่านจาก wiki เอาคับ

เอาล่ะ เข้าเนื้อเลยดีกว่า ..
ไอ้การ xss เนี้ย ผมว่ามันง่ายสุด ในการหาเลยนะ
ประมาณ 60 - 70% ของเวป ที่มีการเรียกค่า จากการ input ทั้งหลาย นี่แทบจะมีบัคนี้ทั้งนั้น
(เอ๊า แล้ว input คืออะไร ล่ะ ... เออ นั่นจิ สรุปประมาณว่า เวปที่มีการกรอกค่า ทางเวป site แล้วกัน)

ความรู้ที่ต้องมี
- พอรู้ html งูๆปลาๆ (พวก แต่งเวป hi5 เป็นนี่ แทบจะคล่องเลยด้วยซ้ำ)
- รู้คำสั่ง javascript ที่จำเป็น (เข้าทางพวก hi5 อีกแล้ว !!)
- รู้ php , asp , หน่อยๆ พวกการ comment อะไรทำนองนี้
- สำนึกดี (เพื่อศึกษาและสอนผู้อื่น มิใช้ เพื่อประโยชน์ส่วนตัว)

ความอันตรายของการ hack แบบนี้
- ต่ำ ถึง ปานกลาง
ประมาณว่าเป็นการจำอวด ว่า เฮ้ย hack ได้ นะเว้ย แต่ จริงๆแล้ว ทำอะไรตัว host ไม่ได้หรอก
มันเป็นการ สั่งให้ code ไป run บน เครื่อง client (เครื่องคนเปิดเวป) แล้ว script ที่ฝังอยู่บนเวป
ก็จะไป รัน บน client ทีนี้ก็สามารถ ประยุคใช้ ขโมย cookie ของ user ได้ แล้วถ้าฟรุ๊กได้ user ระดับ admin อาจจะ
อันตรายเพิ่มขึ้นเหมือนตอนที่ผม hack บ้านไอ้น๊อตแล้ว login เป็นมันไป โพส comment
ซึ่ง สมมุติ ถ้าผม ไปใช้วิธีนี้ hack เจ้าของ multiply ล่ะแล้วหลังจากนั้นก็ ... ตามแต่จะจิตนาการ
แต่ ถ้า โปรกว่านั้น เคยเห็น javascript ประกอบร่างโทรจันของจีนมั้ย เอ่ย ^^"
ประมาณว่า แค่เปิดเวปก็ติดโทรจันแล้ว อ่ะ แนวๆ นั้นเลย

เอาล่ะทีนี้เรามายกตัวอย่าง ไกลๆ ตัวหน่อย (แค่เขียนนี่ก็ก้าวเข้าคุกไปครึ่งก้าวแล้วมั้งตู)
เหยื่อ เราคือ http://www.stanica.sk/main.php
หลักๆ ในการหา xss ก็คือ
1. เปิดเวป
2. view src
3. เดา !! (แบบมีหลักการ)

เอาล่ะ แล้วหลักการคืออะไร ?
ผมว่ามันไม่มีตายตัว .. แต่อย่างที่บอก หาจุด input รูไหนที่ใส่ค่าได้ ต้องหามาลองให้หมด !!

พอเปิด view src มาปุ๊ป มองไปไม่ไกล ... ผมก็เจอ
<a href="main.php?page=STANICA&lang=SK">
เอ๋ ว่าแต่ มันพิเศษยังไงน่ะรึ บอกแล้วว่าต้องมั่ว ... เริ่มจากลอง ใส่ url เป็น

http://www.stanica.sk/main.php?page=STANICA&lang=SK

ค่าที่ น่าจะรับเข้าไปคือ STANICA และ SK
อ๊ะ มันก็ไม่แปลกอะไรจริงมั้ย ??

เอาล่ะ ทีนี้ลอง มั่วใหม่เป็น
http://www.stanica.sk/main.php?page=STANICA&lang=มั่วนี่หว่า

เป็นไง ทางซ้าย หายเรียบ
แบบนี้ เข้าทางโจร ซะแระ ลอง view src ใหม่อีกที (เลือก ภาษาไทย นะ ... ไม่งั้น ส่วนที่เป็นภาษาไทยจะเจอ ภาษาต่างดาวแทน)
จะเห็นว่าเกิดการเปลี่ยนแปลง ใน src ของ page
จาก
<a href="main.php?page=STANICA&lang=SK">
กลายเป็น
<a href="main.php?page=STANICA&lang=มั่วนี่หว่า">

แล่ว ๆ ๆ ๆ ๆ

ทีนี้ ถ้าเรา เปลี่ยนจาก (มั่วนี่หว่า) เป็น ("code html here") ล่ะ
ตามที่คิด ใน src มันก็น่าจะกลายเป็น
<a href="main.php?page=STANICA&lang="code html here"">

อ่า คิดเสร็จแล้วก็ลอง เลยแล้วกัน
http://www.stanica.sk/main.php?page=STANICA&lang=%22%3C/a%3Ecode%20html%20here%22

เป็นไงล่ะ ด้านซ้าย กลายเป็น code html here ตรึมเลย
ทีนี้ ก็เหมือนกับว่าเราเขียน อะไร ลง บน link ก็จะขึ้นที่เวปหมดเลย
ทีนี้ ลองจิตนาการว่า

สมมุติว่ามีคนเจอ xss ของเวป ธนาคารแห่งหนึ่ง
... ไม่ๆ ๆ เอาเป็น เจอ xss ของ paypal แล้วกัน ใกล้ตัวดี
มี hacker คนหนึ่ง เขียน code เป็นหน้า login ของ paypal ไปไว้ที่ host free
หน้าตาเวปจะเป็น เวป แนวๆ pushing หน้าตา เหมือน paypal เปรี๊ยบ
แต่เขียนให้เก็บค่า จาก form login (หน้าปลอม) เก็บไว้ให้ตัว hacker เองกลับมาอ่าน
จากนั้นก็เขียน code ต่อท้าย ให้ redirect กลับ ไป paypay ของจริง

จากนั้น เอา code iframe มา ต่อท้ายเวป paypal จริง ล่ะ

ผลก็คือทุก user ที่ login ไป แทนที่จะเข้า paypal กลายเป็นไปเข้า เวป ของ hacker ซะแทน

คิดซะว่า คล้ายๆ หน้านี้แล้วกัน

http://www.stanica.sk/main.php?page=STANICA&lang="</a></p></td></tr><iframe src =http://multiply.com width=100% height=100%></IFRAME>
แต่ถ้าทำจริงๆ จะเนียล กว่านี้เยอะ *-*



ปล. จริยธรรม มักจะหมดไป เมื่อตังไม่มี

2 comments:

^________________^ said...

พี่ครับแก้ไข view source ยังไง กดตรงไหนบ้างบอกหน่อย ขอบคุณสำหรับความรู้ครับ

^________________^ said...

พี่ครับแก้ไข view source ยังไง กดตรงไหนบ้างบอกหน่อย ขอบคุณสำหรับความรู้ครับ

Why You Don't LIKE My FaceBook Fanpage ?
×
blogger