Skip to main content

A Machine Learning Web-based Attack Classifier to detect and identify LFI, RFI, SQLI, and XSS attacks using the request paths

Project description

WAC: ML Web-based Attack Classifier

PyPI version

A Machine Learning Web-based Attack Classifier for the purpose of detecting and identifying LFI, RFI, SQLI, and XSS attacks based on request paths. This initiative is part of a research project at the University of Amsterdam conducted by Jord and Isaac under the supervision of Evgeniia.

Getting started

Installation using PyPI

pip install ml-wac

Performance

Performance evaluations have been conducted on all models to determine their accuracy and inference time on the 3579-item test set.

Model Name Accuracy Inference Time (ms)
XGBoost 98.80% 82.71
Decision Tree 98.21% 1.95
Logistic Regression 98.30% 5.58
Support Vector Machine 99.25% 19225.70

Examples

Predict a single path

from ml_wac.wac import WebAttackClassifier

# Create new instance
wac = WebAttackClassifier()

# Predict a single path. Optionally, a certainty threshold can be provided
prediction = wac.predict_single("/test?id=<script>alert(1)</script>", threshold=0.7)

print(prediction)

Predict multiple paths

from ml_wac.wac import WebAttackClassifier
	
# Create new instance
wac = WebAttackClassifier()

# Predict a list of paths, returns a list of predicted attack types
predictions = wac.predict([
    "/status?message=<script>/*+Bad+stuff+here+*/</script>",
    "/?download=../include/connection.php",
    "/?file=../../uploads/evil.php",
    "/products?category=Gifts'+OR+1=1--"
])

print(predictions)

Use other trained models

Use one of the other pre-trained models for inference. By default the logistic regression model is used.

from ml_wac.types.model_type import ModelType
from ml_wac.wac import WebAttackClassifier

# Load the XG_BOOST model
wac = WebAttackClassifier(model_type=ModelType.XG_BOOST)

# Predict a single path. Optionally, a certainty threshold can be provided
prediction = wac.predict_single("/test?id=<script>alert(1)</script>", threshold=0.7)

print(prediction)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ml_wac-1.1.tar.gz (12.2 MB view hashes)

Uploaded Source

Built Distribution

ml_wac-1.1-py3-none-any.whl (12.2 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page