[CISCN] BadProgrammer题解
[CISCN] BadProgrammer

页面很长,有很多的按钮,但是点了之后都没反应
查看源码、扫描
打开到具体目录
一个个目录点开看,在static/下找到了一个flag.ejs文件
下载,打开
可是两个目录下的文件夹中都没有flag.txt,得想办法找到读取出来
路由文件app.js 中提到了 flag.ejs
百度一下,发现是一个中间件

搜索这个中间件的漏洞,存在着CVE漏洞
CVE-2020-7699漏洞分析 - FreeBuf网络安全行业门户
而且和题目中的版本一致,大概就是这个中间件的漏洞
参照CVE漏洞的payload
通过req.body返回的是
我们将上面的username改为
123的值改为:
所以本题的payload修改为
同时也需要构造一个POST请求
在原来的基础上把GET 请求换成了POST
后面的就是抓包的信息,原封不动地cv过来
再加上关键信息
这里的内容不能删、加空行,试了很多次,有时候随便删、加空行后就执行不了
还有这里的boundary是在使用post上传文件时,不仅需要指定mutipart/form-data来进行编码,还需要在Content-Type中定义boundary作为表单参数的分隔符
进入目录得到flag
--------------------------------------------------------------------------------官方wp---------------------------------------------------------------------------
step1 nginx配置错误导致源码泄露
观察源码发现静态文件存放在/static/
目录下 :
观察请求response header发现是nginx服务器加express框架:
利用nginx配置错误,可以列目录:
此时可以得到app.js源码:
step2 express-fileupload原型链污染漏洞
查看package.json文件,发现引用express-fileupload版本为1.1.7-alpha.4,此版本存在CVE-2020-7699,原型链污染漏洞。
step3 配合ejs模板引擎进行RCE
通过污染ejs中outputFunctionName变量,实现RCE:
step4 拷贝flag
flag在/flag.txt
,需要通过命令执行将其拷贝到可访问到的位置。
观察package.json中,可知服务路径为/app
所以我们只需通过RCE执行
再访问http://IP:PORT/static/js/flag.txt
即可得到flag。
__EOF__

本文链接:https://www.cnblogs.com/bzbzzbc/p/17266453.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)