Projekt zaliczeniowy z przedmiotu Programowanie w Pythonie
Go to file
2024-01-21 19:22:41 +01:00
__pycache__ Aktualny stan projektu 2024-01-21 17:51:17 +01:00
.idea Aktualizacja README - dodanie linku do prezentacji 2024-01-21 18:46:29 +01:00
datasets Aktualny stan projektu 2024-01-21 17:51:17 +01:00
utils Aktualny stan projektu 2024-01-21 17:51:17 +01:00
__init__.py Aktualny stan projektu 2024-01-21 17:51:17 +01:00
environment.yml Aktualny stan projektu 2024-01-21 17:51:17 +01:00
main.py Aktualny stan projektu 2024-01-21 17:51:17 +01:00
nb.joblib Aktualny stan projektu 2024-01-21 17:51:17 +01:00
README.md Aktualizacja README - wymuszenie nowych linii 2024-01-21 19:22:41 +01:00
test_main.py Aktualny stan projektu 2024-01-21 17:51:17 +01:00
TODO.txt Aktualny stan projektu 2024-01-21 17:51:17 +01:00
vec.joblib Aktualny stan projektu 2024-01-21 17:51:17 +01:00

Temat projektu

Projekt zwraca użytkownikowi informacje na temat tego czy przekazany poprzez API ciąg znaków zawiera w sobie próbę ataku z jednej z poniższych klas: Cross Site-Scripting SQL Injection OS Command Injection

Dane trenujące

Do wytrenowania sieci wykorzystano publicznie dostępne zbiory przykładowych payloadów: https://github.com/payloadbox/xss-payload-list/blob/master/Intruder/xss-payload-list.txt https://github.com/CyberM0nster/SQL-Injection-Payload-List- https://github.com/omurugur/OS_Command_Payload_List/blob/master/OS-Command-Fuzzing.txt

Dane "zwykłe" (w rozumieniu - wolne od próby ataku na aplikacje) uzyskano poprzez framework Faker (10200 wartości). Dane te wygenerowano z użyciem następujących funkcji: faker.ascii_company_email() faker.city() faker.country() faker.postcode() faker.street_address() faker.iban() faker.company() faker.credit_card_number() faker.date_of_birth() faker.domain_name() faker.job() faker.sentence(nb_words=10) faker.passport_number() faker.name() faker.phone_number() faker.ssn() faker.user_agent() Zbiór ten reprezentuje typowe dane wprowadzane przez użytkowników do formularzy w aplikacjach webowych.

Prezentacja do projektu

Prezentacja do projektu znajduje się pod tym adresem.

Test jednostkowe Rest API

Stworzonych zostało 8 testów API, zarówno dla metody GET jak i POST.

Dostęp do aplikacji

Aplikacja dostępna jest w sieci wydziałowej pod adresem:

http://ppw-s1201686.vm.wmi.amu.edu.pl:8000/docs

Instalacja odbyła się bez anacondy, ponieważ w kontenerze zabrakło wolnego miejsca na dysku.

Przykładowe wywołania (dla GET):

http://ppw-s1201686.vm.wmi.amu.edu.pl:8000/detect/courtneybennett@miller.com - dane normalne
http://ppw-s1201686.vm.wmi.amu.edu.pl:8000/detect/1))%20or%20sleep(5)# - sql injection
http://ppw-s1201686.vm.wmi.amu.edu.pl:8000/detect/%3Cimg%20src=%22javascript:alert(2)%22%3E - xss
http://ppw-s1201686.vm.wmi.amu.edu.pl:8000/detect/%22%7Cecho%20DKGJRP$((17%2B97))$(echo%20DKGJRP)DKGJRP' - os command injection

Sposób komunikacji poprzez POST można zobaczyć w pliku test_main.py