热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从hw打点到编写python版webshell提权

 摸到一个某信息管理平台开局一个登录框,那么尝试sql注入和弱口令爆破,从返回包中可以看出存在用户名枚举尝试注入测试发现后端存在检测,试了几十个常见的测试手机号还无法枚举到用户名后,遂放弃此路通过报错

 

摸到一个某信息管理平台

开局一个登录框,那么尝试sql注入和弱口令爆破,从返回包中可以看出存在用户名枚举

尝试注入测试发现后端存在检测,试了几十个常见的测试手机号还无法枚举到用户名后,遂放弃此路

通过报错页面的信息,和url格式,我当时判断的是这是一个 java mvc模型的站点,也给后面埋了个坑

于是开始翻看静态资源,熟悉的文件名格式,确认过眼神,这是vue的资源

根据以往的经验,VUE项目的关键代码存在于生成的以app开头的js文件中,所以通常遇到vue项目的目标,只需翻看其app开头的js文件,即可通过其内容大致了解到它的功能点。

于是打开那个app开头的js文件,我个人是非常喜欢将js代码粘贴到Pycharm里面,然后按 Ctrl + Alt + L 来格式化代码,再慢慢的审阅寻找线索。

经过仔细的查看js代码,发现一处疑似后台主页的跳转url

直接粘贴至浏览器打开,进到了一个后台页面

在熟悉它里面的功能点时,发现这只是一个框架页面,跟后端交互获取数据时仍需要验证用户身份

于是我灵机一动,猜测 url的company_id提交的可能就是用户凭证,所以直接在Pycharm使用字符串查找功能查找,没想到真的找到了一串md5值,看起来像是凭证,大喜之后将其补上到url后再访问

获得了一个用户身份的后台(看右边的成员和部门那里已经与前面不同)

但继续摸功能点后,发现只是个测试用户的身份

找到一处上传点,但是上传过去发现没有数据包响应

于是查看浏览器控制台信息,发现是被同源策略给限制了,那么这里通过功能点直接上传是行不通的,除非你通过他的域名访问,我这里反查了ip查不到对应的域名

这个时候可以手动构造文件上传表单, 然后浏览器打开上传

发包过去之后,是我天真了

报了一个404回来,开始怀疑人生当中,不过后面想了想,我刚才访问的是82端口,提交上传的接口是8082端口,难不成这里面有问题?本着死磕到底的精神,我颤抖的手敲了敲键盘,在burp的重放功能那将8082端口改为了82端口,再尝试发包

回包果真不一样了,貌似是被后端接受了,但是却没有返回上传成功的文件路径,我怀疑是没有上传成功

于是掏出了我的大*,不对,是我的祖传字典,用于测试上传文件对象的键名

我晕,原来上传的文件对象键名就是 file

将文件字典键名改为file, 文件名改为 .jsp后缀再上传,成功上传了

于是赶紧上传个冰蝎的webshell,发现被拦了,难不成存在waf ?

那么先上传个打印字符串的短小代码,发现上传成功了也顺利访问了可是却不解析???

我尼玛直接怀疑人生,这不是tomcat应用服务器吗,怎么可能不解析jsp

后面在测试其他文件名时,

发现解析php,这就离谱,tomcat + php还有这种搭配?麻烦搞懂的朋友告诉我

蚁剑链接之,发现是 apache权限,内核3.10

其实这个时候通常都是上代理打内网的了,不过后面遇到了更诡异的事,我上传了frp 客户端做代理时,发现连接到服务端后几十秒就断了,再查看文件时,权限已经变成了 000

看来是应该有某种防护软件?这是块硬骨头啊

然后开始打算提权,一般提权通用性比较高的就是内核提权,但是不太建议这种提权方式,因为溢出类的内核提权都有一定的偶然性,容易把服务器打宕机

查看了下进程,很惊喜的发现python 以root权限运行了一个程序,有着django开发经验的我一眼就看出了这就是django,

然后访问其8000端口,是一个 swagger 接口页面。

这时随便访问个不存在的路由

通过报错信息得知这真的是django,并且开起了debug功能,开启后修改源代码会自动重启应用

心中大喜直接奔去寻找这个django项目的目录,很巧的是项目目录里的所有文件都具有777的权限,所以能改写视图函数,我添加了红框中的代码,大致意思就是当访问 test/ 路由时,返回字符串 “Hello Django”

再去浏览器访问 test 路由,成功执行了我自定义的视图函数

于是这时候 python 版的webshell就出来了

去查看执行效果,ok提权成功

当我开始漫游时,问题又出现了,应该是流量特征太明显被 waf 拦了

然后我又把视图函数改了下,添加base64编码传输

完美

随便几行代码写了个方便点的利用工具

本次外网打点到此结束,如有打码不严请勿复现


推荐阅读
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • jquery popupDialog 使用 加载jsp页面办法
    php教程|PHP开发jqueryphp教程-PHP开发如下所示:软件市场源码,vsCode字体不变,ubuntu的所有版本,taotomcat,sqlite连接php,个人域名服 ... [详细]
  • python基础(二、pycharm安装、卸载)
    3.在Ubuntu中安装PyCharmPyCharm的官方网站地址是:https:www.jetbrains.compycharm注意:安装时不要使用root用户安装,否则后期使用 ... [详细]
  • 【自制小工具】代码生成器
    【自制小工具】代码生成器陆陆续续接触过好几款代码生成工具,发现确实好用,但都会有那么点不完善的地方,所以索性就自己做一个吧。界面非常简单,反正是自己用的,简单点用起来也方便上图:左 ... [详细]
  • kepserver中文手册,kepserver使用教程,kepserver设置
    下面介绍一下KepServer模拟器的使用,以下示例使用服务器随附的Simulator驱动程序来演示创建、配置和运行项目的过程。Simulator驱动程序是基于内存的驱动程序,能为 ... [详细]
  • 作业迁移
    背景:数据库服务器更换,1、数据库迁移(BACKUPRESTORE);2、数据库登录名用户迁移(注意孤立用户);3、作业迁移数据库迁移,备份数据库、拷贝备份文件到新服务器,还原数据 ... [详细]
  • 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)...
    转自:https:blog.csdn.neteson_15articledetails51387378上一节我们做完了首页UI界面,但是有个问题 ... [详细]
  • 目录结构如下:Nginx基础知识NginxHTTP服务器的特色及优点Nginx的主要企业功能Nginx作为web服务器的主要应用场景包括:Nginx的安装安装环境 ... [详细]
  • Eclipse中SpringBoot响应jsp的简单demo
    首先在Eclipse里新建一个maven工程,这里的打包类型和父包如果后续再去pom中添加也可以此时的工程路径是这样的接下来去到pom中添加相关的依赖,如果有报错mavenupda ... [详细]
  • 【实践】基于RTThread的智慧路灯案例实验分享
    之前分享了基于LiteOS的智慧农业案例实验分享基于LiteOS的智慧农业案例实验分享,阅读量挺不错,看样子大家都挺喜欢这种实验。那咱们就再来一个类似的实验:基于RT-Thread ... [详细]
  • 这篇文章主要简要记录了对于研发团队工作的质量 ... [详细]
  • 这一篇主要总结一下jQuery这个js在引入的时候做的一些初始化工作第一句window.undefinedwindow.undefined;是为了兼容低版本的IE而写的因为在低版本 ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • vscode里的html标签导航的一系列问题
    哈喽,我今天带来的经验是,vscode在18年10月更新后的1.29以后,编辑html文档时,会发现最上面有个类似于HTML标签导航的玩意儿,可能部分同学和我一样不习惯用它们,现在 ... [详细]
  • 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对 ... [详细]
author-avatar
邓世璇_664_425
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有