Commit Graph

162 Commits

Author SHA1 Message Date
justinbastress
4a6dfdbcc4
Merge pull request #146 from zmap/jb/fixSNI
TLS SNI fixes / API cleanup
2019-01-23 13:43:31 -05:00
Justin Bastress
fd322d3ecd fix missing format specifier 2018-12-18 16:32:44 -05:00
Jeff Cody
ec59b49540
Add support for BytesReadLimit parameter in BaseFlags
Some protocols may require more data than others.  To accomodate those,
allow the BytesReadLimit to be changed by means of BaseFlags.

By setting BaseFlags.BytesReadLimit prior to calling .Open(), scanners
can override the default limit to one that is appropriate for the data
collected.
2018-10-22 21:59:01 -04:00
Justin Bastress
8c71100b9e gofmt it 2018-10-08 11:27:06 -04:00
cy
2e94480cce
To ensure that the HTTP connection is not blocked! 2018-10-05 14:59:28 +08:00
cy
d5258bdc6e
To ensure that the HTTP connection is not blocked!
https://github.com/zmap/zgrab2/issues/171
2018-10-05 14:51:14 +08:00
Justin Bastress
65a7c8a578 Merge branch 'jb/session-wide-timeout' into jb/mssqlBoundsChecking 2018-10-01 14:25:04 -04:00
Justin Bastress
6618920234 add some tighter bounds checking in MSSQL scanner, and if there is an uncaught panic, log the body that caused it 2018-10-01 11:08:26 -04:00
Justin Bastress
900b0d5912 add bytelimit tests 2018-09-27 14:00:26 -04:00
Paul A. Parkanzky
04fa04a413 Omit empty build_info elm on mongodb output
Fixes CEN-817
2018-09-25 11:41:07 -04:00
Paul A. Parkanzky
122f945fb1 MongoDB - fix isMaster message length check.
Needs to account for OP_REPLY header
2018-09-14 16:09:36 -04:00
Justin Bastress
45a4cb0e90 re #163 -- add outer whole-connection timeout to TimeoutConnection, and add scan-target-wide timeout to HTTP scanner (adding a max time spent across redirects, too) 2018-09-05 14:33:59 -04:00
Paul A. Parkanzky
bb9324e00d BSON tag is case sensitive - s/isMaster/ismaster 2018-08-29 16:45:27 -04:00
Paul A. Parkanzky
1a1aa96793 Put upper limit on buffer size alloc 2018-08-28 16:13:35 -04:00
Paul A. Parkanzky
a7ddf61d74 Fix possible index error on malformed msg 2018-08-28 14:34:18 -04:00
Paul A. Parkanzky
d9aec0ae40 Improve partial results for mongodb scanner
* Separate out isMaster and buildInfo commands
* Return results of both in separate sub-structs
* Include isMaster results regardless of whether buildInfo succeeds
2018-08-22 11:49:17 -04:00
Paul A. Parkanzky
68bb3e9790 Return appropriate short write error 2018-08-21 17:08:01 -04:00
Paul A. Parkanzky
7419796cfc Address more PR comments
* Add error message to invalid BSON log msg
* Use snake case for json output
* Update affect integration tests
2018-08-21 16:34:35 -04:00
Paul A. Parkanzky
8b9c23f122 Fix typo and integration test which tested for it 2018-08-21 16:01:40 -04:00
Paul A. Parkanzky
f891880db4 Make some PR-requested changes
* Generate static messages in Scanner Init()
* s/panic/log.Fatal/
* Remove unnecessary casting
* Use stack var and pass slice to avoid unnecessary alloc
2018-08-21 14:51:48 -04:00
Paul A. Parkanzky
2f316b2242 Add mongodb integration tests. 2018-08-21 13:11:34 -04:00
Paul A. Parkanzky
72cbe9ae63 Add support for mongodb >= 4.1 2018-08-20 16:16:05 -04:00
Paul A. Parkanzky
becec08234 Call the wrapped Write() method. 2018-08-17 15:17:26 -04:00
Paul A. Parkanzky
784a186b39 Add MongoDB scanner. 2018-08-17 12:04:38 -04:00
Clayton Zimmerman
26e22bad97 Makes redirect response chain (currently unused) a debug field. 2018-07-12 16:47:26 -04:00
Clayton Zimmerman
dc3d7d1cb7 Adds bounds checks to avoid panic when value-less attributes have the correct name to be recorded directly in results. 2018-07-11 14:57:22 -04:00
Clayton Zimmerman
9d1265db8b Avoids skipping retry when an application error is encountered. 2018-07-11 14:45:46 -04:00
Clayton Zimmerman
2c47dfc1f2 Makes Attributes default output (rather than debug). 2018-07-11 11:52:13 -04:00
Clayton Zimmerman
f9eb6e00db Rename tls-retry option to ipps-retry 2018-07-11 10:38:42 -04:00
clayzim
1fa9b886e4 Changes TLS-Retry to attempt TLS before plaintext, ideally gathering more information. 2018-07-10 16:07:28 -04:00
clayzim
3fa42bef49 Parses empty attribute-groups correctly by skipping to the next one. 2018-07-10 15:16:30 -04:00
clayzim
544652de9d Resolves merge conflict to fix timeouts. 2018-07-10 15:10:24 -04:00
Justin Bastress
2a4ffcc3d9 BaseFlags.Timeout is already a duration 2018-07-10 14:25:25 -04:00
clayzim
e77e11cb7f Compensates for change in Scanner.config.BaseFlags.Timeout's type. No longer casts to time.Duration. 2018-07-10 14:05:20 -04:00
Clayton Zimmerman
c11be290dc
Feature/IPP: Fix Retry-TLS and Collect All IPP Attributes (#143)
* Correctly enables TLS only during retry grab when retry-tls flag is set.
* Fixes evaluation which caused too many arguments error in IPP integration test.
* Updates IPP zgrab2 schema to reflect storing all attributes in response.
* Adds Attributes member to ScanResults
* Ensures tryReadAttributes only reads attributes in the case of a postive detection. Cleans up isIPP
* Reads all attributes in IPP response
* Detects invalid length errors when reading IPP attributes.
* Returns the correct amount of uris, ipp versions, and cups versions in ScanResults.
2018-07-09 14:39:54 -04:00
Justin Bastress
811eb38754 Add GetTLSConfigForTarget and GetTLSConnectionForTarget methods (allowing SNI to work without an explicit --server-name); Add scanTarget.OpenTLS() to give a uniform interface; Document TLS scan; use target.OpenTLS(), correctly report successful/failed detections 2018-07-05 14:34:17 -04:00
Alex Holland
4f046b3085 Implement timeout to accept float value (#111)
* Implement timeout as a float value vs int

* remove unnecessary second multiplier

* whoops, missed one

* Switch type to time.Duration

* Fixup integration tests, change default and description

* Whoops, bad merge

* fix build
2018-07-02 13:00:45 -04:00
Justin Bastress
3e76d14900 use standard method to get host in SSH scanner 2018-06-28 16:52:29 -04:00
Justin Bastress
ccbf497b84 resolve conflict with utility.go 2018-06-28 16:05:48 -04:00
justinbastress
724d02d90d read full banners (#103)
* read full banners

* account for cases where smaller packets are returned
2018-06-28 15:06:39 -04:00
Zakir Durumeric
681d6e0a56
Merge branch 'master' into ah/trigger 2018-06-28 15:05:12 -04:00
Clayton Zimmerman
9bbd62a5b6
(IPP) improve scan output (#140)
* Refactors sending IPP request and handling errors thereof into sendIPPRequest()

* Adds dependency of IPP zgrab2 schema on HTTP zgrab2 schema.

* Refactors out trying to grab with multiple versions into re-usable function.

* Determines whether to output nil result in a concise and accurate manner.

* Refactors reading attributes present in IPP response to its own function. Calls that in Grab and augmentWithCUPSData. Formats code using Go fmt.

* Rejects successful non-IPP responses with protocol error. Reports HTTP errors.

* Removes circular dependency upon http zgrab2 schema.

* Changes name of objects to make IPP schema actually work.
2018-06-28 14:58:40 -04:00
Alex Halderman
0c597e5a8d
Merge branch 'master' into ah/trigger 2018-06-26 17:53:20 -07:00
J. Alex Halderman
0c8413c8cd mend 2018-06-26 13:59:36 -04:00
J. Alex Halderman
cd2070d3bc mend 2018-06-26 13:57:28 -04:00
J. Alex Halderman
9df97e03cf Add support for tags and triggers. 2018-06-26 13:51:10 -04:00
Clayton Zimmerman
9b00db7f29
Feature/create ipp module (#137)
* Changes grab to return *ScanResults. Implements ippInContentType correctly.

* Slots in an operational re-working of several HTTP module functions, and adds dependency on zgrab's http module. Includes some laregly copy-pasted sections worthy of scrutiny.

* Adds support to retry failed HTTP over HTTPS. Removes vestigial functions.

* Implements sending CUPS-get-printers request if CUPS is detected, yielding more detailed & accurate version information. Also handles URI's more correctly.

* Creates separate container to run IPP over TLS on CUPS. Runs basic tests against both containers.

* Creates virtual printer on each container to test for augmenting data with CUPS-get-printers request (which only works when printers exist).

* Augments version information with CUPS-get-printers response if possible.

* Allows specifying IPP version in constructed requests. Checks for version-not-supported server error.

* Allows resending IPP requests with different versions if we hit a version-not-supported error.

* Updates IPP zgrab2 schema to include fields added in modules/ipp/scanner.go

* Removes unnecessary TODO's

* Updates testable example for new definition of AttributeByteString

* Removes versionNotSupported's dependency on bufferFromBody. Checks bounds on generated requests' fields correctly.

* Updates zgrab2 IPP schema to match ScanResults object in modules/ipp/scanner.go

* Corrects IPP tests, bounds checking, zgrab schema formatting.

* Logs errors for unexpected behavior in buffer io operations. Updates schema to include standalone fields for attributes described in CUPS-get-printers response.

* Logs at debug level only when verbose flag is set. Prints accurate error message when CUPSVersion test fails.

* Handles HTTP request errors before checking for nil response/body. Fixes and tests convertURIToIPP.
2018-06-26 12:00:27 -04:00
Clayton Zimmerman
2afd7d8a2d Addresses comments from pull request #135. Makes ipp Dockerfile conform to best practices. Makes reference to IPP RFC where appropriate. 2018-06-12 17:00:52 -04:00
Clayton Zimmerman
ffaeeab0f1 Cleans up TODOs and includes more results to collect from scans. 2018-06-12 09:27:45 -04:00
Clayton Zimmerman
6456dda5e1 Implements basic scanning, without checking for correct protocol. 2018-06-11 12:02:42 -04:00