渗透测试

任意文件删除+重装漏洞导致getshell

March 22, 2020
渗透测试
渗透实战

任意文件删除+重装漏洞导致getshell 踩点 网站长这样 这种网站一般都是生成的模板,生成一个单页。所以我们得找到后台来getshell。通过js文件得知这个网站用的是WFPHP,百度这个cms得知后台是/wforder/wfadmin/,并得到默认账号密码 admin 123456 开始渗透 进入后台之后,测了一些东西,没发现啥漏洞。同事通过日别的站把这套源码脱下来了,但是核心代码都被加密了。 浏览了一些结构,/wfinstall/是系统安装文件夹,不过因为有lock锁,具体位置在 /wfdata/wfinstall.lock,所以我们得找到一个任意文件删除漏洞,才能尝试getshell 在后台修改产品这里,找到个任意文件删除漏洞 可以看到,这里的路径是可控的,把路径改为lock文件地址进行删除 之后访问wfinstall进行重装。首先问好兄弟借了台支持外连的mysql服务器,创建了个数据库为 '.@eval($_POST[1]).' 之后填入我们外链muysql的信息 重装成功之后,蚁剑连接 http://test.com/wfinstall/index.php getshell ![avatar](https://sqlmap.wiki/images/325-11.png)

记一次曲折但没必要的渗透

March 22, 2020
渗透测试
渗透实战

一次曲折但没意义的渗透 前言 曲折是真滴曲折,没意义也是真滴没意义 0x01 基本踩点 网站长这样 whois啥的就先不收集了,诈骗人员一般用的都是假信息先dirsearch扫波目录 ok,后台找到了 0x02 开始渗透 浏览下大致功能,都需要登录才能操作,这里我们注册下。 发现需要推荐码才能注册,一般这种网站都有一个默认推荐码,又以0000居多,这里0000成功注册浏览了下功能,在邮箱这发现个SQL注入 点击这个信息,显示个手机号的弹窗 乱输入一个字符进去,手机号消失了。怀疑存在注入,当我想进一步测试发现被拦截了、 这时候浮躁的我就不想测了,绕过就麻烦,等下不存在注入咋办嘛?0x03 社工管理员 然后就继续看功能点,没发现啥有价值的东西。这时候想一下,这种诈骗网站肯定不是自己开发的。1是开发成本高,二是骗子就图个省事。所以个人认为大部分程序都是cms开发。这时候我的思路:通过网站特征找出演示站>拿下演示站源码>审计漏洞>getshell目标站这时候浏览公司动态发现具有非常诱惑性的标题,因为随便就能百度出来了,我这里就打重码了。 ![avatar] https://gitee.com/Y4er/static/raw/master/2020/03/21/bi6arHc0f6qN7rtZ.png)通过百度搜索得到演示站 通过联系方式加上站长qq,这站长刚开始还挺谨慎 然后表明我想搭建这个网站,康康后台功能,得知这网站是交付给客户的,那客户联系方式还没来得及改~ 因为这个站不是演示站,不能给账号,盲猜这老哥是个搭站的,cms的开发者不是他 这时候好好讲道理是讲不下去了,只能不理他,让他着急一下。 这时候这哥们沉不住气了,发了一大堆网站后台截图给我,通过一张截图,找到了一个qq邮箱,这哥们也是粗心,都不把联系方式给去了。。 通过qq,加上真正的cms开发者,并给了我演示站的后台账号密码 0x04 拿下目标 登录后台之后,找到一处kindeditor任意文件上传,当时把我高兴的,以为不用脱裤审源码getshell了。 利用url构造上传表单指向目标站,事实是残酷的,必须有cookie也就是登录状态才能上传 还是老老实实拖源码下来审计吧。这时候想到刚开始测的疑似注入点,直接定位到那个文件。 跟踪到&MSMSMSMS&,发现存在一层过滤 除了关键字过滤,没有别的过滤,所以说明只要绕过了这层关键字过滤,就能造成一个SQL注入。经过公司大佬的提示,access也有换行语句,最后利用%0a进行绕过。 access注入的过程就不提了,反正在语句间加%0a即可绕过。因为有源码,这里直接定位到amdin表,注入得到管理员账号和32位md5加密的密码。当我准备去解密的时候 世事就是这么无情,当你满怀希望的时候,直接给你浇盆冷水。这个时候思路断了,因为这个表下只有一行数据。然后抽了支烟想了一下,既然解密不出,我们是不是可以迫使管理员去改密码,当md5值一改变,是不是就还有机会?。所以我利用bp又跑了几次注入,然后用dirsearch扫描网站,尽量把网站动静弄大一些。其中的辛酸就不提了,包括被管理员删账号等等。然后我把手中的活停了,让管理员误认为我放弃抵抗了。最后让团队小伙伴帮我注出密码最后登录后台上传shell一气呵成,打包脱裤一条龙 总结 可以看到我的标题,没必要就在于我测sql注入的时候,应该坚持一下的,坚持一下可能就没后面的事了。还是太菜,溜了溜了

记一次渗透抢单站

渗透测试
渗透实战

记一次渗透抢单站 0x00 前言 其中的失败过程就不提了,突破点在于jwt,不了解jwt的可以看本站另一篇文章 jwt的几种攻击手法 0x01 信息收集 网站长这样,域名为xxx.cc 类型是抢单站,就是要你交钱,然后分配淘宝、京东等任务单给你做。其实就是诈骗站了 通过子域名工具收集到以下几个子域名 dlds.xxx.cc api.xxx.cc dld.xxx.cc 发现其他同类型的站很多请求到了api.xxx.cc,目标站也是请求了另一个api,但是我们主要是拿下目标站,所以不作考虑 而dld.xxx.cc与主域功能一样,只是换了个域名而已 通过dlds.xxx.cc得到后台地址为:dlds.xxx.cc/index.php/Public/login.html 通过在主域上简单浏览发现,网站需要邀请码注册,且短信接口功能不能正常使用,通过试玩账号功能简单测试了一下,没发现啥漏洞,因为目标站是通过api传输数据,其实前台就是h5而已,所以把目标转移到子域:dlds.xxx.cc上面 0x02 tp日志泄露拿到前台账号密码 dlds.xxx.cc,通过随便输入一个不存在的路径,得知为thinkphp框架,且版本为3.2.3的。 测试tp框架,如果为5.x版本,我一般会尝试下rce,而对于这种不存在rce的版本,我一般会尝试访问下tp的日志目录,看存不存在日志泄露。 tp3的日志路径默认为:Application/Runtime/Logs,通过访问,发现403,说明存在,而我们要想看到管理员的操作,一般要进入到Admin目录下。 tp3的日志命名格式为: 年_月_日.log。所以最后路径为:dlds.xxx.cc/Application/Runtime/Logs/Admin/20_04_26.log 成功下载到日志文件,但是下载一天的日志文件,可能看不出啥东西来,这时候需要批量下载日志文件,我这里用到了工具来下载 工具地址,批量下载之后,全局搜索password,并未发现关键字,说明并未记录站长的登录sql语句。这时候只能退其次而行之,去拿一个前台的账号密码,因为试玩账号很多功能是不能用的,比如修改姓名,充值等。通过访问dlds.xxx.cc/Application/Runtime/Logs/Home/20_04_26.log,得到前台账号密码 0x03 通过jwt爆破工具破解key 登录之后,发现网站是用jwt来作为标识的。 空口令等测试,发现行不通,最后只能爆破来进行测试了(后面发现不需要爆破就能得到key,后文会提及) 这里我使用c语言编写的爆破工具进行爆破工具地址 最后爆破成功,key为EMERG 0x04 通过key构造SQL注入 在jwt中的uid字段,构造相应的payload,然后利用key加密(https://jwt.io)得到新的jwt,然后抓包,更换资料处,填入jwt,造成sql注入 0x05 后台任意文件上传getshell 通过注入出来的账号密码,登录到后台,在网站LOGO上传处,任意文件上传getshell 后记 其实突破点就是这个key了,人品好,爆破到了。拿下shell之后,复盘发现,在jwt随便输入一个字符,使其报错,会把key爆出来。 个人猜测是tp输出报错信息的原因,以后再遇到这种tp有jwt站的时候,可以不急着爆破,试试报错,可能会有收获 最后看了一下这骗子流水,哎,心塞