Giter Site home page Giter Site logo

progpilot's Introduction

progpilot

A static analyzer for security purposes
Only PHP language is currently supported

Build Status Packagist Packagist

Standalone example

  • Download the latest phar archive in releases folder (or builds folder for dev versions).
  • Optional : configure your analysis with a yaml file.
  • Optional : use the up-to-date security files configuration in package/src/uptodate_data folder.
  • Progpilot takes two optional arguments :
    • your YAML configuration file (if not the default configuration will be used)
    • your files and folders that have to be analysed
php progpilot.phar --configuration ./configuration.yml example1.php example2.php ./folder1/ ./folder2/

Library installation

Use getcomposer to install progpilot.
Your composer.json looks like this one :

{
    "name": "Example",
    "description": "Example of use of Progpilot",
    "require": {
        "designsecurity/progpilot": "^0.6"
    }
} 

Then run composer :

composer install

Then you could try the following example.

Library example

<?php

require_once './vendor/autoload.php';

$context = new \progpilot\Context;
$analyzer = new \progpilot\Analyzer;

$context->inputs->setFile("source_code1.php");

$analyzer->run($context);
$results = $context->outputs->getResults();

var_dump($results);

?>
  • When source_code1.php contains this code :
<?php

$var7 = $_GET["p"];
$var4 = $var7;
echo "$var4";

?>	
  • The simplified output will be :
array(1) {
  [0]=>
  array(11) {
    ["source_name"]=>
    array(1) {
      [0]=>
      string(5) "$var4"
    }
    ["source_line"]=>
    array(1) {
      [0]=>
      int(4)
    }
    ["sink_name"]=>
    string(4) "echo"
    ["sink_line"]=>
    int(5)
    ["vuln_name"]=>
    string(3) "xss"
  }
}

All files (composer.json, example1.php, source_code1.php) used in this example are in the projects/example folder.
For more examples look at this page.

Specify an analysis

You can configure an analysis (the definitions of sinks, sources, sanitizers and validators) according to your own context.
You can define traditional variables like _GET, _POST or _COOKIE as untrusted and for example the return of the function shell_exec() too like in the following configuration :

{
    "sources": [
        {"name": "_GET", "is_array": true, "language": "php"},
        {"name": "_POST", "is_array": true, "language": "php"},
        {"name": "_COOKIE", "is_array": true, "language": "php"},
        {"name": "shell_exec", "is_function": true, "language": "php"}
		]
}

See more available options in the corresponding chapter about specifying an analysis

Development

Learn more about the development of Progpilot

Faq

Here

progpilot's People

Contributors

designsecurity avatar eric-therond avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.