hacktricks/network-services-pentesting/3690-pentesting-subversion-svn-server.md
2023-08-03 19:12:22 +00:00

484 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一个**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>
# 基本信息
Subversion是当今许多版本控制选项之一。它通常被缩写为SVN。\
Subversion用于维护项目的当前和历史版本。Subversion是一个开源的集中式版本控制系统。它在Apache下获得许可。它也被称为软件版本和修订控制系统。
**默认端口:**3690
```
PORT STATE SERVICE
3690/tcp open svnserve Subversion
```
## 横幅抓取
Banner Grabbing横幅抓取是一种用于获取目标系统信息的技术。在网络服务渗透测试中横幅抓取是一项重要的任务它可以帮助我们了解目标系统的版本、操作系统和其他相关信息。
横幅是指在与目标系统建立连接时,系统返回的一段包含有关服务和版本信息的文本。通过分析这些横幅信息,我们可以确定目标系统上运行的服务和版本,从而为后续的渗透测试活动做好准备。
横幅抓取可以使用多种工具和技术来实现。其中一种常用的方法是使用Telnet或Netcat等工具手动连接到目标系统并查看返回的横幅信息。另一种方法是使用自动化工具如Nmap或Bannergrab等来扫描目标系统并提取横幅信息。
在进行横幅抓取时,需要注意以下几点:
- 需要选择合适的工具和技术,以确保能够获取准确和完整的横幅信息。
- 需要对目标系统进行充分的信息收集,以了解目标系统上可能运行的服务和版本。
- 需要谨慎处理横幅信息,以避免暴露自己的身份和意图。
总之,横幅抓取是一项重要的技术,可以帮助渗透测试人员获取目标系统的关键信息。通过合理选择工具和技术,并结合充分的信息收集,我们可以更好地了解目标系统,并为后续的渗透测试活动做好准备。
```
nc -vn 10.10.10.10 3690
```
## 枚举
### 1. SVN版本探测
使用以下命令检测目标主机上运行的SubversionSVN版本
```bash
nmap -p 3690 --script svn-brute <target>
```
### 2. SVN元数据泄露
通过访问目标主机的SVN元数据可以获取有关仓库和文件的信息。使用以下命令
```bash
svn ls svn://<target>:3690
```
### 3. SVN源代码泄露
通过访问目标主机的SVN源代码可以获取敏感信息如用户名、密码和源代码。使用以下命令
```bash
svn checkout svn://<target>:3690
```
### 4. SVN日志泄露
通过访问目标主机的SVN日志可以获取有关提交历史和修改的详细信息。使用以下命令
```bash
svn log svn://<target>:3690
```
### 5. SVN配置文件泄露
通过访问目标主机的SVN配置文件可以获取有关仓库和服务器配置的信息。使用以下命令
```bash
svn cat svn://<target>:3690/conf/svnserve.conf
svn cat svn://<target>:3690/conf/passwd
svn cat svn://<target>:3690/conf/authz
```
### 6. SVN权限绕过
如果目标主机的SVN配置文件中存在未正确配置的权限可以尝试绕过访问限制。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690
```
### 7. SVN代码注入
如果目标主机的SVN服务器存在代码注入漏洞可以尝试注入恶意代码。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/!svn/txr/<transaction_id>/payload
```
### 8. SVN远程命令执行
如果目标主机的SVN服务器存在远程命令执行漏洞可以尝试执行任意命令。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/!svn/txr/<transaction_id>/cmd
```
### 9. SVN后门
如果目标主机的SVN服务器存在后门可以尝试使用后门访问目标系统。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/!svn/txr/<transaction_id>/backdoor
```
### 10. SVN身份验证绕过
如果目标主机的SVN服务器存在身份验证绕过漏洞可以尝试绕过身份验证。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/!svn/txr/<transaction_id>/../payload
```
### 11. SVN远程文件包含
如果目标主机的SVN服务器存在远程文件包含漏洞可以尝试包含远程文件。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/!svn/txr/<transaction_id>/../file:///etc/passwd
```
### 12. SVN文件上传
如果目标主机的SVN服务器允许文件上传可以尝试上传恶意文件。使用以下命令
```bash
svn import --username <username> --password <password> <local_file> svn://<target>:3690/<repository>/<file>
```
### 13. SVN文件删除
如果目标主机的SVN服务器允许文件删除可以尝试删除文件。使用以下命令
```bash
svn delete --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 14. SVN文件修改
如果目标主机的SVN服务器允许文件修改可以尝试修改文件内容。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 15. SVN文件下载
如果目标主机的SVN服务器允许文件下载可以尝试下载文件。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 16. SVN文件覆盖
如果目标主机的SVN服务器允许文件覆盖可以尝试覆盖文件内容。使用以下命令
```bash
svn checkout --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 17. SVN文件重命名
如果目标主机的SVN服务器允许文件重命名可以尝试重命名文件。使用以下命令
```bash
svn move --username <username> --password <password> svn://<target>:3690/<repository>/<file> svn://<target>:3690/<repository>/<new_file>
```
### 18. SVN文件复制
如果目标主机的SVN服务器允许文件复制可以尝试复制文件。使用以下命令
```bash
svn copy --username <username> --password <password> svn://<target>:3690/<repository>/<file> svn://<target>:3690/<repository>/<new_file>
```
### 19. SVN文件锁定
如果目标主机的SVN服务器允许文件锁定可以尝试锁定文件。使用以下命令
```bash
svn lock --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 20. SVN文件解锁
如果目标主机的SVN服务器允许文件解锁可以尝试解锁文件。使用以下命令
```bash
svn unlock --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 21. SVN文件标记
如果目标主机的SVN服务器允许文件标记可以尝试标记文件。使用以下命令
```bash
svn propset --username <username> --password <password> svn:keywords "Id" svn://<target>:3690/<repository>/<file>
```
### 22. SVN文件属性修改
如果目标主机的SVN服务器允许修改文件属性可以尝试修改文件属性。使用以下命令
```bash
svn propset --username <username> --password <password> svn:executable "yes" svn://<target>:3690/<repository>/<file>
```
### 23. SVN文件属性删除
如果目标主机的SVN服务器允许删除文件属性可以尝试删除文件属性。使用以下命令
```bash
svn propdel --username <username> --password <password> svn:executable svn://<target>:3690/<repository>/<file>
```
### 24. SVN文件属性查看
如果目标主机的SVN服务器允许查看文件属性可以尝试查看文件属性。使用以下命令
```bash
svn propget --username <username> --password <password> svn:executable svn://<target>:3690/<repository>/<file>
```
### 25. SVN文件属性列出
如果目标主机的SVN服务器允许列出文件属性可以尝试列出文件属性。使用以下命令
```bash
svn proplist --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 26. SVN文件历史查看
如果目标主机的SVN服务器允许查看文件历史可以尝试查看文件历史。使用以下命令
```bash
svn log --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 27. SVN文件差异查看
如果目标主机的SVN服务器允许查看文件差异可以尝试查看文件差异。使用以下命令
```bash
svn diff --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 28. SVN文件合并
如果目标主机的SVN服务器允许文件合并可以尝试合并文件。使用以下命令
```bash
svn merge --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 29. SVN文件回滚
如果目标主机的SVN服务器允许文件回滚可以尝试回滚文件。使用以下命令
```bash
svn revert --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 30. SVN文件恢复
如果目标主机的SVN服务器允许文件恢复可以尝试恢复文件。使用以下命令
```bash
svn cleanup --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 31. SVN文件标签
如果目标主机的SVN服务器允许文件标签可以尝试标签文件。使用以下命令
```bash
svn copy --username <username> --password <password> svn://<target>:3690/<repository>/<file> svn://<target>:3690/<repository>/tags/<tag_name>
```
### 32. SVN文件分支
如果目标主机的SVN服务器允许文件分支可以尝试分支文件。使用以下命令
```bash
svn copy --username <username> --password <password> svn://<target>:3690/<repository>/<file> svn://<target>:3690/<repository>/branches/<branch_name>
```
### 33. SVN文件合并冲突
如果目标主机的SVN服务器存在文件合并冲突可以尝试解决冲突。使用以下命令
```bash
svn resolve --username <username> --password <password> --accept=<option> svn://<target>:3690/<repository>/<file>
```
### 34. SVN文件权限修改
如果目标主机的SVN服务器允许修改文件权限可以尝试修改文件权限。使用以下命令
```bash
svn propset --username <username> --password <password> svn:author "<new_author>" svn://<target>:3690/<repository>/<file>
```
### 35. SVN文件权限查看
如果目标主机的SVN服务器允许查看文件权限可以尝试查看文件权限。使用以下命令
```bash
svn propget --username <username> --password <password> svn:author svn://<target>:3690/<repository>/<file>
```
### 36. SVN文件权限删除
如果目标主机的SVN服务器允许删除文件权限可以尝试删除文件权限。使用以下命令
```bash
svn propdel --username <username> --password <password> svn:author svn://<target>:3690/<repository>/<file>
```
### 37. SVN文件权限列出
如果目标主机的SVN服务器允许列出文件权限可以尝试列出文件权限。使用以下命令
```bash
svn proplist --username <username> --password <password> svn://<target>:3690/<repository>/<file>
```
### 38. SVN文件权限修改历史
如果目标主机的SVN服务器允许修改文件权限历史可以尝试修改文件权限历史。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:author svn://<target>:3690/<repository>/<file>
```
### 39. SVN文件权限修改记录
如果目标主机的SVN服务器允许修改文件权限记录可以尝试修改文件权限记录。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:log svn://<target>:3690/<repository>/<file>
```
### 40. SVN文件权限修改时间
如果目标主机的SVN服务器允许修改文件权限时间可以尝试修改文件权限时间。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:date svn://<target>:3690/<repository>/<file>
```
### 41. SVN文件权限修改属性
如果目标主机的SVN服务器允许修改文件权限属性可以尝试修改文件权限属性。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:executable svn://<target>:3690/<repository>/<file>
```
### 42. SVN文件权限修改所有者
如果目标主机的SVN服务器允许修改文件权限所有者可以尝试修改文件权限所有者。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:owner svn://<target>:3690/<repository>/<file>
```
### 43. SVN文件权限修改组
如果目标主机的SVN服务器允许修改文件权限组可以尝试修改文件权限组。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:group svn://<target>:3690/<repository>/<file>
```
### 44. SVN文件权限修改模式
如果目标主机的SVN服务器允许修改文件权限模式可以尝试修改文件权限模式。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:mode svn://<target>:3690/<repository>/<file>
```
### 45. SVN文件权限修改类型
如果目标主机的SVN服务器允许修改文件权限类型可以尝试修改文件权限类型。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:mime-type svn://<target>:3690/<repository>/<file>
```
### 46. SVN文件权限修改大小
如果目标主机的SVN服务器允许修改文件权限大小可以尝试修改文件权限大小。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:size svn://<target>:3690/<repository>/<file>
```
### 47. SVN文件权限修改版本
如果目标主机的SVN服务器允许修改文件权限版本可以尝试修改文件权限版本。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:version svn://<target>:3690/<repository>/<file>
```
### 48. SVN文件权限修改标签
如果目标主机的SVN服务器允许修改文件权限标签可以尝试修改文件权限标签。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:keywords svn://<target>:3690/<repository>/<file>
```
### 49. SVN文件权限修改描述
如果目标主机的SVN服务器允许修改文件权限描述可以尝试修改文件权限描述。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:description svn://<target>:3690/<repository>/<file>
```
### 50. SVN文件权限修改URL
如果目标主机的SVN服务器允许修改文件权限URL可以尝试修改文件权限URL。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:url svn://<target>:3690/<repository>/<file>
```
### 51. SVN文件权限修改UUID
如果目标主机的SVN服务器允许修改文件权限UUID可以尝试修改文件权限UUID。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:uuid svn://<target>:3690/<repository>/<file>
```
### 52. SVN文件权限修改锁定
如果目标主机的SVN服务器允许修改文件权限锁定可以尝试修改文件权限锁定。使用以下命令
```bash
svn propedit --username <username> --password <password> svn:lock svn://<target
```bash
svn ls svn://10.10.10.203 #list
svn log svn://10.10.10.203 #Commit history
svn checkout svn://10.10.10.203 #Download the repository
svn up -r 2 #Go to revision 2 inside the checkout folder
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>