12-bo‘lim

Xavfsizlik testi asoslari

Test turlari, etika va qonuniylik, metodologiya, laboratoriya qurish va hisobot yozish.

🕑 17 daqiqa o‘qish 📄 1 204 so‘z 👁 5 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Etika va qonuniylik
  2. Test turlari
  3. Metodologiya
  4. Razvedka
  5. Laboratoriya qurish
  6. Qo'lda tekshirish
  7. API testi
  8. Hisobot yozish
  9. Ichki xavfsizlik testi
  10. Vositalar
  11. Kasbiy yo'l
  12. Test tekshiruv ro'yxati
  13. Xulosa

Himoyani tekshirishning eng ishonchli usuli - uni sinab ko'rish. Lekin bu faqat qonuniy va etik doirada bajarilishi kerak.

Etika va qonuniylik #

Birinchi va eng muhim qoida

Boshqa odamning tizimini yozma ruxsatsiz tekshirish - ko'pchilik mamlakatlarda jinoiy javobgarlikka olib keladi.

"Men yordam bermoqchi edim" degan tushuntirish himoya emas.

Hatto oddiy port skanerlash ham ba'zi yurisdiksiyalarda qonunbuzarlik hisoblanadi.

Qonuniy mashq qilish joylari Ruxsat etilgan • O'z lokal virtual mashinangiz • O'quv platformalari (TryHackMe, HTB) • CTF musobaqalari Shartli ruxsat • Bug bounty (qoidalar doirasida) • O'z ish joyingiz (yozma ruxsat bilan) • Shartnomali penetratsion test Taqiqlangan Ruxsatsiz istalgan tizim - hatto "zaifligini ko'rsatish" niyati bilan ham Do'stingiz sayti, universitet tizimi, ochiq Wi-Fi tarmog'i
Shubhalansangiz - qilmang
MARKDOWN
# Penetratsion test ruxsatnomasi (namuna)

Buyurtmachi: "Dokon" MChJ
Ijrochi: "Xavfsizlik" MChJ

## Doira
Kiradi:
- https://sinov.dokon.uz (barcha yo'llar)
- 203.0.113.10 - 203.0.113.20 (IP oralig'i)

Kirmaydi:
- Ishlab chiqarish muhiti (dokon.uz)
- Uchinchi tomon xizmatlari
- Xodimlarga ijtimoiy muhandislik
- Jismoniy kirish

## Ruxsat etilgan usullar
- Avtomatik skanerlash
- Qo'lda tekshirish
- Zaifliklardan foydalanish (ma'lumot o'zgartirmasdan)

## Taqiqlangan
- DoS/DDoS hujumlari
- Ma'lumotni o'chirish yoki o'zgartirish
- Haqiqiy foydalanuvchilar ma'lumotini yuklab olish

## Muddat
2026-09-01 09:00 - 2026-09-10 18:00 (Toshkent vaqti)

## Aloqa
Shoshilinch: +998 90 xxx-xx-xx (@husanboy)
Har kuni holat hisoboti: 18:00 gacha

## Imzolar
Buyurtmachi: __________  Sana: __________
Ijrochi:     __________  Sana: __________
Ruxsatnoma yozma bo'lsin

Og'zaki ruxsat - himoya emas.

Ruxsatnomada aniq bo'lishi kerak: nima, qachon, qanday usullar, kim mas'ul.

Test turlari #

TurBilim darajasiQachon
Qora qutiHech nima ma'lum emasTashqi hujumchi nuqtayi nazari
Kulrang qutiQisman ma'lumEng amaliy - vaqt tejaydi
Oq qutiTo'liq kirish, kodChuqur tahlil
YondashuvTavsifi
Zaifliklarni baholashKeng qamrov, avtomatik, ko'p topilma
Penetratsion testChuqur, qo'lda, ekspluatatsiya bilan
Qizil jamoaReal hujumni simulyatsiya qilish
Ko'k jamoaHimoya va aniqlash
Binafsha jamoaIkkalasi birga ishlaydi
Qaysi biri kerak?
VaziyatTavsiya
Birinchi martaZaifliklarni baholash
Muntazam tekshiruvAvtomatik skanerlash + yillik pentest
Yangi mahsulot chiqishiPenetratsion test
Yetuk xavfsizlik jarayoniQizil jamoa mashqi
Aniqlash imkoniyatini sinashBinafsha jamoa

Kichik loyihada qizil jamoa ortiqcha - avval asosiy zaifliklarni yopish kerak.

Metodologiya #

Penetratsion test bosqichlari 1. Rejalashtirish doira, ruxsat 2. Razvedka ma'lumot yig'ish 3. Skanerlash zaifliklar 4. Foydalanish tasdiqlash 5. Chuqurlashish ta'sirni baholash 6. Hisobot tavsiyalar Eng muhim bosqich - hisobot Topilma tuzatilmasa, test foydasiz Hisobot aniq, ustuvorlashtirilgan va amaliy bo'lishi kerak
Ko'pincha vaqtning yarmi razvedkaga ketadi

Razvedka #

Terminal
# Ochiq manbalardan ma'lumot (OSINT) - o'z tashkilotingiz uchun
whois dokon.uz
dig dokon.uz ANY
dig dokon.uz TXT

# Subdomenlarni topish (sertifikat shaffofligi orqali)
curl -s "https://crt.sh/?q=%25.dokon.uz&output=json" | jq -r '.[].name_value' | sort -u
Natija
api.dokon.uz
dokon.uz
eski.dokon.uz
mail.dokon.uz
sinov.dokon.uz
vpn.dokon.uz
www.dokon.uz
Sertifikat shaffofligi - unutilgan tizimlarni ochib beradi

Har bir chiqarilgan TLS sertifikat ommaviy jurnalga yoziladi.

crt.sh orqali tashkilotning barcha subdomenlarini topish mumkin - shu jumladan unutilganlarini.

O'z tashkilotingiz uchun buni muntazam tekshiring: eski., sinov., dev. kabi subdomenlar hali ishlab turgan bo'lishi mumkin.

Terminal
# Texnologiyalarni aniqlash
whatweb https://dokon.uz
curl -sI https://dokon.uz | grep -iE '^(server|x-powered-by)'
Natija
Server: nginx
X-Powered-By: PHP/8.1.2
Versiya ma'lumotini yashiring
NGINX
server_tokens off;
INI
; php.ini
expose_php = Off

Bu himoya emas, lekin hujumchi ishini qiyinlashtiradi va avtomatik skanerlarni chalg'itadi.

Terminal
# Ochiq kod repozitoriylarida sirlar
# O'z tashkilotingiz uchun tekshiring
gitleaks detect --source . --report-format json
trufflehog github --org=kompaniya

Laboratoriya qurish #

Terminal
# Virtual mashinalar
# 1. Kali Linux - test vositalari
# 2. Metasploitable / DVWA - zaif nishon
# 3. Ubuntu Server - o'z ilovangiz

# Docker bilan tez laboratoriya
docker run -d -p 8080:80 vulnerables/web-dvwa
docker run -d -p 3000:3000 bkimminich/juice-shop
docker run -d -p 8081:8080 webgoat/webgoat
Laboratoriyani internetdan ajrating

Zaif ilovalar internetga ochiq bo'lmasin - ular haqiqatan zaif va tez orada buziladi.

Terminal
# Faqat lokal tarmoqda
docker run -d -p 127.0.0.1:8080:80 vulnerables/web-dvwa

Yoki alohida virtual tarmoq yarating:

Terminal
docker network create --internal lab
PlatformaNima beradi
TryHackMeBosqichma-bosqich o'quv yo'llari
HackTheBoxReal mashinalar, murakkabroq
PortSwigger AcademyVeb zaifliklari, bepul va juda yaxshi
OverTheWireLinux va tarmoq asoslari
PicoCTFBoshlovchilar uchun CTF
VulnHubYuklab olinadigan zaif mashinalar
PortSwigger Web Security Academy

Veb xavfsizligini o'rganish uchun eng yaxshi bepul manba.

Har bir zaiflik uchun:

  • Nazariy tushuntirish
  • Interaktiv laboratoriya
  • Bosqichma-bosqich yechim
  • Himoya tavsiyalari

Bu darslikdagi barcha veb zaifliklarni u yerda amalda sinab ko'rishingiz mumkin.

Qo'lda tekshirish #

Avtomatik vositalar topa olmaydigan narsalar:

MARKDOWN
# Qo'lda tekshirish ro'yxati

## Kirish nazorati
- [ ] Boshqa foydalanuvchi ID si bilan resursga kirish (IDOR)
- [ ] Admin sahifalariga to'g'ridan-to'g'ri URL orqali kirish
- [ ] API endpointlarida huquq tekshiruvi
- [ ] Rolni o'zgartirishga urinish (massaviy tayinlash)
- [ ] Boshqa foydalanuvchi buyurtmasini bekor qilish

## Biznes mantiq
- [ ] Manfiy miqdor kiritish
- [ ] Juda katta miqdor
- [ ] Narxni o'zgartirish (yashirin maydon, API)
- [ ] Chegirma kuponini bir necha marta ishlatish
- [ ] Jarayon qadamini o'tkazib yuborish
- [ ] Bir vaqtda ikki so'rov (poyga sharti)
- [ ] Vaqt chegarasini chetlab o'tish

## Autentifikatsiya
- [ ] Parol tiklash tokeni bashorat qilinadimi?
- [ ] Sessiya chiqishdan keyin ham amal qiladimi?
- [ ] 2FA ni chetlab o'tish mumkinmi?
- [ ] Hisob raqamlanishi (foydalanuvchi bor-yo'qligini aniqlash)
- [ ] Parol almashtirilganda sessiyalar bekor qilinadimi?

## Ma'lumot oshkorligi
- [ ] Xato xabarlarida ichki ma'lumot
- [ ] API javobida ortiqcha maydonlar
- [ ] Kesh sarlavhalari
- [ ] Manba kodida izohlar
- [ ] `.git`, `.env`, zaxira fayllari ochiqmi?
Terminal
# Ochiq qolgan fayllarni tekshirish
for yol in .git/config .env composer.json .DS_Store backup.sql phpinfo.php; do
    kod=$(curl -s -o /dev/null -w "%{http_code}" "https://sinov.dokon.uz/$yol")
    echo "$kod  /$yol"
done
Natija
404  /.git/config
404  /.env
200  /composer.json     ← MUAMMO
404  /.DS_Store
404  /backup.sql
404  /phpinfo.php
.git papkasi ochiq qolishi

Agar /.git/ internetdan ochiq bo'lsa, hujumchi butun manba kodini yuklab olishi mumkin - shu jumladan tarixdagi sirlarni.

NGINX
location ~ /\.(git|env|svn|hg) {
    deny all;
    return 404;
}

Bu juda ko'p uchraydigan xato - deploy paytida .git papkasi veb-ildizda qoladi.

API testi #

Terminal
# API endpointlarini aniqlash
curl -s https://api.dokon.uz/openapi.yaml | grep -E '^\s+/'
MARKDOWN
# API tekshirish ro'yxati

- [ ] Autentifikatsiyasiz so'rov (401 qaytadimi?)
- [ ] Boshqa foydalanuvchi tokeni bilan (403 qaytadimi?)
- [ ] Muddati o'tgan token
- [ ] Noto'g'ri imzolangan JWT
- [ ] `alg: none` bilan JWT
- [ ] HTTP metodini o'zgartirish (GET → DELETE)
- [ ] Ortiqcha maydonlar yuborish
- [ ] Juda katta so'rov (DoS)
- [ ] Chegaralash ishlaydimi?
- [ ] CORS sozlamalari
- [ ] Xato javoblarida ma'lumot oshkorligi
Terminal
# Chegaralashni tekshirish
for i in $(seq 1 50); do
    kod=$(curl -s -o /dev/null -w "%{http_code}" https://api.dokon.uz/mahsulotlar)
    echo -n "$kod "
done
echo
Natija
200 200 200 200 200 200 200 200 200 200 429 429 429 429 429 ...
429 ko'rinishi - chegaralash ishlayapti

Agar 50 ta so'rovdan keyin ham hammasi 200 qaytsa - chegaralash yo'q yoki juda yuqori.

Bu DoS va kuch bilan hujum uchun eshik ochadi.

Hisobot yozish #

MARKDOWN
# Penetratsion test hisoboti

**Buyurtmachi:** "Dokon" MChJ
**Ijrochi:** "Xavfsizlik" MChJ
**Sana:** 2026-09-01 - 2026-09-10
**Doira:** sinov.dokon.uz, 203.0.113.10-20

---

## Rahbariyat uchun xulosa

Test davomida **12 ta zaiflik** topildi:
- Kritik: 1
- Yuqori: 3
- O'rta: 5
- Past: 3

**Eng jiddiy topilma:** qidiruv formasida SQL inyeksiya, uning
orqali barcha mijozlar ma'lumotini olish mumkin.

**Umumiy baho:** tizim asosiy himoya choralariga ega, lekin
kirish nazorati va kirish ma'lumotlarini tekshirishda jiddiy
kamchiliklar bor.

**Tavsiya:** kritik va yuqori zaifliklarni 2 hafta ichida tuzatish,
keyin qayta test o'tkazish.

---

## Topilma: SQL inyeksiya

**ID:** PT-001
**Jiddiylik:** Kritik (CVSS 9.8)
**Joylashuv:** `GET /qidiruv?q=`
**Holat:** Tasdiqlangan

### Tavsif

`q` parametri SQL so'roviga to'g'ridan-to'g'ri qo'shiladi.
Bu hujumchiga bazadagi istalgan ma'lumotni o'qish imkonini beradi.

### Takrorlash qadamlari

1. Brauzerda oching: `https://sinov.dokon.uz/qidiruv?q=test`
2. Parametrni o'zgartiring: `q=test'`
3. Sahifada baza xato xabari ko'rinadi

### Dalil

    HTTP/1.1 500 Internal Server Error

    SQLSTATE[42000]: Syntax error near ''test''' at line 1
    in /var/www/dokon/manba/Qidiruv.php:47

### Ta'sir

- Barcha mijozlar ma'lumotini o'qish (52 000 yozuv)
- Parol xeshlarini olish
- Ma'lumotni o'zgartirish yoki o'chirish

### Tavsiya

1. Parametrlangan so'rovlarga o'ting:

    $stmt = $pdo->prepare('SELECT * FROM mahsulotlar WHERE nomi LIKE ?');
    $stmt->execute(['%' . $sorov . '%']);

2. `PDO::ATTR_EMULATE_PREPARES => false` sozlamasini yoqing
3. Baza foydalanuvchisi huquqlarini cheklang
4. Xato xabarlarini foydalanuvchiga ko'rsatmang

### Havolalar
- OWASP: A03:2021 Injection
- CWE-89: SQL Injection
Yaxshi hisobot mezonlari
MezonIzoh
TakrorlanadiganO'quvchi o'zi tekshira olsin
UstuvorlashtirilganNimadan boshlash aniq
Amaliy tavsiya"Tuzating" emas, qanday tuzatish
Ta'sir tushuntirilganBiznes tilida
Dalil bilanEkran surati, so'rov/javob
Soxta natijalar yo'qHar biri tekshirilgan

Hisobot tuzatish uchun yoziladi, hujumchining mahoratini ko'rsatish uchun emas.

Ichki xavfsizlik testi #

PHP
// Xavfsizlik testlarini avtomatlashtirish
final class XavfsizlikTest extends TestCase
{
    public function test_boshqa_foydalanuvchi_buyurtmasini_kora_olmaydi(): void
    {
        $mijoz1 = $this->foydalanuvchiYarating();
        $mijoz2 = $this->foydalanuvchiYarating();

        $buyurtma = $this->buyurtmaYarating($mijoz1);

        $javob = $this->tokenBilan($mijoz2)
                      ->get("/api/buyurtmalar/{$buyurtma->id}");

        $this->assertContains($javob->kod(), [403, 404]);
    }

    public function test_narx_serverda_hisoblanadi(): void
    {
        $mahsulot = $this->mahsulotYarating(narx: 250_000);

        $javob = $this->tokenBilan($this->mijoz)->post('/api/buyurtmalar', [
            'elementlar' => [[
                'mahsulot_id' => $mahsulot->id,
                'soni'        => 2,
                'narx'        => 1,        // soxta narx
            ]],
        ]);

        $this->assertEquals(500_000, $javob->json()['malumot']['jami']['qiymat']);
    }

    public function test_manfiy_soni_rad_etiladi(): void
    {
        $javob = $this->tokenBilan($this->mijoz)->post('/api/buyurtmalar', [
            'elementlar' => [['mahsulot_id' => 1, 'soni' => -5]],
        ]);

        $this->assertEquals(422, $javob->kod());
    }

    public function test_rolni_ozgartirib_bolmaydi(): void
    {
        $javob = $this->tokenBilan($this->mijoz)->patch('/api/profil', [
            'ism' => 'Yangi ism',
            'rol' => 'administrator',
        ]);

        $this->assertEquals(200, $javob->kod());
        $this->assertEquals('mijoz', $this->mijoz->qaytaYuklang()->rol->value);
    }

    public function test_chiqishdan_keyin_sessiya_ishlamaydi(): void
    {
        $token = $this->kiring($this->mijoz);
        $this->tokenBilan($token)->post('/api/chiqish');

        $javob = $this->tokenBilan($token)->get('/api/profil');

        $this->assertEquals(401, $javob->kod());
    }

    public function test_xato_xabarida_ichki_malumot_yoq(): void
    {
        $javob = $this->get('/api/buyurtmalar/999999999');

        $tana = $javob->xomTana();

        $this->assertStringNotContainsString('SQLSTATE', $tana);
        $this->assertStringNotContainsString('/var/www', $tana);
        $this->assertStringNotContainsString('Stack trace', $tana);
    }
}
Xavfsizlik testlari - CI da

Bu testlar har bir PR da ishga tushadi va regressiyani to'sadi.

Bir marta tuzatilgan zaiflik qaytib kelmasligi uchun har bir topilmaga test yozing.

Vositalar #

VositaVazifasi
Burp SuiteVeb proksi, so'rovlarni tahrirlash
OWASP ZAPBepul veb skaner va proksi
nmapTarmoq va port skanerlash
sqlmapSQL inyeksiyani aniqlash
ffuf, gobusterKatalog va fayl qidirish
NucleiShablon asosida zaiflik topish
MetasploitEkspluatatsiya doirasi
WiresharkTarmoq trafigini tahlil qilish
John, hashcatParol xeshlarini tahlil qilish
Vositalar - faqat ruxsat etilgan muhitda

Bu vositalar kuchli va ular hujum trafigi yaratadi.

Ularni faqat:

  • O'z laboratoriyangizda
  • Yozma ruxsat bilan
  • Bug bounty qoidalari doirasida

ishlating.

Ruxsatsiz ishlatish - jinoyat.

Terminal
# Burp Suite ni proksi sifatida ishlatish (o'z ilovangizda)
# Brauzer → Burp (127.0.0.1:8080) → Ilova
# So'rovlarni ushlab, o'zgartirib yuborish mumkin

Kasbiy yo'l #

SertifikatDarajaFokus
CompTIA Security+Boshlang'ichUmumiy asoslar
eJPTBoshlang'ichAmaliy pentest
OSCPO'rta-yuqoriAmaliy, 24 soatlik imtihon
CEHO'rtaNazariy, keng qamrovli
CISSPBoshqaruvXavfsizlik menejmenti
GWAPTIxtisoslashganVeb ilovalar
Sertifikat - bilim o'rnini bosmaydi

Ish beruvchilar sertifikatga qaraydi, lekin haqiqiy mahorat amaliyotda shakllanadi.

Yo'l:

  1. Asoslarni o'rganing (tarmoq, Linux, dasturlash)
  2. Laboratoriyalarda mashq qiling (TryHackMe → HTB)
  3. CTF larda qatnashing
  4. Bug bounty da birinchi hisobotni yozing
  5. O'z topilmalaringiz haqida blog yozing
  6. Keyin sertifikat oling

Portfolio sertifikatdan ko'ra ko'proq gapiradi.

Test tekshiruv ro'yxati #

Test o'tkazishdan oldin
TalabBajarildi
Yozma ruxsatnoma olingan
Doira aniq belgilangan
Muddat kelishilgan
Aloqa nuqtasi belgilangan
Ishlab chiqarish muhiti chetlab o'tilgan
Zaxira nusxa mavjud
Monitoring jamoasi xabardor
Ma'lumotni o'zgartirmaslik kelishilgan
Hisobot formati kelishilgan
Topilmalarni oshkor qilish qoidasi
Amaliy topshiriq
  1. Lokal laboratoriya quring: Docker bilan DVWA yoki Juice Shop.
  2. Uni faqat 127.0.0.1 da ochiq qiling.
  3. PortSwigger Academy da ro'yxatdan o'ting va 5 ta laboratoriyani bajaring.
  4. O'z loyihangizda ochiq qolgan fayllarni tekshiring.
  5. Chegaralashni curl bilan sinang.
  6. Qo'lda tekshirish ro'yxatini o'z loyihangizga qo'llang.
  7. Topilgan bitta zaiflik uchun to'liq hisobot yozing.
  8. Shu zaiflik uchun avtomatik test yozing.
  9. Xavfsizlik testlarini CI ga qo'shing.
  10. crt.sh da o'z domeningiz subdomenlarini tekshiring.

Xulosa #

  • Ruxsatsiz test - jinoyat. Yozma ruxsatnoma majburiy.
  • Qonuniy mashq: lokal laboratoriya, o'quv platformalari, CTF, bug bounty.
  • Kulrang quti yondashuvi eng amaliy - vaqt tejaydi.
  • Vaqtning katta qismi razvedkaga ketadi.
  • Sertifikat shaffofligi unutilgan subdomenlarni ochib beradi.
  • Laboratoriyani internetdan ajrating - zaif ilovalar tez buziladi.
  • Avtomatik vositalar biznes mantiq zaifliklarini topa olmaydi.
  • .git va .env ochiq qolishi - juda ko'p uchraydigan xato.
  • Hisobot takrorlanadigan, ustuvorlashtirilgan va amaliy bo'lsin.
  • Har bir topilmaga avtomatik test yozing - regressiyani to'sadi.
  • Portfolio sertifikatdan ko'ra ko'proq gapiradi.

Keyingi bo'limda ijtimoiy muhandislikni ko'ramiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.