12-bo‘lim
Xavfsizlik testi asoslari
Test turlari, etika va qonuniylik, metodologiya, laboratoriya qurish va hisobot yozish.
Ushbu bo‘lim mundarijasi
Himoyani tekshirishning eng ishonchli usuli - uni sinab ko'rish. Lekin bu faqat qonuniy va etik doirada bajarilishi kerak.
Etika va qonuniylik #
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.
# 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: __________
Og'zaki ruxsat - himoya emas.
Ruxsatnomada aniq bo'lishi kerak: nima, qachon, qanday usullar, kim mas'ul.
Test turlari #
| Tur | Bilim darajasi | Qachon |
|---|---|---|
| Qora quti | Hech nima ma'lum emas | Tashqi hujumchi nuqtayi nazari |
| Kulrang quti | Qisman ma'lum | Eng amaliy - vaqt tejaydi |
| Oq quti | To'liq kirish, kod | Chuqur tahlil |
| Yondashuv | Tavsifi |
|---|---|
| Zaifliklarni baholash | Keng qamrov, avtomatik, ko'p topilma |
| Penetratsion test | Chuqur, qo'lda, ekspluatatsiya bilan |
| Qizil jamoa | Real hujumni simulyatsiya qilish |
| Ko'k jamoa | Himoya va aniqlash |
| Binafsha jamoa | Ikkalasi birga ishlaydi |
| Vaziyat | Tavsiya |
|---|---|
| Birinchi marta | Zaifliklarni baholash |
| Muntazam tekshiruv | Avtomatik skanerlash + yillik pentest |
| Yangi mahsulot chiqishi | Penetratsion test |
| Yetuk xavfsizlik jarayoni | Qizil jamoa mashqi |
| Aniqlash imkoniyatini sinash | Binafsha jamoa |
Kichik loyihada qizil jamoa ortiqcha - avval asosiy zaifliklarni yopish kerak.
Metodologiya #
Razvedka #
# 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
api.dokon.uz
dokon.uz
eski.dokon.uz
mail.dokon.uz
sinov.dokon.uz
vpn.dokon.uz
www.dokon.uz
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.
# Texnologiyalarni aniqlash
whatweb https://dokon.uz
curl -sI https://dokon.uz | grep -iE '^(server|x-powered-by)'
Server: nginx
X-Powered-By: PHP/8.1.2
server_tokens off;
; php.ini
expose_php = Off
Bu himoya emas, lekin hujumchi ishini qiyinlashtiradi va avtomatik skanerlarni chalg'itadi.
# Ochiq kod repozitoriylarida sirlar
# O'z tashkilotingiz uchun tekshiring
gitleaks detect --source . --report-format json
trufflehog github --org=kompaniya
Laboratoriya qurish #
# 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
Zaif ilovalar internetga ochiq bo'lmasin - ular haqiqatan zaif va tez orada buziladi.
# Faqat lokal tarmoqda
docker run -d -p 127.0.0.1:8080:80 vulnerables/web-dvwa
Yoki alohida virtual tarmoq yarating:
docker network create --internal lab
| Platforma | Nima beradi |
|---|---|
| TryHackMe | Bosqichma-bosqich o'quv yo'llari |
| HackTheBox | Real mashinalar, murakkabroq |
| PortSwigger Academy | Veb zaifliklari, bepul va juda yaxshi |
| OverTheWire | Linux va tarmoq asoslari |
| PicoCTF | Boshlovchilar uchun CTF |
| VulnHub | Yuklab olinadigan zaif mashinalar |
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:
# 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?
# 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
404 /.git/config
404 /.env
200 /composer.json ← MUAMMO
404 /.DS_Store
404 /backup.sql
404 /phpinfo.php
.git papkasi ochiq qolishiAgar /.git/ internetdan ochiq bo'lsa, hujumchi butun manba
kodini yuklab olishi mumkin - shu jumladan tarixdagi sirlarni.
location ~ /\.(git|env|svn|hg) {
deny all;
return 404;
}
Bu juda ko'p uchraydigan xato - deploy paytida .git papkasi
veb-ildizda qoladi.
API testi #
# API endpointlarini aniqlash
curl -s https://api.dokon.uz/openapi.yaml | grep -E '^\s+/'
# 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
# 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
200 200 200 200 200 200 200 200 200 200 429 429 429 429 429 ...
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 #
# 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
| Mezon | Izoh |
|---|---|
| Takrorlanadigan | O'quvchi o'zi tekshira olsin |
| Ustuvorlashtirilgan | Nimadan boshlash aniq |
| Amaliy tavsiya | "Tuzating" emas, qanday tuzatish |
| Ta'sir tushuntirilgan | Biznes tilida |
| Dalil bilan | Ekran surati, so'rov/javob |
| Soxta natijalar yo'q | Har biri tekshirilgan |
Hisobot tuzatish uchun yoziladi, hujumchining mahoratini ko'rsatish uchun emas.
Ichki xavfsizlik testi #
// 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);
}
}
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 #
| Vosita | Vazifasi |
|---|---|
| Burp Suite | Veb proksi, so'rovlarni tahrirlash |
| OWASP ZAP | Bepul veb skaner va proksi |
| nmap | Tarmoq va port skanerlash |
| sqlmap | SQL inyeksiyani aniqlash |
| ffuf, gobuster | Katalog va fayl qidirish |
| Nuclei | Shablon asosida zaiflik topish |
| Metasploit | Ekspluatatsiya doirasi |
| Wireshark | Tarmoq trafigini tahlil qilish |
| John, hashcat | Parol xeshlarini tahlil qilish |
Bu vositalar kuchli va ular hujum trafigi yaratadi.
Ularni faqat:
- O'z laboratoriyangizda
- Yozma ruxsat bilan
- Bug bounty qoidalari doirasida
ishlating.
Ruxsatsiz ishlatish - jinoyat.
# 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 #
| Sertifikat | Daraja | Fokus |
|---|---|---|
| CompTIA Security+ | Boshlang'ich | Umumiy asoslar |
| eJPT | Boshlang'ich | Amaliy pentest |
| OSCP | O'rta-yuqori | Amaliy, 24 soatlik imtihon |
| CEH | O'rta | Nazariy, keng qamrovli |
| CISSP | Boshqaruv | Xavfsizlik menejmenti |
| GWAPT | Ixtisoslashgan | Veb ilovalar |
Ish beruvchilar sertifikatga qaraydi, lekin haqiqiy mahorat amaliyotda shakllanadi.
Yo'l:
- Asoslarni o'rganing (tarmoq, Linux, dasturlash)
- Laboratoriyalarda mashq qiling (TryHackMe → HTB)
- CTF larda qatnashing
- Bug bounty da birinchi hisobotni yozing
- O'z topilmalaringiz haqida blog yozing
- Keyin sertifikat oling
Portfolio sertifikatdan ko'ra ko'proq gapiradi.
Test tekshiruv ro'yxati #
| Talab | Bajarildi |
|---|---|
| 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 |
- Lokal laboratoriya quring: Docker bilan DVWA yoki Juice Shop.
- Uni faqat
127.0.0.1da ochiq qiling. - PortSwigger Academy da ro'yxatdan o'ting va 5 ta laboratoriyani bajaring.
- O'z loyihangizda ochiq qolgan fayllarni tekshiring.
- Chegaralashni
curlbilan sinang. - Qo'lda tekshirish ro'yxatini o'z loyihangizga qo'llang.
- Topilgan bitta zaiflik uchun to'liq hisobot yozing.
- Shu zaiflik uchun avtomatik test yozing.
- Xavfsizlik testlarini CI ga qo'shing.
crt.shda 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.
.gitva.envochiq 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.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
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.