Sunday, July 23, 2017

ວິທີການຕອບໂຕ້ bot ດ້ວຍ ZIP bomb

ມື້ນີ້ເຈີ blog ທີ່ໜ້າສົນໃຈຂອງ Christian Haschek ມາເລີຍເອົາມາປັບກັບເວັບໄຊດ໌ເລື່ອງຂອງເລື່ອງຄື ຕົວ Christian ເຄົ້າເບື່ອພວກທີ່ມັກມານັ່ງໃຊ້ເຄື່ອງມືມາ scan ເວັບໄຊດ໌ຂອງເຂົາ ຫລື ພວກທີ່ພະຍາຍາມຈະເຈາະໄປທີ່ wp-admin ຂອງເຂົາ ກໍເລີຍເຮັດເລື່ອງ Zip Bomb ຂຶ້ນມາຕອບໂຕ້ຄົນເຫລົ່ານັ້ນ
Zip bomb ຄືການທີ່ເຮົາໃຊ້ງານ zip ເພື່ອກທຳການບີບອັດໄຟລ໌ຂະໜາດໃຫຍ່ໆທີ່ບໍ່ມີຫຍັງເລີຍນອກຈາກ 0 (zero) ໄວ້ ຊຶ່ງໂດຍປົກກະຕິແລ້ວ web browser ແລະ ເຄື່ອງມືການ scan ສ່ວນໃຫຍ່ຮອງຮັບການສົ່ງຂໍ້ມູນ http ແບບບີບອັດ (gzip) ຢູ່ແລ້ວ ດັ່ງນັ້ນຫາກມີໃຜ scan ເຂົ້າມາກໍຈະສົ່ງ zip file ກັບໄປໃຫ້ແທນນັ້ນເອງ
zip ສາມາດເຮັດວຽກບີບອັດໄດ້ຂະໜາດໃດ ຈະມີບັນຫາການສົ່ງເຮັດໃຫ້ຝັ່ງເຮົາຕ້ອງເສຍ bandwidth ຂາ upload ໄປແທນ ຫລື ບໍ? ຍົກຕົວຢ່າງໃຫ້ດັ່ງນີ້ລະກັນ ເຮົາສາມາດ zip ໄຟລ໌ຂະໜາດ 4.5 Peta Byte ( 4,500,000 GB) ໃຫ້ເຫລືອແຕ່ 42 kilobyte ເທົ່ານັ້ນ ເມື່ອພະຍາຍາມເປີດໄຟລ໌ດັ່ງກ່າວຈະເຮັດໃຫ້ເກີດອາການ disk ເຕັມ ແລະ RAM ໝົດໄດ້ ແຕ່ເນື່ອງດ້ວຍ http ບໍ່ຮອງຮັບ zip ເຮັດໃຫ້ເຮົາຕ້ອງໄປໃຊ້ gzip ແທນ ຊຶ່ງຜົນຮັບກໍແຕກຕ່າງກັນຢູ່ແຕ່ກໍຍັງຖືວ່າໄດ້ຜົນດີີລະດັບໜຶ່ງເລີຍລະ

ໂດຍເຮົາໃຊ້ຄຳສັ່ງນີ້ໃນການສ້າງ gzip file ຂອງ file ທີ່ມີຂະໜາດ 10 GB

dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip

ຊຶ່ງໄຟລ໌ 10G.zip ນັ້ນຈະມີຂະໜາດພຽງແຕ່ 10 MB ເທົ່ານັ້ນ
ທີນີ້ຫາກມີ bot ເຂົ້າມາ (ເບິ່ງຈາກ User-Agent) ເຮົາກໍສົ່ງ gzip ດັ່ງກ່າວກັບໄປໃຫ້ໂດຍຂຽນເປັນ

<?php
$agent = filter_input(INPUT_SERVER, 'HTTP_USER_AGENT');
//check for nikto, sql map or "bad" subfolders which only exist on wordpress
if (strpos($agent, 'nikto') !== false || strpos($agent, 'sqlmap') !== false || startswith($url,'wp-') || startswith($url,'wordpress') || startswith($url,'wp/'))
{
      sendBomb();
      exit();
}
function sendBomb(){
        //prepare the client to recieve GZIP data. This will not be suspicious
        //since most web servers use GZIP by default
        header("Content-Encoding: gzip");
        header("Content-Length: ".filesize('10G.gzip'));
        //Turn off output buffering
        if (ob_get_level()) ob_end_clean();
        //send the gzipped file to the client
        readfile('10G.gzip');
}
function startsWith($a, $b) { 
    return strpos($a, $b) === 0;
}

ຜົນຈາກການທົດສອບປ່ຽນ User-agent ໃນ Browser ຕ່າງໆ ແລະ ການໃຊ້ງານ Web Vulnerability Scanner ຕ່າງໆ ຈະເຫັນວ່າມີທັງ Hang ໄປເລີຍ, ບໍ່ສະແດງຜົນຮັບຫຍັງ, ໃຊ້ RAM ຈົນໝົດ ນັ້ນໝາຍຄວາມວ່າມັນກໍ work ສຳລັບການຕອບໂຕ້ເຫລົ່າ Script Kiddy
Image does not exist: https://www.techsuii.com/wp-content/uploads/2017/07/Screen-Shot-2560-07-09-at-12.41.00.png

ຕົວຢ່າງການ set ใน Nginx
    set $perform1 false;
    set $perform2 false;
    if ($request_uri ~ '10G.php')
    {
        set $perform1 true;
    }
    if ($http_user_agent ~* '(nikto|Nikto|sqlmap)')
    {
        set $perform2 true;
    }
    if ($perform1 != $perform2) {
        return 301 https://www.example.com/10G.php;
    }

Source:
https://blog.haschek.at/2017/how-to-defend-your-website-with-zip-bombs.html
https://www.techsuii.com/2017/07/09/how-to-defend-your-website-with-zip-bombs/

Subscribe

  • RSS Atom

ອອນລາຍ: 1 | ມື້ນີ້: 13 | ວານນີ້: 25 | ທິດນີ້: 93 | ເດືອນນີ້: 872 | ປີນີ້: 11832 | ລວມ: 78935