探索 解码 销毁
GWT渗透测试工具包Originale版本是从GDSSecurity(演变而来)。GDSSecurity是一套渗透测试辅助工具,在年前最后更新了一次之后它就不更新了,由此出现了Originale版本。
这个工具的新版本和之前的版本使用相同的解析算法,但现在由GWT发布版本更新。目前的版本相对之前有了更多的选项更高地可用性,也修复了之前版本大量的BUG。支持Python 2 和Python 3 (文档中使用Python 3)。
GWT有两种类型的用法:枚举JAVA(服务端)方法和参数以及解码:
$ python3 gwt.py --help
usage: gwt.py [-h] [--verbose] [--debug] {enum,en,e,decode,de,dcd,dec,d} ...
GWT pentest tool
optional arguments:
-h, --help show this help message and exit
--verbose Verbose mode
--debug Debug mode
Actions:
Possible actions
{enum,en,e,decode,de,dcd,dec,d}
Actions that can be performed by the tool
enum (en, e) Enumerates all Java methods with their associated
parameters
decode (de, dcd, dec, d)
Decodes a [set of] GWT RPC request(s)
这个工具的新版本和之前的版本使用相同的解析算法,但现在由GWT发布版本更新。目前的版本相对之前有了更多的选项更高地可用性,也修复了之前版本大量的BUG。支持Python
示例:
$ python3 gwt.py enum --help
usage: gwt.py enum [-h] -u URL [-p PROXY] [-b BASICAUTH] [-c COOKIES]
[-o OUTPUT]
Possible options
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL URL of the nocache.js file
-p PROXY, --proxy PROXY
Proxy host and port (i.e.: "http://localhost:8080")
-b BASICAUTH, --basicauth BASICAUTH
Basic authentication credentials
-c COOKIES, --cookies COOKIES
Cookies to use to get the JS files
-o OUTPUT, --output OUTPUT
Absolute path were to store all parsed requests
(default "stdout")
示例
$ python3 gwt.py enum -u "https://site.com/plop.nocache.js?3790" This can take a very long time (like 3-4mn) AppletImportRpc.getAppletProperties() AppletImportRpc.getJavascriptProperties() AuthorizationRpc.getAuthorizations() [...] UserRpc.setNewPwd(java.lang.Integer, java.lang.String, java.lang.String) UserRpc.setNewPwd(java.lang.Integer, java.lang.String, java.lang.String, java.lang.String) UserRpc.storeMetamodelForImport(com.site.client.transport.media.CustomMetamodelTransport)
$ python3 gwt.py enum -u "https://site.com/plop.nocache.js?3790" -o test.txt This can take a very long time (like 3-4mn) Output saved to test.txt
示例请求解析
$ python3 gwt.py decode --help
usage: gwt.py decode [-h] -i INPUT [-s SURROUND] [-r REPLACE] [-b] [-p]
[-o OUTPUT] [-m METHODS] [-f]
Possible options
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
The RPC request payload or Burp log file
-s SURROUND, --surround SURROUND
Surrounds fuzzable parameters by a given string
-r REPLACE, --replace REPLACE
Replaces fuzzable parameters by a given string
-b, --burp Surrounds fuzzable parameters by Burp Intruder
characters
-p, --pretty Human readable formatting of the request
-o OUTPUT, --output OUTPUT
Absolute path were to store all parsed requests
(default "stdout")
-m METHODS, --methods METHODS
You can specify a file were all Java methods are
enumerated (line separated).This file can be obtained
by running the "enum" script
-f, --fuzz Outputs only fuzzable strings
示例
$ python3 gwt.py decode -i "4ï¿¿0ï¿¿6ï¿¿https://site.com/ï¿¿C33C748610876DA5ACE277F0EA893A44ï¿¿com.site.client.rpc.MediaRpcï¿¿getMediaHiresHttpPathï¿¿java.lang.Integerï¿¿java.lang.Integer/3438268394ï¿¿1ï¿¿2ï¿¿3ï¿¿4ï¿¿1ï¿¿5ï¿¿6ï¿¿123ï¿¿" Original request: 4ï¿¿0ï¿¿6ï¿¿https://site.com/ï¿¿C33C748610876DA5ACE277F0EA893A44ï¿¿com.site.client.rpc.MediaRpcï¿¿getMediaHiresHttpPathï¿¿java.lang.Integerï¿¿java.lang.Integer/3438268394ï¿¿1ï¿¿2ï¿¿3ï¿¿4ï¿¿1ï¿¿5ï¿¿6ï¿¿123ï¿¿ Resulting fuzzing string: 4|0|6|https://site.com/|C33C748610876DA5ACE277F0EA893A44|com.site.client.rpc.MediaRpc|getMediaHiresHttpPath|java.lang.Integer|java.lang.Integer/3438268394|1|2|3|4|1|5|6|%d| $ python3 gwt.py decode -i "4ï¿¿0ï¿¿11ï¿¿https://site.com/ï¿¿C33C748610876DA5ACE277F0EA893A44ï¿¿com.site.client.rpc.UserRpcï¿¿findActivatedUsersByProfileIdï¿¿java.lang.Integerï¿¿Iï¿¿java.lang.Stringï¿¿java.lang.Integer/3438268394ï¿¿pwdï¿¿ASCï¿¿nadminï¿¿1ï¿¿2ï¿¿3ï¿¿4ï¿¿6ï¿¿5ï¿¿6ï¿¿6ï¿¿7ï¿¿7ï¿¿7ï¿¿8ï¿¿1ï¿¿0ï¿¿100ï¿¿9ï¿¿10ï¿¿11ï¿¿" -m "~/available_methods.txt" -b Original request: 4ï¿¿0ï¿¿11ï¿¿https://site.com/ï¿¿C33C748610876DA5ACE277F0EA893A44ï¿¿com.site.client.rpc.UserRpcï¿¿findActivatedUsersByProfileIdï¿¿java.lang.Integerï¿¿Iï¿¿java.lang.Stringï¿¿java.lang.Integer/3438268394ï¿¿pwdï¿¿ASCï¿¿nadminï¿¿1ï¿¿2ï¿¿3ï¿¿4ï¿¿6ï¿¿5ï¿¿6ï¿¿6ï¿¿7ï¿¿7ï¿¿7ï¿¿8ï¿¿1ï¿¿0ï¿¿100ï¿¿9ï¿¿10ï¿¿11ï¿¿ Equivalent Java method call: UserRpc.findActivatedUsersByProfileId(java.lang.Integer 1, I 0, I 100, java.lang.String pwd, java.lang.String ASC, java.lang.String nadmin) Resulting fuzzing string: 4|0|11|https://site.com/|C33C748610876DA5ACE277F0EA893A44|com.site.client.rpc.UserRpc|findActivatedUsersByProfileId|java.lang.Integer|I|java.lang.String|java.lang.Integer/3438268394|§pwd§|§ASC§|§nadmin§|1|2|3|4|6|5|6|6|7|7|7|8|§1§|§0§|§100§|9|10|11|
$ python3 decode -i "/home/miaouplop/security/web/burp/logs/requests.log" -o "plop.txt" -f -b Encountered Error During Parsing with request: 4|0|14|https://site.com/|C33C748610876DA5ACE277F0EA893A44|com.site.client.rpc.TreeRpc|getThumbnailsDatas|java.lang.String|java.lang.Integer|java.lang.Boolean|I|Z|[Ljava.lang.String;|jxtrh8ts-1413979603637|java.lang.Integer/3438268394|java.lang.Boolean/476441737|creationDate|1|2|3|4|9|5|6|7|8|8|5|9|10|7|11|12|-1|13|0|0|60|14|0|0|0| Encountered Error During Parsing with request: 4|0|14|https://site.com/|C33C748610876DA5ACE277F0EA893A44|com.site.client.rpc.TreeRpc|getThumbnailsDatas|java.lang.String|java.lang.Integer|java.lang.Boolean|I|Z|[Ljava.lang.String;|k4tnblyc-1413979609284|java.lang.Integer/3438268394|java.lang.Boolean/476441737|creationDate|1|2|3|4|9|5|6|7|8|8|5|9|10|7|11|12|-1|13|0|0|60|14|0|0|0| Encountered Error During Parsing with request: 4|0|14|https://site.com/|C33C748610876DA5ACE277F0EA893A44|com.site.client.rpc.TreeRpc|getThumbnailsDatas|java.lang.String|java.lang.Integer|java.lang.Boolean|I|Z|[Ljava.lang.String;|ll11tggc-1413979603775|java.lang.Integer/3438268394|java.lang.Boolean/476441737|creationDate|1|2|3|4|9|5|6|7|8|8|5|9|10|7|11|12|-1|13|0|0|60|14|0|0|0| Encountered Error During Parsing with request: 4|0|14|https://site.com/|C33C748610876DA5ACE277F0EA893A44|com.site.client.rpc.TreeRpc|getThumbnailsDatas|java.lang.String|java.lang.Integer|java.lang.Boolean|I|Z|[Ljava.lang.String;|anprx235-1413979619663|java.lang.Integer/3438268394|java.lang.Boolean/476441737|creationDate|1|2|3|4|9|5|6|7|8|8|5|9|10|7|11|12|-1|13|0|0|60|14|0|0|0| Output saved to plop.txt
下载链接:https://github.com/miaouPlop/GWT-3D/releases
【Expl0r3r整理发布】