openwrtdocker重置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openwrtdocker重置相关的知识,希望对你有一定的参考价值。

参考技术A 双网口主机通过 docker 安装 openwrt 实现软路由功能
在 docker 中安装 openwrt,而不是在 openwrt 中安装 docker, 真正做到ALL IN ONE

特点

不用重新购买设备(只需要再买个 usb 网卡或者 minipcie 网卡等等都行)
性能及其强大(相比较于绝大部分软路由, 自用的 linux 服务器都不会太差)
不会对原 linux 系统上的服务有任何影响
前提和环境
一台性能还不错的 Linux 主机(宿主机)
双网口
docker
原理
通过macvlan技术在现有网卡的基础上创建虚拟网卡, 并将虚拟网卡挂载到 docker 容器中 openwrt 上.

最好百度看看 macvlan 的介绍, 理解其作用和功能

一些不必要的条件
docker 可以安装 portainer 来在页面上管理容器, 方便像我这种新手操作和管理容器

推荐一个中文版 portainer 镜像
查看自身网卡名称
ip addr
登录后复制
2: enp6s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000
link/ether 00:16:96:e9:1a:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.124.13/24 brd 192.168.124.255 scope global dynamic noprefixroute enp6s0
valid_lft 72610sec preferred_lft 72610sec
inet6 fe80::455c:bd08:4a7d:ce26/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp8s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000

登录后复制
当前 enp6s0 和上层路由器相连接, enp8s0 没有任何连接

enp8s0 将用于 openwrt 的 lan 口, enp6s0 将用于 wan 口

开启网卡的混杂模式
ip link set enp8s0 promisc on
ip link set enp6s0 promisc on
登录后复制
上面这一步似乎在重启之后就会失效, 需要持久化一下, 具体操作百度…

开启 ipv4 转发

vi /etc/sysctl.conf

# 取消 net.ipv4.ip_forward = 1 的注释
# 或者添加 net.ipv4.ip_forward = 1

# 重新加载配置
sysctl -p /etc/sysctl.conf
登录后复制
配置 Lan 口的 macvlan
创建一个名为 maclan 的虚拟网卡, 这里的 ip 可以随意定

docker network create -d macvlan --subnet=192.168.10.0/24 --gateway=192.168.10.1 -o parent=enp8s0 maclan
登录后复制
查看网络

docker network ls

# 需要有这样一条数据
384a7789733c maclan macvlan local
登录后复制
拉取 docker 镜像
这里会先将maclan 挂载到容器上, 用于openwrt的lan口

docker run --restart always --name openwrt -d --network maclan --privileged --ip 192.168.10.2 nonnichen/nonniwrt /sbin/init
登录后复制
查看镜像

docker ps
登录后复制
nonnichen/nonniwrt 这个是一个比较老的镜像了, 需要最新镜像可以自行拉取lede 的源码进行打包.
镜像资料

本人自己编译的 64 位 openwrt docker 镜像, 提取码:6686 (编译时间 2022/12/17)
一个热心分享的站点制作的镜像
docker 如何使用本地镜像

# 导入本地镜像
cat xxx.tar.gz | docker import - openwrt/lede

# 使用
docker run --restart always --name openwrt -d --network maclan --privileged --ip 192.168.10.2 openwrt/lede /sbin/init
登录后复制
修改 docker lan 口配置
# 进入容器
docker exec -it openwrt /bin/sh

#
vi /etc/config/network

登录后复制
主要修改 lan 配置, 改成下面这个样子 (lan 口 ip 要和指定给 openwrt 的 ip 相同, 也就是 192.168.10.2)

config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.10.2'
option netmask '255.255.255.0'
option ip6assign '60'
登录后复制
然后重启网络

/etc/init.d/network restart
登录后复制
检查 ip

ip addr
登录后复制
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:42:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.2/24 brd 192.168.10.255 scope global br-lan
valid_lft forever preferred_lft forever
67: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default
link/ether 02:42:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
登录后复制

这里不同版本的 openwrt 可能会有区别(我用的是自己构建的版本), 只要bar-lan或者eth0 的地址是 192.168.10.2 就 ok

顺便可以把 root 密码重置下, 不同人构建的 openwrt 版本 root 密码不太一样, 重置一下方便后续进入控制台

# 进入容器
docker exec -it openwrt /bin/sh
# 重置root密码
passwd
# 输入你想设置的密码
登录后复制
进入 openwrt 控制台
注意由于 macvlan 的限制, 宿主机目前是无法连通 docker 容器中的 ip 的

需要额外一台机器(就叫它主机B), 接在 enp8s0 也就是 lan 口上, 然后给机器设置静态的 ip 地址, 例如192.168.10.3.

如果没有, 也可以通过一些方法直接在宿主机上访问控制台, 参见宿主机和 openwrt 联通
这里有一点需要特别注意, 网关一定要设置为 openwrt的lan口地址, 也就是192.168.10.2, dns 也可以设置为这个地址.

一定需要手动设置 ip 地址

然后在浏览器输入 192.168.10.2 进入 openwrt 控制台

给 openwrt 添加 wan 口
需要用enp6s0再创建一个 macvlan, 此时的 ip 设置需要和上层路由相同(例如我的上层路由器是 192.168.124.1)

docker network create -d macvlan --subnet=192.168.124.0/24 --gateway=192.168.124.1 -o parent=enp6s0 macwan
登录后复制
将这张网卡挂载到 openwrt

docker network connect macwan openwrt
登录后复制
然后进入 openwrt 控制台, 设置wan接口(此时应该能看到 eth1个网卡, 选择 DHCP 客户端就好, 会自动获取 ip 地址)

一定要确保eth1网卡能够分配到上层路由的 ip

同时也可以进入容器内查看 ip, 最终结果应该是这样子的:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:42:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.2/24 brd 192.168.10.255 scope global br-lan
valid_lft forever preferred_lft forever
67: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP group default
link/ether 02:42:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
68: eth1@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:a8:7c:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.124.12/24 brd 192.168.124.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::42:c0ff:fea8:7c02/64 scope link
valid_lft forever preferred_lft forever
登录后复制

我自己编译的openwrt的接口状态显示不出来, 不过并不影响功能(可能版本太新了吧, 不清楚~~)

测试主机B是否能够访问互联网(网上的某些版本可能会出现能 ping 通但是无法访问互联网的问题)

如果无法访问互联网, 加一条openwrt的防火墙自定义规则, 然后重启防火墙

iptables -t nat -I POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
登录后复制
主机 B 和 宿主机联通
只需要给宿主机的enp8s0网卡设置一个192.168.10.0/24网段的 ip 就可以

以我的宿主机debain 11为例

然后主机B就能够和宿主机联通了

宿主机和 openwrt 联通
由于 macvlan的特性, 宿主机和容器的 ip 是隔离的, 尽管是同一个网段 ip.

# 通过`enp8s0`创建一个虚拟网卡`hMACvLAN` (同一个物理网卡的虚拟网卡可以互通)
nmcli connection add type macvlan dev enp8s0 mode bridge ifname hMACvLAN autoconnect yes save yes

# 因该会自动获取ip地址, 可以通过 ip addr 查看

# 如果没有自动获取, 使用下面这条命令手动指定
ip addr add 192.168.10.100 dev hMACvLAN

# 指定网关
ip route add 192.168.10.2 dev hMACvLAN

登录后复制

现在在宿主机上应该能够 ping 通 192.168.10.2

应该也可以直接通过宿主机的浏览器访问192.168.10.2了.

宿主机能否通过容器的openwrt进行科学上网
在打通宿主机和openwrt的网络后, 可以在openwrt中开socks代理服务, 然后宿主机设置对应代理就ok(理论上是完全可行的, 我没试过~~)

不过不建议宿主机使用openwrt的网络, 一旦dokcer出问题可能会导致整台机器无法联网.

最好是宿主机自己跑ssr等进行科学上网, 即便docker出问题也能保证宿主机有网.

享受 ALL IN ONE 吧
`

现在在宿主机上应该能够 ping 通 192.168.10.2

应该也可以直接通过宿主机的浏览器访问192.168.10.2了.

宿主机能否通过容器的openwrt进行科学上网
在打通宿主机和openwrt的网络后, 可以在openwrt中开socks代理服务, 然后宿主机设置对应代理就ok(理论上是完全可行的, 我没试过~~)

不过不建议宿主机使用openwrt的网络, 一旦dokcer出问题可能会导致整台机器无法联网.

最好是宿主机自己跑ssr等进行科学上网, 即便docker出问题也能保证宿主机有网.

享受 ALL IN ONE 吧
docker
运维
网络
cross
精选推荐
广告

树莓派中利用docker搭建openwrt旁路由
4958阅读·1评论·1点赞
2020年10月20日
N1刷Armbian系统并在Docker中安装OpenWrt旁路由的详细教程
5.2W阅读·7评论·7点赞
2019年11月5日
docker omv 防火墙_我的软路由折腾之旅 篇三:在openmediavault上通过Docker实现OPENWRT旁路由功能...
1388阅读·0评论·0点赞
2020年12月20日
OrangePi 5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备)
597阅读·0评论·1点赞
2022年12月20日
软路由安装openwrt系统
9203阅读·0评论·2点赞
2021年8月15日
树莓派4B安装Openwrt软路由并用作家庭网络网关设备
2959阅读·4评论·1点赞
2021年6月6日
00:02
00:29
睡前半小时学习这个记忆方法,可能影响你的一生~

00:29
讲真
广告
玩客云折腾记2--docker和openwrt安装
1.1W阅读·0评论·3点赞
2021年2月20日
斐讯n1安装centos7+docker openwrt
4802阅读·1评论·0点赞
2022年1月16日
OpenWRT 软路由部署青龙面板教程
2879阅读·1评论·2点赞
2022年11月12日
酷软正在连接服务器,蜗牛星际:我的B款双网口机箱PVE+爱快+LEDE 双软路由 保姆级教程...
1890阅读·0评论·0点赞
2021年8月1日
树莓派3 有线静态路由设置_树莓派4b 搭建软路由 hostapd +dnsmasq+ docker openwrt
107阅读·0评论·0点赞
2020年11月22日
群晖(Synology)配置 NAS + 软路由 续
7276阅读·0评论·2点赞
2019年12月10日
群晖(Synology)配置 NAS + 软路由
5.5W阅读·0评论·10点赞
2019年8月14日
软路由保姆级入门教程 一篇看懂软路由
1.0W阅读·1评论·9点赞
2022年3月18日
DS918二合一硬盘安装,配置Oenwrt做软路由
2287阅读·0评论·0点赞
2021年10月11日
关于R4s软路由刷机教程
5086阅读·3评论·0点赞
2022年6月12日
openwrt 格式化_OPENWRT路由固件入门食用教程S2:磁盘挂载及分区,网络共享,脱机下载。...
4345阅读·0评论·2点赞
2021年1月28日
小雷盒子刷x86教程_垃圾佬组软路由All in One主机 篇二:软件篇。哪种方案是目前组All in One主机的终极选择。...
1997阅读·0评论·1点赞
2021年1月13日
旧电脑改造服务器或云电脑和外网访问家庭nas/软路由实战记录
6448阅读·1评论·6点赞
2022年2月26日
去首页
看看更多热门内容
评论2

m0_72286447


192.168.10.1呢???你这个下级子网怎么找到出口?
2023.01.21

programmer_ada


不知道 云原生入门 技能树是否可以帮到你:https://edu.csdn.net/skill/cloud_native?utm_source=AI_act_cloud_native

任意用户密码重置:重置凭证未校验

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区。我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证未校验导致的任意用户密码重置问题。

传送门:

任意用户密码重置(一):重置凭证泄漏

任意用户密码重置(二):重置凭证接收端可篡改

任意用户密码重置(三):用户混淆

密码找回需要鉴别用户的合法身份,证明你就是你,通常有两种做法,一是网站将重置验证码发至用户绑定的邮箱或手机号,用户持重置验证码证明你就是你,二是用户输入密码保护问题对应的答案。其中,验证码、密保答案就是重置密码的重要凭证。

在日常对密码找回功能的攻击中,我的大部份精力聚焦在是否可以暴破验证码、是否可以劫持接收验证码的手机号或邮箱、是否可以混淆重置其他账号、是否可以绕过验证步骤、甚至是猜测重置 token 的生成规律等攻击方式上,反而忽略了最容易、最低技术含量的一种方式——服务端未校验重置凭证。换言之,不论你输入的重置验证码或密保答案是否正确,只要请求格式无误,均可成功重置任意账号密码。我举两个真实案例(漏洞均已修复,就不打码了),你感受下。

案例一:因服务端未校验 token 导致可重置任意账号密码

密码找回页面 http://www.omegatravel.net/users/retrievePassword/ 用攻击者账号 [email protected] 进入密码找回全流程,输入图片验证码后提交:

技术分享图片

随后收到带 token 的密码重置链接的邮件:

技术分享图片

其中,key:FqvICT 和 userEmail:[email protected] 引起了我的注意。正常来说,提交该 URL 后,服务端会校验 key 与 userEmail 是否匹配,若匹配则进入提交新密码页面,若不匹配则报错。现在,我尝试将 key 从 FqvICT 改为 xxxxxx 后再访问,本来心理预期将看到报错页面,没想到进入了新密码提交页面,难倒所谓的重置 token 仅仅是个摆设?

赶紧找个账号试试,就拿信息收集时找到的 [email protected] 为例(更多后台账号见后文)。参照前面收到的重置链接格式,简单拼装为 http://www.omegatravel.net/users/retrievePasswordReset/key:xxxxxx/userEmail:[email protected],是滴,key 的值我随便写的,访问看看,哇,居然真的进入了新密码提交页面:

技术分享图片

输入新密码 PenTest1024 后提交,网站提示“修改密码成功”。尝试用 [email protected]/PenTest1024 登录,成功进入系统:

技术分享图片

如何获取其他账号?从注册页面可知,该网站只能用邮箱注册,邮箱即账号。我关心普通用户和内部员工用户两类账号(即邮箱)。普通用户的邮箱字典方面,把国人常见姓名拼音 top500 结合常见邮箱后缀(@qq.com、@163.com 等等)快速生成个简单邮箱字典;内部员工的邮箱方面,我从该网站域名注册信息查询到联系人为 [email protected],说明该公司使用 @omegauk.net 的邮箱后缀,同上,把国人常见姓名拼音 top500、常见后台账号,结合 @omegauk.net 邮箱后缀,快速生邮箱字典;另外,从“联系我们”、“诚聘英才”、“公司简介”等页面找到大量内部员工邮箱和合作伙伴邮箱,如 [email protected][email protected] 等等:

技术分享图片

将以上几类邮箱字典存为 mail.txt 也就是用户名。

这样,我不仅可以重置普通账号的密码,还能劫持大量内部员工、合作伙伴的账号,为避免影响业务,不再实际操作。

案例二:可枚举无密保的用户名,导致任意密保答案均可重置密码

在密码找回页面 http://www.hzpzs.net/u_findPassword.asp 输入有效用户名 yangyangwithgnu 后拦截请求包:

技术分享图片

猜测该数据包用于用户名有效性校验,放至 repeater 中分析。

由于没用图片验证码,导致可枚举有效用户名,发现三类情况。一是,用户名存在且设置过密保问题,应答类似:

技术分享图片

二是,用户名存在但未设置密保问题,应答类似:

技术分享图片

三是,无效用户名,则应答类似:

技术分享图片

用常见用户名和中国人姓名拼音作为字典进行枚举,在所有结果中过滤显示含有关键字 <td width=”65%”></td> 的应答,得到的所有 UserName 参数值即为未设置密保问题的用户名。如:aaron、admin、adolph、alisa、chenchen、esther、jones 等等。

按正常流程,对 chenxin 进行密码重置,输入任意密保答案均可重置密码:

技术分享图片

 

 

本文原创作者:yangyangwithgnu  转自 www.freebuf.com

以上是关于openwrtdocker重置的主要内容,如果未能解决你的问题,请参考以下文章

openwrt系统重置后怎么登录

请教如何清除或重置openwrt的配置

OpenWRT 恢复出厂设置命令

openwrt恢复出厂需要联网吗

即使在故障安全模式下重置配置后,我也无法访问我的openwrt路由器

openwrtnano命令没有