Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
s3tk — مجموعة أدوات أمان لـ Amazon S3 | Kitploit
أدوات/GitHubGitHub/ankane/s3tk
أمن البنية التحتية السحابيةماسحات الثغرات الأمنيةأدوات التشفير/فك التشفيرتدقيق التكوينأمن السحابةسوء التكوين
GitHubankane/s3tk

s3tk

مجموعة أدوات أمان لـ Amazon S3

عرض المستودع
45927منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

s3tk

مجموعة أدوات أمنية لخدمة Amazon S3

Screenshot

🍊 خاضعة للاختبار الميداني في Instacart

التثبيت

شغّل:

root@kitploit:~
pip install s3tk

يمكنك استخدام AWS CLI أو AWS Vault لإعداد بيانات اعتماد AWS الخاصة بك:

root@kitploit:~
pip install awscli
aws configure

انظر سياسات IAM المطلوبة لكل أمر.

الأوامر

الفحص

افحص حاوياتك (Buckets) من أجل:

  • قائمة تحكم بالوصول (ACL) مفتوحة للعامة
  • سياسة مفتوحة للعامة
  • الوصول العام محظور
  • التسجيل (Logging) مفعّل
  • التنقيح (Versioning) مفعّل
  • التشفير الافتراضي مفعّل
root@kitploit:~
s3tk scan

تشغيل على حاويات محددة فقط

root@kitploit:~
s3tk scan my-bucket my-bucket-2

يعمل أيضًا مع الأحرف البديلة (Wildcards)

root@kitploit:~
s3tk scan "my-bucket*"

تأكيد صحة حاوية (أو حاويات) السجل والبادئة (Prefix)

root@kitploit:~
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"

فحص تسجيل مستوى الكائن في CloudTrail [تجريبي]

root@kitploit:~
s3tk scan --object-level-logging

تخطي التسجيل أو التنقيح أو التشفير الافتراضي

root@kitploit:~
s3tk scan --skip-logging --skip-versioning --skip-default-encryption

الحصول على إشعارات البريد الإلكتروني عند الفشل (عبر SNS)

root@kitploit:~
s3tk scan --sns-topic arn:aws:sns:...

قائمة السياسات

قائمة سياسات الحاويات

root@kitploit:~
s3tk list-policy

تشغيل على حاويات محددة فقط

root@kitploit:~
s3tk list-policy my-bucket my-bucket-2

إظهار البيانات المُسماة

root@kitploit:~
s3tk list-policy --named

تعيين سياسة

ملاحظة: هذا يستبدل السياسة السابقة

الرفع الخاص فقط

root@kitploit:~
s3tk set-policy my-bucket --no-object-acl

حذف السياسة

حذف السياسة

root@kitploit:~
s3tk delete-policy my-bucket

حظر الوصول العام

حظر الوصول العام على حاويات محددة

root@kitploit:~
s3tk block-public-access my-bucket my-bucket-2

استخدم العلامة --dry-run للاختبار

تفعيل التسجيل

تفعيل التسجيل على جميع الحاويات

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs

فقط على حاويات محددة

root@kitploit:~
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs

تعيين بادئة السجل ({bucket}/ بشكل افتراضي)

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"

استخدم العلامة --dry-run للاختبار

بعض الملاحظات حول التسجيل:

  • الحاويات التي تم تفعيل التسجيل بها بالفعل لن يتم تحديثها على الإطلاق
  • يجب أن تكون حاوية السجل في نفس منطقة المصدر - قم بتشغيل هذا الأمر عدة مرات لمناطق مختلفة
  • قد يستغرق ظهور السجلات أكثر من ساعة

تفعيل التنقيح

تفعيل التنقيح على جميع الحاويات

root@kitploit:~
s3tk enable-versioning

فقط على حاويات محددة

root@kitploit:~
s3tk enable-versioning my-bucket my-bucket-2

استخدم العلامة --dry-run للاختبار

تفعيل التشفير الافتراضي

تفعيل التشفير الافتراضي على جميع الحاويات

root@kitploit:~
s3tk enable-default-encryption

فقط على حاويات محددة

root@kitploit:~
s3tk enable-default-encryption my-bucket my-bucket-2

هذا لا يشفر الكائنات الموجودة - استخدم الأمر encrypt لهذا الغرض

استخدم العلامة --dry-run للاختبار

فحص ACL للكائنات

فحص ACL على جميع الكائنات في حاوية

root@kitploit:~
s3tk scan-object-acl my-bucket

كائنات محددة فقط

root@kitploit:~
s3tk scan-object-acl my-bucket --only "*.pdf"

باستثناء كائنات معينة

root@kitploit:~
s3tk scan-object-acl my-bucket --except "*.jpg"

إعادة تعيين ACL للكائنات

إعادة تعيين ACL على جميع الكائنات في حاوية

root@kitploit:~
s3tk reset-object-acl my-bucket

هذا يجعل جميع الكائنات خاصة. راجع سياسات الحاوية لكيفية فرض ذلك مستقبلاً.

استخدم العلامة --dry-run للاختبار

تحديد كائنات معينة بنفس طريقة scan-object-acl

التشفير

تشغيل جميع الكائنات في حاوية مع التشفير من جانب الخادم

root@kitploit:~
s3tk encrypt my-bucket

استخدم مفاتيح يديرها S3 بشكل افتراضي. لاستخدام مفاتيح يديرها KMS استخدم:

root@kitploit:~
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...

للاستخدام مفاتيح يقدمها العميل استخدم:

root@kitploit:~
s3tk encrypt my-bucket --customer-key secret-key

استخدم العلامة --dry-run للاختبار

تحديد كائنات معينة بنفس طريقة scan-object-acl

ملاحظة: ستفقد الكائنات أي ACL مخصص

حذف الإصدارات غير المشفرة

حذف جميع الإصدارات غير المشفرة من الكائنات في حاوية

root@kitploit:~
s3tk delete-unencrypted-versions my-bucket

للسلامة، لن يحذف هذا أي إصدارات حالية من الكائنات

استخدم العلامة --dry-run للاختبار

تحديد كائنات معينة بنفس طريقة scan-object-acl

فحص DNS

فحص Route 53 بحثًا عن الحاويات للتأكد من ملكيتك لها

root@kitploit:~
s3tk scan-dns

وإلا، فقد تكون عرضة للاستيلاء على المجالات الفرعية (subdomain takeover)

https://hackerone.com/reports/207576

بيانات الاعتماد

يمكن تحديد بيانات الاعتماد في ~/.aws/credentials أو باستخدام متغيرات البيئة. راجع هذا الدليل لشرح متغيرات البيئة.

يمكنك تحديد ملف تعريف للاستخدام باستخدام:

root@kitploit:~
AWS_PROFILE=your-profile s3tk

سياسات IAM

فيما يلي الأذونات المطلوبة لكل أمر. قم بتضمين العبارات التي تحتاجها فقط.

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Scan",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketLogging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanObjectLevelLogging",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:ListTrails",
                "cloudtrail:GetTrail",
                "cloudtrail:GetEventSelectors",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanDNS",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SetPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeletePolicy",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "BlockPublicAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketPublicAccessBlock"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableLogging",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketLogging"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableVersioning",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketVersioning"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableDefaultEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ResetObjectAcl",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "Encrypt",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "DeleteUnencryptedVersions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:GetObjectVersion",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

سجلات الوصول

Amazon Athena رائعة للاستعلام عن سجلات S3. أنشئ جدولاً واستعلم:

root@kitploit:~
SELECT
    parse_datetime(requestdatetime, 'dd/MMM/yyyy:HH:mm:ss Z') AS time,
    key,
    remoteip,
    useragent
FROM
    s3_access_logs_db.mybucket_logs
WHERE
    requester = '-'
    AND httpstatus LIKE '2%'
    AND key LIKE 'some-keys%'
ORDER BY 1

سجلات CloudTrail

Amazon Athena رائعة أيضًا للاستعلام عن سجلات CloudTrail. أنشئ جدولاً واستعلم:

root@kitploit:~
SELECT
    eventtime,
    eventname,
    useridentity.username,
    requestparameters
FROM
    cloudtrail_logs
WHERE
    eventname LIKE '%Bucket%'
ORDER BY 1

أفضل الممارسات

حافظ على الأمور بسيطة واتبع مبدأ الامتياز الأقل (least privilege) لتقليل فرص الأخطاء.

  • حدد بدقة من يمكنه تنفيذ العمليات المتعلقة بالحاويات
  • تجنب خلط الكائنات ذات الأذونات المختلفة في نفس الحاوية (استخدم سياسة حاوية لفرض ذلك)
  • لا تحدد أذونات قراءة عامة على مستوى الحاوية (لا GetObject في سياسة الحاوية)
  • راقب التهيئة بشكل متكرر بحثًا عن التغييرات

سياسات الحاوية

الرفع الخاص فقط

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObjectAcl",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

الأداء

للأوامر التي تتكرر على كائنات الحاوية (scan-object-acl و reset-object-acl و encrypt و delete-unencrypted-versions)، قم بتشغيل s3tk على خادم EC2 للحصول على أقل زمن انتقال.

ملاحظات

الأوامر set-policy و block-public-access و enable-logging و enable-versioning و enable-default-encryption متوفرة للراحة. نوصي باستخدام Terraform لإدارة حاوياتك.

root@kitploit:~
resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-bucket"
  acl    = "private"

  logging {
    target_bucket = "my-s3-logs"
    target_prefix = "my-bucket/"
  }

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket_public_access_block" "my_bucket" {
  bucket = "${aws_s3_bucket.my_bucket.id}"

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

الترقية

شغّل:

root@kitploit:~
pip install s3tk --upgrade

لاستخدام master، شغّل:

root@kitploit:~
pip install git+https://github.com/ankane/s3tk.git --upgrade

Docker

شغّل:

root@kitploit:~
docker run -it ankane/s3tk aws configure

احفظ بيانات اعتمادك:

root@kitploit:~
docker commit $(docker ps -l -q) my-s3tk

وشغّل:

root@kitploit:~
docker run -it my-s3tk s3tk scan

التاريخ

اطّلع على سجل التغييرات

المساهمة

الجميع مدعوون للمساعدة في تحسين هذا المشروع. إليك بعض الطرق التي يمكنك المساعدة بها:

  • الإبلاغ عن الأخطاء
  • إصلاح الأخطاء وتقديم طلبات السحب
  • كتابة أو توضيح أو إصلاح الوثائق
  • اقتراح أو إضافة ميزات جديدة

للبدء في التطوير:

root@kitploit:~
git clone https://github.com/ankane/s3tk.git
cd s3tk
pip install --group dev
تنزيل الأداة