Skip to content

Commit dacaa9e

Browse files
David MaloneyDavid Maloney
authored andcommitted
simplify request-response parsing in apsscan
the record_request_and_response method for the nokogiri appscan parser was way overcomplicated it was trying to do way too much trickiness when the data could be very simply split and consumed MSP-9972
1 parent 3269817 commit dacaa9e

File tree

1 file changed

+7
-20
lines changed

1 file changed

+7
-20
lines changed

lib/rex/parser/appscan_nokogiri.rb

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -187,31 +187,18 @@ 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.dup
197+
res_header.from_s response_headers.dup
211198
@state[:request_headers] = req_header
212-
@state[:request_body] = request_body_text
199+
@state[:request_body] = request_body
213200
@state[:response_headers] = res_header
214-
@state[:response_body] = response_body_text
201+
@state[:response_body] = response_body
215202
end
216203

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

0 commit comments

Comments
 (0)