Skip to content

Commit 13fc498

Browse files
committed
Land rapid7#4948, fixes several AppScan import issues
2 parents ae86f23 + 60966f3 commit 13fc498

File tree

1 file changed

+13
-23
lines changed

1 file changed

+13
-23
lines changed

lib/rex/parser/appscan_nokogiri.rb

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ def parse_params(request_body)
141141

142142
def report_web_page(&block)
143143
return unless(in_issue && has_text)
144-
return unless @state[:web_site]
145-
return unless @state[:response_headers]
146-
return unless @state[:uri]
144+
return unless @state[:web_site].present?
145+
return unless @state[:response_headers].present?
146+
return unless @state[:uri].present?
147147
web_page_info = {}
148148
web_page_info[:web_site] = @state[:web_site]
149149
web_page_info[:path] = @state[:uri].path
@@ -187,31 +187,21 @@ def report_service_info
187187

188188
def record_request_and_response
189189
return unless(in_issue && has_text)
190-
return unless @state[:web_site]
190+
return unless @state[:web_site].present?
191191
really_original_traffic = unindent_and_crlf(@text)
192-
split_traffic = really_original_traffic.split(/\r\n\r\n/)
193-
request_headers_text = split_traffic.first
194-
content_length = 0
195-
if request_headers_text =~ /\ncontent-length:\s+([0-9]+)/mni
196-
content_length = $1.to_i
197-
end
198-
if(content_length > 0) and (split_traffic[1].to_s.size >= content_length)
199-
request_body_text = split_traffic[1].to_s[0,content_length]
200-
else
201-
request_body_text = nil
202-
end
203-
response_headers_text = split_traffic[1].to_s[content_length,split_traffic[1].to_s.size].lstrip
204-
request = request_headers_text
205-
return unless(request && response_headers_text)
206-
response_body_text = split_traffic[2]
192+
request_headers, request_body, response_headers, response_body = really_original_traffic.split(/\r\n\r\n/)
193+
return unless(request_headers && response_headers)
207194
req_header = Rex::Proto::Http::Packet::Header.new
208195
res_header = Rex::Proto::Http::Packet::Header.new
209-
req_header.from_s request_headers_text.dup
210-
res_header.from_s response_headers_text.dup
196+
req_header.from_s request_headers.lstrip
197+
res_header.from_s response_headers.lstrip
198+
if response_body.blank?
199+
response_body = ''
200+
end
211201
@state[:request_headers] = req_header
212-
@state[:request_body] = request_body_text
202+
@state[:request_body] = request_body.lstrip
213203
@state[:response_headers] = res_header
214-
@state[:response_body] = response_body_text
204+
@state[:response_body] = response_body.lstrip
215205
end
216206

217207
# Appscan tab-indents which makes parsing a little difficult. They

0 commit comments

Comments
 (0)