{"id":727,"date":"2020-02-22T10:54:42","date_gmt":"2020-02-22T10:54:42","guid":{"rendered":"http:\/\/zerothcode.com\/blog\/?p=727"},"modified":"2020-02-22T10:54:42","modified_gmt":"2020-02-22T10:54:42","slug":"burp-suite-monitor-endpoints","status":"publish","type":"post","link":"https:\/\/zerothcode.com\/blog\/burp-suite-monitor-endpoints\/","title":{"rendered":"Burp Suite Extension &#8211; To Monitor And Keep Track of Tested Endpoints"},"content":{"rendered":"<p class=\"post-title entry-title\">Burp Suite Extension &#8211; To Monitor And Keep Track of Tested Endpoints<\/p>\n<h2>Burp Scope Monitor Extension<\/h2>\n<h3>A Burp Suite Extension to monitor and keep track of tested endpoints.<\/h3>\n<h3>Main Features<\/h3>\n<div id=\"aim15878303732427127675\">\n<div dir=\"ltr\">\n<ul>\n<li>Simple, easy way to keep track of unique endpoints when testing an application<\/li>\n<li>Mark individual endpoints as analyzed or not<\/li>\n<li>Instantly understand when a new endpoint, not tested is requested<\/li>\n<li>Accessible from Proxy tab (right click, mark request as analyzed\/not)<\/li>\n<li>Send to Repeater<\/li>\n<li>Enforcement of Burp&#8217;s in scope rules<\/li>\n<li>Import\/Export state file directly to a CSV file for<\/li>\n<li>Autosave option<\/li>\n<\/ul>\n<div class=\"separator\"><a class=\"colorbox cboxElement\" href=\"https:\/\/1.bp.blogspot.com\/-tEX9KCfWTTo\/XV0uHj_NztI\/AAAAAAAAGWE\/aOpVcVasJLE1qrpnrsmBvpojNKd4130vwCLcBGAs\/s1600\/Burp%2BScope%2BMonitor%2BExtension.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/1.bp.blogspot.com\/-tEX9KCfWTTo\/XV0uHj_NztI\/AAAAAAAAGWE\/aOpVcVasJLE1qrpnrsmBvpojNKd4130vwCLcBGAs\/s640\/Burp%2BScope%2BMonitor%2BExtension.gif\" width=\"640\" height=\"353\" border=\"0\" data-original-height=\"794\" data-original-width=\"1438\" \/><\/a><\/div>\n<div><\/div>\n<h3>Installation<\/h3>\n<ol>\n<li>Make sure you have Jython configured under\u00a0<b>Extender -&gt; Options -&gt; Python Environment.\u00a0<\/b>For further instructions, check PortSwigger official instructions at their support page.<\/li>\n<li>git clone git@github.com:Regala\/burp-scope-monitor.git<\/li>\n<li>Import\u00a0main.py\u00a0in Extender &#8211;\u00a0<b>Extender -&gt; Extensions -&gt; Add -&gt; Select Python -&gt; Select main.py<\/b><\/li>\n<\/ol>\n<h3>Documentation<\/h3>\n<p>Most of the options available in General or Import tabs are auto-explanatory.<\/p><\/div>\n<\/div>\n<div>\n<article id=\"5878303732427127675\" class=\"post isobrick hentry\">\n<div id=\"post-body-5878303732427127675\" class=\"post-body entry-content\">\n<div id=\"aim25878303732427127675\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>&#8220;Repeater request automatically marks as analyzed&#8221; &#8211; when issuing a request to an endpoint from repeater, it marks this request as analyzed automatically.<\/li>\n<li>&#8220;Color request in Proxy tab&#8221; &#8211; this essentially applies the behavior of the extension in the Proxy tab, if you combine these options with &#8220;Show only highlighted items&#8221; in Proxy. However, it&#8217;s not as pleasant to the eyes as the color pallete is limited.<\/li>\n<li>&#8220;Autosave periodically&#8221; &#8211; backups the state file every 10 minutes. When activating this option, consider disabling &#8220;Autostart Scope Monitor&#8221;. This is in order to maintain a different state file per Burp project. However, you can easily maintain only one, master state file.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>&#8220;Import\/Export&#8221; is dedicated to handle the saved state files. It&#8217;s preferred to open your Burp project file associated with the Scope Monitor. It will still work if the Burp project is different, but when loading the saved entries, you won&#8217;t be able to send them to Repeater or view the request itself in the Request\/Response viewer (this is due to the fact that we are not storing the actually requests &#8211; just the endpoint, it&#8217;s analyzed status and a couple of other more. This makes it a little bit more efficient). Burp Suite<\/li>\n<\/ul>\n<h3>Future Development<\/h3>\n<ul>\n<li>Keep track of parameters observed in all requests<\/li>\n<li>Highlight when a new parameter was used in an already observed\/analyzed endpoint<\/li>\n<li>Export to spreadsheet \/ Google Sheets<\/li>\n<li>Adding notes to the endpoint, Burp Suite<\/li>\n<\/ul>\n<h3>Implementation<\/h3>\n<p>The code is not yet performant, optimized or anything similar. KISS and it works. Performance will be increased depending on demand and how the extension performs when handling large Burp projects. Burp Suite<\/p>\n<p>To circumvent some of Burp&#8217;s Extender API limitations, some small hacks were implemented. One of those is automatically setting a comment on the requests that flow in the Proxy tab.<\/p>\n<p>You can still add comments on the items, as you&#8217;d normally would, but just make sure to keep the placeholder string (scope-monitor-placeholder) there.<\/p>\n<p>Hopefully in the future each requestResponse from Burp will have a unique identifier, which would make the import state \/ load from file much cleaner and fast. With large state files, this might hang a bit when loading.<\/p>\n<p><a href=\"https:\/\/github.com\/Regala\/burp-scope-monitor\" target=\"_blank\" rel=\"noopener noreferrer\">Download\u00a0Burp Scope Monitor\u00a0<\/a><\/div>\n<div><\/div>\n<\/div>\n<\/article>\n<div>\n<h1 class=\"entry-title\"><a href=\"http:\/\/zerothcode.com\/blog\/sql-injection-cheatsheet\/\">SQL Injection Cheatsheet<\/a><\/h1>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Burp Suite Extension &#8211; To Monitor And Keep Track of Tested Endpoints Burp Scope Monitor Extension A Burp Suite Extension<\/p>\n","protected":false},"author":1,"featured_media":728,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[51],"tags":[],"yst_prominent_words":[818,804,815,816,811,801,798,795,817,799,813,812,820,814,819,802,796,803,800,797],"class_list":["post-727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/posts\/727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/comments?post=727"}],"version-history":[{"count":0,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/posts\/727\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/media\/728"}],"wp:attachment":[{"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/media?parent=727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/categories?post=727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/tags?post=727"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/zerothcode.com\/blog\/wp-json\/wp\/v2\/yst_prominent_words?post=727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}