介绍csrf及ssrf漏洞的原理、防护。
CSRF漏洞(Cross-site request forgery)跨站请求伪造。原理是在用户登录某些网站的时候访问了攻击者的网站,攻击者会请求用户已登录的网站api接口,由于请求是在用户的浏览器发起的,且此时用户已登录,导致网站后台会以为就是用户发起的请求而执行,达到攻击目的。
自己写一个网页做请求伪造,看目标网站是否执行伪造请求。
用pikachu靶场做例子。项目地址:https://github.com/zhuifengshaonianhanlu/pikachu。
SSRF(Server-Side Request Forgery)服务端请求伪造,漏洞的原理为如果一个网站有提供远程访问链接的功能,那么攻击者就有可能实施让网站访问网站服务器内网获取敏感信息等操作。也就是相当于让网站服务器作为攻击者的中间代理服务器。
如果网站有提供下面的功能就有可能有SSRF漏洞。原因是他们都有通过网站服务器访问我们提供的链接。或者是url中包含关键字【结合谷歌语法找到入手点】 share wap url link src source target u 3g display sourceURL imageURL domain
也可能存在漏洞。
编写一个php脚本作示例。
if(isset($_GET['submit'])){
$request_url = $_GET['request_url'];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $request_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
echo "
";
}
?>
<form method="get">
Please enter the url link:<input type="text" name="request_url">
<input class="sub" type="submit" name="submit" value="submit"/>
</form>