Pages - Menu

Thursday, October 15, 2015

[Write-up][Web - Server] Improper redirect - 15 Points

ສະບາຍດີ! ມື້ນີ້ເຮົາຈະມາເວົ້າເຖິງການຜ່ານໂຈດ Improper redirect ໃນ root-me.org ໝວດ Web - Server.

http://www.root-me.org/en/Challenges/Web-Server/Improper-redirect

ກ່ອນເຮົາຈະໄປຜ່ານໂຈດນີ້ຂໍເວົ້າເຖິງຊ່ວງໂວ່ນີ້ຈັກໜ້ອຍໜຶ່ງ.
(ຂອບໃຈຂໍ້ມູນຈາກ acunetix.com <3)

 ຊ່ອງໂວ່ປະເພດນີ້ເກີດຂຶ້ນເວລາກວດສອບເງື່ອນໄຂແລ້ວໃຫ້ redirect ໄປໜ້າທີ່ກຳນົດ, ຫລາຍຄົນຄົງຈະບໍ່ເຂົ້າໃຈມັນກະປົກກະຕິບໍ່ແມ່ນບໍ? ແລ້ວຈະເປັນຊ່ອງໂວ່ໄດ້ແນວໃດ?

ຄຳຕອບກໍ່ຄືໃນຊ່ວງເວລາກ່ອນທີ່ຈະທຳການກວດສອບເງື່ອນໄຂແລ້ວ redirect ໄປນັ້ນໜ້າເວັບໄດ້ຖືກດຶງມາກຽມເປີດໄວ້ແລ້ວແຕ່ຍັງບໍ່ທັນໄດ້ສະແດງຂຶ້ນໜ້າຈໍເທື່ອ. ເຮັດໃຫ້ເຮົາສາມາດອ່ານຂໍ້ມູນໃນໜ້ານັ້ນໄດ້ໂດຍບໍ່ຕ້ອງມີສິດເປັນ admin.. *-*

ແຕ່ວ່າຊ່ວງເວລາໃນການກວດສອບແລ້ວ redirect ແມ່ນໄວຫລາຍຖ້າເຮົາໃຊ້ browser ທຳມະດາກວດເບິ່ງມັນກໍ່ຈະ redirect ໄປຕາມທີ່ໂປແກມມາ.

ຕົວຢ່າງ ໂຄ໊ດທີ່ເປັນຊ່ອງໂວ່:

 <?php  
 // check if the session is authanticated  
 if (!isset($_SESION["isAdmin"])) {  
 header("Location: ../login.php");  
 }  
 ?>  
 <title>Admin Dashboard</title>  
 <h3>List of Users</h3>  

ສິ່ງທີ່ເຮົາຈະເຮັດກໍ່ຄືໃຊ້ burp suite intercept ແຕ່ລະຂໍ້ມູນທີ່ browser ຈະໂຫລດເຂົ້າມາຈາກ

http://challenge01.root-me.org/web-serveur/ch32/

ຫລັງຈາກເຮົາກົດ forward ໄປຈົນໝົດແລ້ວເຮົາມາສັງເກດເບິ່ງໃນໜ້າ /web-serveur/ch32/ ວ່າເກີດຫຍັງຂຶ້ນ


 Tada~ ເຮົາກໍ່ໄດ້ Flag ແລ້ວ

ວິທີແກ້ໄຂຊ່ອງໂວ່ນີ້ຄື ເພີ່ມ exit(); ຫລັງຈາກຄຳສັ່ງ redirect

<?php
// check if the session is authanticated
if (!isset($_SESION["isAdmin"])) {
header("Location: ../login.php");
exit();
}
?>
<title>Admin Dashboard</title>
<h3>List of Users</h3>
 


ຈົບແລ້ວວວ ຂອບໃຈຈຈ

Monday, October 12, 2015

[Write-up][Web - Server] Backup file - 15 Points

ຫລາຍຄົນອາດສົງໄສວ່າຮູ້ໄດ້ແນວໃດວ່າ index.php~ ຄຳຕອບງ່າຍໆເລີຍ.
ເດົາເອົາ ຫະຫະ ຜ່ານແລ້ວດ່ານນີ້ງ່າຍສຸດ

Friday, October 9, 2015

[Write-up] [Web - Server] HTTP Headers - 15 Points

ສະບາຍດີມື້ນີ້ເຮົາຈະມາຜ່ານໂຈດ HTTP Headers ກັນເນາະ.

http://www.root-me.org/en/Challenges/Web-Server/HTTP-Headers

ຖ້າໃຜຍັງບໍ່ຮູ້ຈັກວ່າ HTTP Headers ແມ່ນຫຍັງໃຫ້ໄປອ່ານຕາມລິ້ງນີ້

https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

ຫຼືຈະເອົາໃຫ້ເຂົ້າໃຈງ່າຍໆແມ່ນໂຈດນີ້ຈະກ່ຽວກັບ HTTP Request ແລະ HTTP Response

ໂຈດຂໍ້ນີ້ເຮົາຈະໃຊ້ Burp suite ໃນການດັກເອົາ packet ທີ່ request ໄປ server  ແລະຮັບເອົາຄ່າ response ກັບມາຈາກ server. (ຫຼືຜູ້ອ່ານອາດຈະເລືອກໃຊ້ adds-on ຂອງ firefox ເຊັ່ນພວກ HTTP Live Headers ຫຼື Tamper data ກໍ່ໄດ້ເນາະ)

ແຕ່ໃນນີ້ເຮົາຈະໃຊ້ Burp Suite ໃຜຍັງບໍ່ທັນມີສາມາດໂຫລດໄດ້ຕາມລິ້ງນີ້.

https://portswigger.net/burp/download.html

ເອົາເນາະ! ຮອດເວລາທີ່ເຮົາຈະມາຜ່ານໂຈດນີ້ກັນແລ້ວ

ກ່ອນກົດ Start challenge ສັງເກດວ່າມັນມີ ຄຳໃບ້ຢູ່ທີ່ບອກວ່າ


HTTP response give informations 

ມັນບອກເຮົາໃຫ້ສັງເກດບ່ອນ HTTP response 

ຕອນນີ້ເຮົາກົດ Start challenge ເລີຍ..

ກໍ່ຈະເຫັນວ່າໜ້ານີ້ບໍ່ມີຫຍັງມີພຽງແຕ່ບອກວ່າ "Content is not the only part of an HTTP response!"

ເອົາລະເປີດ Burp Suite ຂຶ້ນມາເລີຍ (ສ່ວນວິທີໃຊ້ແມ່ນລອງໆຫລິ້ນເບິ່ງກໍ່ຈະຮູ້ເນາະບໍ່ກະຫາໃນ Google ເບິ່ງເພາະມີຫລາຍຄົນເຮັດ Tut ອອກມາ)

ປ່ຽນ proxy ຂອງ browser ໄປຫາ burp suite ແລ້ວ refresh ອີກຄັ້ງເບິ່ງ.

ເຮົາມາສັງເກດ request ແລະ response ຂອງໜ້າດັັ່ງກ່າວເບິ່ງວ່າເປັນແບບໃດ.

Request
 GET /web-serveur/ch5/ HTTP/1.1  
 Host: challenge01.root-me.org  
 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0  
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
 Accept-Language: en-US,en;q=0.5  
 Accept-Encoding: gzip, deflate  
 Referer: http://www.root-me.org/en/Challenges/Web-Server/HTTP-Headers  
 Cookie: PHPSESSID=fsvbd1bi9mpq1bh57mq46ssf74  
 Connection: keep-alive  
 Cache-Control: max-age=0  

 Response


 HTTP/1.1 200 OK  
 Server: nginx  
 Date: Fri, 09 Oct 2015 04:45:36 GMT  
 Content-Type: text/html; charset=UTF-8  
 Connection: keep-alive  
 Vary: Accept-Encoding  
 Header-RootMe-Admin: none  
 Content-Length: 279  
 <html>  
 <body><link rel='stylesheet' property='stylesheet' id='s' type='text/css' href='/template/s.css' media='all' /><iframe id='iframe' src='http://www.root-me.org/spip.php?page=externe_header'></iframe>  
 <p>Content is not the only part of an HTTP response!</p>  
 </body>  
 </html>  

 ສັງເກດເຫັນບໍ່ວ່າ Response ມັນມີຫຍັງແປກໄປ..?

ແມ່ນແລ້ວ! Header-RootMe-Admin: none

ສ່ວນນີ້ແມ່ນທາງ developer ເຮັດຂຶ້ນມາເອງເພື່ອກວດວ່າແມ່ນ admin ບໍ?

ສິ່ງທີ່ເຮົາຈະເຮັດກໍ່ພຽງແຕ່ຕອນ Request ໃຫ້ສົ່ງ  Header-RootMe-Admin ໄປນຳແລ້ວປ່ຽນຈາກ none ເປັນ true



ຜ່ານແລ້ວ! ເປັນແນວໃດງ່າຍແມ່ນບໍ ຫະຫະ.! ພົບກັນໃໝ່ໃນດ່ານຕໍ່ໄປ.

Thursday, October 8, 2015

[Write-up] [Web - Server] HTTP directory indexing - 15 Points

ສະບາຍດີ ມື້ນີ້ເຮົາມາຜ່ານໂຈດເກມ Security ໃນເວັບ root-me.org ກັນເນາະ
ດ່ານນີ້ຈະກ່ຽວກັບການເຂົ້າໄປອ່ານໄຟລ໌ໃນ Directory

http://www.root-me.org/en/Challenges/Web-Server/HTTP-directory-indexing


  ຫລັງຈາກກົດ Start the Challenge

ເຮົາກໍ່ກົດ view source (ຄຶຂ້າງເທິງ) ແລ້ວເຮົາກໍ່ຈະເຫັນວ່າມີ comment ວ່າ

<!-- include("admin/pass.html") -->

ລອງຕາມເຂົ້າໄປໃນ admin/pass.html ແລ້ວກໍ່ບໍ່ແມ່ນໜ້າທີ່ເຫັນ ລະຫັດລັບ ເທື່ອ

ແລ້ວຈະເຮັດແນວໃດບາດນີ້..? ບໍ່ຟ້າວເລື່ອນລົງໄປອ່ານ ລອງເຮັດ ແລະ ຄິດເບິ່ງກ່ອນ...

tik-tok......







tik-tok......








tik-tok....

ບາດນີ້ເຮົາລອງຖອຍເບິ່ງແຕ່ /admin/ ປາກົດວ່າ ມີ Dir backup 

ເຮົາກໍ່ກົດເຂົ້າໄປເບິ່ງແລ້ວກໍ່ຈະເຫັນລະຫັດລັບທີ່ເອົາໄວ້ຜ່ານດ່ານ.