Hard_APT_jeesite
题目很明显,就是个jeesite1.2.7,从github可以拿到相应源码,因为题目描述中重点说了需要shiro的配置文件,所以我们主要关注源码中文件读取的部分。
方法1
可以首先查看web.xml的路由
主要关注到这个路由,跟进方法查看
是一个很明显的任意文件读
会截取截取/userfiles/后面的字符读文件,但是由于../
会被tomcat认为是穿越所以直接穿越读取肯定不成功,但我们可以通过userfiles;/能访问到接口,再使用/userfiles;/userfiles/../../就可以读到我们想要的文件
然后读配置文件就可以拿到邮箱了
方法2
审计由于jeesite有前台,我们也可以从前台入手
从src/main/java/com/thinkgem/jeesite/modules/cms/web/front/FrontController.java
我们可以看到在comment的路由下的
theme
参数可控,而此参数可以与web路径拼接返回,所以此处我们也可以通过利用,
我们可以通过comment/?theme=../../../的方式返回上层
但是会有一个问题,此处会拼接frontcomment的路径需要绕
其实也很简单,我们在传入路径后加入?
这样web服务就会把后面的路由当做参数去请求,所以绕过了拼接
最终也可以读到相应东西
踩坑
由于本地搭不起来这个环境,把源码的关键部分抄了一下本地实现了
发现可以成功,这时候出现了问题,发现远程一直没有成功
(似乎是应用只允许读/web-inf的东西,而我一直文件读/etc/passwd,或者是因为拼接问题,tcl)
java目录穿越对于穿越层数有着严格的限制,不能多不能少,若../../../后为根,如果输入../../../../则会报错,且本题任意文件读一直在测试读passwd,没有测试java相关文件,导致以为找到的接口有误。。
EasyWeb
前面先读文件
告诉我们扫端口
Hint:
Try to scan 35000-40000 ^_^.
All tables are empty except for the table where the username and password are located
Table: employee
36842/tcp
访问 sqlmap
admin 99f609527226e076d668668582ac4420
登录,然后扫目录file 文件上传
内网
访问发现只有8006可以访问,有个3.jsp
发现目录的3.jsp为jsp马
flag
flag{V3ry_v3rY_E3si_a_w3B_Ch@1l3ng3}
Hard_Penetration
Shiro Rce,github随便找个工具,写个冰蝎内存马
挂到本地扫下 发现开了8005端口 访问是Baocms
github找个源码审计下
方法1
有display路由可以包含文件
http://...../App/Common/display?templateFile=../../../../../../../../../../../../../../../../../../tmp/
发现会拼接.html。那我们写个文件叫1.html.html
Rce 直接拿flag就行了
方法2
我们发现这里get的code会与
if(include($class_dir . '/BCG' . $_GET['code'] . '.barcode.php'))
完成代码拼接,所以在tmp写下同名文件,目录穿越到tmp即可包含恶意php代码,完成rce
[强网先锋]寻宝
KEY1:trips懒得说了
ppp[number1]=9e9 &ppp[number2]=9e9&ppp[number3]=0~!OT&ppp[number4]=00000e9&ppp[number5]=NULL
KEY2:搜key2。某个docx里有key2