
मानव और मशीन द्वारा पठनीय वेब भेद्यता परीक्षण प्रारूप

explo एक सरल उपकरण है जो वेब सुरक्षा समस्याओं को मानव और मशीन द्वारा पढ़ने योग्य प्रारूप में वर्णित करने के लिए है।
अनुरोध/शर्त कार्यप्रवाह को परिभाषित करके, explo बिना स्क्रिप्ट लिखे सुरक्षा समस्याओं का शोषण करने में सक्षम है। यह जटिल कमजोरियों को एक सरल पठनीय और निष्पादन योग्य प्रारूप में साझा करने की अनुमति देता है।
csrf टोकन निकालने और इसे फॉर्म में उपयोग करने का उदाहरण:
name: get_csrf
description: csrf टोकन निकालें
module: http
parameter:
url: http://example.com/contact
method: GET
header:
user-agent: Mozilla/5.0
extract:
csrf: [CSS, "#csrf"]
---
name: exploit
description: मान्य csrf टोकन के साथ SQL इंजेक्शन भेद्यता का शोषण करें
module: http
parameter:
url: http://example.com/contact
method: POST
body:
csrf: "{{get_csrf.extracted.csrf}}"
username: "' SQL INJECTION"
find: आपके SQL सिंटैक्स में एक त्रुटि है
इस उदाहरण परिभाषा फ़ाइल में, सुरक्षा समस्या का परीक्षण दो चरणों को निष्पादित करके किया जाता है जो ऊपर से नीचे चलते हैं। अंतिम चरण सफलता या विफलता लौटाता है, यह इस बात पर निर्भर करता है कि स्ट्रिंग 'आपके SQL सिंटैक्स में एक त्रुटि है' मिलती है या नहीं।
pip install explo
git clone https://github.com/dtag-dev-sec/explo
cd explo
python setup.py install
explo [--verbose|-v] testcase.yaml
explo [--verbose|-v] examples/*.yaml
examples/ फ़ोल्डर में कुछ उदाहरण परीक्षण मामले हैं।
$ explo examples/SQLI_simple_testphp.vulnweb.com.yaml
आप explo को पायथन लाइब्रेरी के रूप में भी शामिल कर सकते हैं:
from explo.core import from_content as explo_from_content
from explo.core import ExploException, ProxyException
def save_log(msg):
print(msg)
try:
result = explo_from_content(explo_yaml_file, save_log)
except ExploException as err:
print(err)
एक http/https प्रॉक्सी और अनुरोधों के लिए टाइमआउट पर्यावरण चर के माध्यम से सेट किया जा सकता है। डिफ़ॉल्ट टाइमआउट 15 सेकंड पर सेट है।
$ export http_proxy=http://proxy:8089
$ export https_proxy=https://proxy:8090
$ export timeout=10
$ explo ...
कार्यक्षमता और सुरक्षा समस्याओं के वर्गों में सुधार करने के लिए मॉड्यूल जोड़े जा सकते हैं।
http मॉड्यूल HTTP अनुरोध करने, सामग्री निकालने और सामग्री खोजने/सत्यापित करने की अनुमति देता है।
निम्नलिखित डेटा अगले चरणों के लिए उपलब्ध कराया जाता है:
stepname.response.contentstepname.response.cookiesresponse.extracted.variable_nameयदि find_regex पैरामीटर सेट है, तो प्रतिक्रिया निकाय पर एक रेगुलर एक्सप्रेशन मिलान निष्पादित किया जाता है। यदि यह विफल होता है, तो यह मॉड्यूल विफलता लौटाता है और इस प्रकार वर्तमान कार्यप्रवाह (और सभी चरणों) का निष्पादन रोक देता है।
रेगुलर एक्सप्रेशन द्वारा निकालते समय, निकाले जाने वाले मान को चिह्नित करने के लिए मैच समूह extract का उपयोग करें (उदाहरण के लिए नीचे देखें)।
कुकीज़ संदर्भित करने के लिए, पिछले चरण का नाम संदर्भित करें जहाँ से कुकीज़ ली जानी चाहिए (cookies: the_other_step.response.cookies)।
पैरामीटर उदाहरण:
parameter:
url: http://example.com
method: GET
allow_redirects: True
headers:
User-Agent: explo
Content-Type: abc
cookies: stepname.response.cookies
body:
key: value
find: स्ट्रिंग खोजें
find_regex: (reg|ular)expression खोजें
find_in_headers: शीर्षकों में खोज स्ट्रिंग
expect_response_code: 200
extract:
variable1: [CSS, '#csrf']
variable2: [REGEX, '<input(.*?)value="(?P<extract>.*?)"']
http_header मॉड्यूल यह जाँचने की अनुमति देता है कि प्रतिक्रिया में शीर्षकों (और मानों) का एक निर्दिष्ट सेट गायब है या नहीं। अन्य सभी पैरामीटर http मॉड्यूल के समान हैं।
अन्य मॉड्यूल के लिए निम्नलिखित डेटा उपलब्ध कराया जाता है:
stepname.response.contentstepname.response.cookiesपैरामीटर उदाहरण:
parameter:
url: http://example.com
method: GET
allow_redirects: True
headers:
User-Agent: explo
Content-Type: abc
body:
key: value
headers_required:
X-XSS-Protection: 1
Server: . # सभी मान मान्य हैं
sqli_blind मॉड्यूल समय-आधारित अंधा SQL इंजेक्शन की पहचान करने में सक्षम है।
अन्य मॉड्यूल के लिए निम्नलिखित डेटा उपलब्ध कराया जाता है:
stepname.response.contentstepname.response.cookiesपैरामीटर उदाहरण:
parameter:
url: http://example.com/vulnerable.php?id=1' waitfor delay '00:00:5'--
method: GET
delay_seconds: 5
यदि 5 सेकंड (delay_seconds) की सीमा पार हो जाती है, तो जाँच सही लौटाती है (और इस प्रकार सफलता में परिणत होती है)।
मेटाडेटा ब्लॉक एक विशेष ब्लॉक है जिसे .yaml फ़ाइल में पहले ब्लॉक के रूप में जोड़ा जा सकता है ताकि आगे की प्रक्रिया के लिए एक भेद्यता में मेटाडेटा जोड़ा जा सके। यह तब उपयोगी होता है जब explo को लाइब्रेरी के रूप में उपयोग किया जाता है और प्रत्येक भेद्यता विवरण के लिए मेटाडेटा meta_from_content(content) के साथ पढ़ा जा सकता है। इस मॉड्यूल को नाम या विवरण की आवश्यकता नहीं है।
उदाहरण:
module: metadata
parameter:
cvss: 8.9
author: Robin Verton
---
name: login
description: परीक्षण क्रेडेंशियल्स के साथ लॉगिन करें
module: http
parameter:
url: http://testphp.vulnweb.com/userinfo.php
method: POST
body:
uname: test
pass: test