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>
ຈົບແລ້ວວວ ຂອບໃຈຈຈ