随笔
[!tip]
“人类,永远是机器最脆弱的部分。
——Anemone”
项目工具
onile:
https://www.shodan.io/
https://dnsdumpster.com/
用 Shodan、DNSDumpster 进行公开资料分析 ,使用 Nmap 探测 5000 端口服务(当然远不止这些,还有很多。)
过程
这是一个渗透思路整理,记录了如何对一些漏洞风险较高的网站进行渗透。本次我我们以一个内部提供的网站为例子。在不依靠源码的情况下进行一次渗透。
http://172.0.0.1:5000/static/login.html 这是我们本次的目标,
在访问目标,我们可以看见到一个简单的登录界面(为避免某些原因,图片均网络收索)
![[Pasted image 20260404014231.png]]
在这个页面中我们随便填入一些内容,观察返回:
![[Pasted image 20260404014453.png]]
我们可以看到,输出了以下信息:
Request Call Stack(请求调用堆栈)
一:
(anonymous) @ login.html:254- :
login.html的第 254 行运行了某函数。我们可以点击跳转到细则进行观察:
- :
1 | - fetch(`${SERVER_URL}/login`, { |
可以看到,目标使用了浏览器原生的 fetch API。
同时 headers 指定了 application/json,并通过 JSON.stringify 转换对象。这说明后端(Flask)很可能使用了 request.get_json() 来解析数据。
虽然前端通过 JSON.stringify 封装数据 ,但这并不意味着 SQL 注入失效。在后端解析 JSON 后,可以直接将变量拼接进 SQL 查询语句中(例如使用 f-string),注入风险依然存在。本次实验中,控制台泄露的 COALESCE 等函数正是后端直接执行原始 SQL 的证据。”
**二:
i.trigger @ mui.min.js:6- 框架介入:
mui.min.js表面这个网站使用的 UI 框架是mui。当点击按钮时,mui框架捕获了你的点击事件(Tap),并经过一系列内部逻辑处理(具体是什么,我们不确定。这是后端的黑箱。)
- 框架介入:
三:
z @ mui.min.js:6- 发出请求: 框架完成了最后的封装,正式命令浏览器把数据发往服务器。
根据这个信息,我们可以放弃使用sql语句,或是绝对逻辑,知道对方是json数据,并使用mui。
之后我们利用关键字寻找目录文件
http://172.0.0.1:5000/xxx/xxx.xxx
运气好我们可以直接通过我们自己的提示词找到自己想要的东西,之后就可以退出了。如果你运气不好,一个都没有找到。或者是无法访问。那么就需要越权了。
身份认证绕过
任然是观察前端代码,寻找其中的漏洞。多看script。其中可以发现许多有趣的东西。
在 Console 注入代码修改 localStorage,利用前端逻辑漏洞实现越权
是的,很简单。
不想展开。
