XX-net/XX-Net · warning
%s %s %s haking
Error message
%s %s %s haking
What it means
The web control handler detected '..' in the request path, a classic path-traversal attempt, and rejected it with a 404 ('haking' = hacking). The logged fields identify the client and the offending path.
Source
Thrown at code/default/gae_proxy/local/web_control.py:192
if file_path.endswith('.html'):
mimetype = 'text/html'
elif file_path.endswith('.png'):
mimetype = 'image/png'
elif file_path.endswith('.jpg') or file_path.endswith('.jpeg'):
mimetype = 'image/jpeg'
else:
mimetype = 'application/octet-stream'
self.send_file(file_path, mimetype)
return
else:
xlog.warn('Control Req %s %s %s ', self.address_string(), self.command, self.path)
# check for '..', which will leak file
if re.search(r'(\.{2})', self.path) is not None:
self.wfile.write(b'HTTP/1.1 404\r\n\r\n')
xlog.warn('%s %s %s haking', self.address_string(), self.command, self.path )
return
filename = os.path.normpath('./' + path)
if self.path.startswith(('http://', 'https://')):
data = b'HTTP/1.1 200\r\nCache-Control: max-age=86400\r\nExpires:Oct, 01 Aug 2100 00:00:00 GMT\r\nConnection: close\r\n'
data += b'\r\n'
self.wfile.write(data)
xlog.info('%s "%s %s HTTP/1.1" 200 -', self.address_string(), self.command, self.path)
elif os.path.isfile(filename):
if filename.endswith('.pac'):
mimetype = 'text/plain'
else:
mimetype = 'application/octet-stream'
#self.send_file(filename, mimetype)
else:
self.wfile.write(b'HTTP/1.1 404\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n404 Not Found')View on GitHub (pinned to cfa5bc17b6)
Solutions
- If self-triggered: remove '..' from client URLs
- Ensure the web control port is only bound to 127.0.0.1 and not exposed
- Ignore: the request was already blocked with 404
Defensive patterns
Strategy: validation
Validate before calling
import re
if re.search(r'(\.\.)', path):
return 404 # reject before touching the filesystem Prevention
- Keep the control server bound to loopback only
- Never accept raw user paths in file-serving endpoints; use a whitelist
When it happens
Trigger: Any request whose self.path contains two consecutive dots, e.g. GET /../../etc/passwd — including encoded variants that were decoded earlier.
Common situations: Automated scanners or casual probing of the local control port; occasionally a legitimate client issuing a path containing '..' segments. Note the control server listens locally, so exposure means something else is reaching it.
Related errors
- %s %s %s haking
- web control ref:%s refuse
- web control ref:%s host:%s
- decode auth fail:%r
- Control Req %s %s %s
AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27).
Data as JSON: /api/errors/b2dfba5b2d22a1be.
Report an issue: GitHub.