一次代码审计实战案例【思路流程】_代码审计案例-程序员宅基地

技术标签: apache  服务器  php  

前序

手机上发来服务器被入侵的消息,这令人感到一脸懵,这个服务器也不是啥重要东西,上面啥也没有怎么还会被搞?被人搞了那也不能示弱了,

排查后门

开机进行分析。一登陆进服务器就想起来了之前做测试的时候直接在服务器上搭了个文件上传的靶场,就很难受了,这就是自作自受啊~~。没办法,只好先找马吧。首先就在upload的文件夹下发现了木马后门,然后查看隐藏文件时还发现了一个“不死马”。

又仔细看了下shell.php,这是个PHP的冰蝎马,这要进行流量分析肯定也溯源不回去啊,操作流量都是加密的。再看那个.config.php妥妥的“不死马”,删了还会再生。接下来肯定也溯源不回去啊,操作流量都是加密的。再看那个.config.php妥妥的“不死马”,删了还会再生。

  • 1.创建一个和不死马生成的马一样名字的目录。

  • 2.编写一个使用ignore_user_abort(true)函数的脚本,一直竞争写入删除不死马文件,其中usleep()的时间必须要小于不死马的usleep()时间才会有效果。

  • 3.在具有高权限时,重启Apache直接删除即可。

  • 4.如果没有权限重启就kill掉www-data用户的所有子进程。

虽然有权限,但是还是觉得单独清理www-data下的子进程能好一些,执行命令:

ps aux | grep www-data | awk '{print $2}' | xargs kill -9 

然后再rm -f .config.php就清除了“不死马”。

反击溯源

清除了后门后,又好一顿检查应该是没有问题了。就想着能不能溯源找到这个黑客呢,首先看了下history历史记录,又看了下Apache日志记录。他竟然给删了。好吧,但是也只能说这个黑客有点背,这本就是平时做测试用的服务器,之前用这个服务器做测试的时候给好几个文件加过一个流量监控的WAF,打开WAF生成的日志记录,还真的抓取到了它攻击的记录,捕获到了它的IP。

拿着这个IP放到微步在线进行一番查询,很久之前就被人标记为是个傀儡机了,看来是个老油条了。

攻克傀儡机

【→所有资源关注我,可点击查看获取←】> 1、网络安全学习路线> 2、电子书籍(白帽子)> 3、安全大厂内部视频> 4、100份src文档> 5、常见安全面试题> 6、ctf大赛经典题目解析> 7、全套工具包> 8、应急响应笔记

知道目标机器后拿出nmap进行一波扫描,发现目标的3306端口竟然暴露出来了,而80端口访问页面也什么东西没有。

然而第一时间并没有考虑SSH弱密码和Mysql弱密码的事,因为基本很少碰到过。同时根据微步查询的结果判断,所以第一时间就猜想这个网站上一定“万马奔腾”,于是就祭出了改装扫描工具对其进行探测,结果还真存在马。这里使用的是改装过的dirsearch,在它的配置字典里加上了一些常见后门命名。

从扫描结果看除了这两个存在的马之外还有个2.php,访问后页面都是空白,那八成确定就是某个黑客遗留的小马后门了,于是自己写了个小脚本对这几个后门依次进行探测,首先上网找了个后门密码字典,然后载入这个黑客之前种的马的密码,最终利用脚本如下:

Import requests
url = "http://ip/bgdoor.php"#后门地址
dict = open('后门密码字典.txt','r')
dict_list = dict.readlines()
print("[+] 请选择木马类型 1.GET 2.POST")
type = input("")
if int(type)==1:
for i in dict_list:
data = {i.strip():'phpinfo();'}
res = requests.get(url,data)
if '$_SERVER' in res.text:
print(i.strip())
if int(type)==2:
for i in dict_list:
data = {i.strip():'phpinfo();'}
res = requests.post(url,data)
if '$_SERVER' in res.text:
print(i.strip()) 

和种的马密码是相同的,那接下来就骑着他的马打他吧

社工艺术黑手画像

蹭上马后,进去就是一番翻箱倒柜,因为前面的端口探测,知道存在MySQL的服务,当时的想法就是找到MySQL的登录密码。所以第一时间进去后就开始寻找MySQL的目录位置去寻找user.MYD文件,最终找到该文件的路径为:D:\MySQL\data\mysql\user.MYD。而找这个文件是因为其中保存着用户数据库登录的用户名和密码哈希值。打开后看到用户名就是root。

而对于该文件的密码哈希的获取我这样来解释,首先存在*这就代表该密码的哈希长度一定是40位,而该文件开头部分存在四段不同的密码哈希,将每一段单独提出,找到其中两段是26位和14位,拼接到一起刚好40位,即为MySQL登录的密码哈希值。得到密码哈希值后送到cmd5网站就是一波破解。

破解后得到了密码结果,这个密码应该也算得上是个弱口令了,就是不太常用,反正cmd5库里存在,这里就不再吐槽了。然后用得到用户名和密码就轻车熟路的进入了数据库。

进去后看了看这个数据库,里面的内容较少,看样子应该也不常用。不过我还是在一番仔细寻找后找到点东西,密码就不打码了,md5解密后就是“123456”,应该是注册人当时随便注册的吧,但是前面的user和mail得打码了,这俩信息有点意思。如下图所示。

拿到user值,看样子注册的时候应该是他的网络常用ID,但是不确定这个ID是这台机器原本主人留下的,还是这个黑客留下的。于是就谷歌了一下这个ID,信息不是很多,但是存在一个作废的博客。再看下这个QQ,尝试加了下好友,发现这明显就是一个小号,空间内容就更新过一两次还多是广告。

再看看这小号的第一条说说,什么QQ飞车荣誉殿堂之类的,好像还可以帮忙刷Q币,但看样子也都是好久之前的信息了。这么一看就感觉好像是那个黑服务器的人,多少有点野路子。然后本着继续探索的心理,我加了他一下QQ,结果好几天没个回复,估计这号他都要作废了吧。没办法回到那个废弃的博客上,再研究研究吧。

这个博客是常见的WordPress,那么常规操作:网址后加上/wp-admin找后台,访问存在这个路径后台,地址没有修改,然后WordPress的默认用户名是admin,那么接下来就是密码字典生成了,因为之前MySQL数据库也弄到一个密码,再把他的常用ID用社工库查了一下得到了一个旧密码,但是不确定是不是他的。最后结合它的ID历史密码和Mysql登录密码,利用社工密码字典生成工具生成了一个组合密码字典,掏出BurpSuite就是一把梭。

看到结果心里笑出了声,登录进去就看到了邮箱地址确认提示,这个邮箱还是个QQ邮箱,这下应该就是黑客的大号了。

然后又尝试加了下好友,至少确定这是个常用号,一个SVIP的大佬。因为也没有什么验证措施,所以第二天就同意了。

接下来就没啥可说的了,空间动态轻松的就暴露了他的大量信息,定位特殊的建筑物位置得到曾经去过的大概的位置,还翻到半年前曾在空间发通知换了手机号,再看空间留言,大家都叫他老徐。

整理一下目前得到的信息:

手机号码、大概位置、出生年月日、姓氏。

利用得到的手机号去支付宝进行转账,然后对姓名进行校验,看看能不能得到名字全称。

校验时发现名字只有两个字,姓氏前面我们已经知道了,校验时提示出的是名字,让填姓氏,我们填入"徐"姓,校验通过,得到完整的姓名。

接着拿着手机号去搜索了一番,发现存在一个微博账号,在微博账号的资料栏里又得到了一个生日,猜想微博这个才是正确的,qq资料卡的为假的。

准备猜测一波SFZ,以下是当时的猜解过程:因为前面通过查看黑客的生活照中的建筑物确定了黑客的基本地区,我们利用XX省XX县XX镇的SFZ地区号来构造一下SFZ前面的部分,通过查询发现地区号码为51****,出生年月日就用微博资料里写的19911023,只有后四位不确定,因为黑客是男性,所以可以确定SFZ第17位是奇数。第17位范围是:1-3-5-7-9 这4个数字,而最后一位的范围是:0-1-2-3-4-5-6-7-8-9-10这11个数字,第15和第16位则是0~9这10个数字。于是准备利用阿里的SFZ实名认证api进行枚举验证。

最终写了个脚本批量爆破,成功匹配到真实的SFZ。

import urllib,urllib2,sysimport sslhost = 'https://idcard.market.alicloudapi.com'path = '/lianzhuo/idcard'method = 'GET'appcode = '2e1ac42e**************4f8258e438'querys = 'cardno=5*****19911023'name = '&name=*****'bodys = {}for i in range(5000):url = host + path + '?' + querys + str(i) + namerequest = urllib2.Request(url)request.add_header('Authorization', 'APPCODE ' + appcode)ctx = ssl.create_default_context()ctx.check_hostname = Falsectx.verify_mode = ssl.CERT_NONEresponse = urllib2.urlopen(request, context=ctx)content = response.read()if (content):print(content) 

到最后可算是锁定到这个人了,收工前再梳理一下得到的信息,分析黑客人物画像:

姓名:徐*性别:男年龄:29家庭地址:**省**市**县**镇**手机号码:1**********出生年月:19911023SFZ:5*****19911023**** 

总结

1、一些敏感业务不要轻易放到公网服务器上,放上一定要做好安全。

2、在溯源分析时,遇到傀儡机可以考虑下蹭马利用的方式。

3、数据库密码哈希值获取,搜寻敏感信息。

4、社工查询:谷歌搜索、QQ资料、细心关联分析。

网络安全入门学习路线

其实入门网络安全要学的东西不算多,也就是网络基础+操作系统+中间件+数据库,四个流程下来就差不多了。

1.网络安全法和了解电脑基础

其中包括操作系统Windows基础和Linux基础,标记语言HTML基础和代码JS基础,以及网络基础、数据库基础和虚拟机使用等...

别被这些看上去很多的东西给吓到了,其实都是很简单的基础知识,同学们看完基本上都能掌握。计算机专业的同学都应该接触了解过,这部分可以直接略过。没学过的同学也不要慌,可以去B站搜索相关视频,你搜关键词网络安全工程师会出现很多相关的视频教程,我粗略的看了一下,排名第一的视频就讲的很详细。 当然你也可以看下面这个视频教程仅展示部分截图 学到http和https抓包后能读懂它在说什么就行。

2.网络基础和编程语言

3.入手Web安全

web是对外开放的,自然成了的重点关照对象,有事没事就来入侵一波,你说不管能行吗! 想学好Web安全,咱首先得先弄清web是怎么搭建的,知道它的构造才能精准打击。所以web前端和web后端的知识多少要了解点,然后再学点python,起码得看懂部分代码吧。

最后网站开发知识多少也要了解点,不过别紧张,只是学习基础知识。

等你用几周的时间学完这些,基本上算是具备了入门合格渗透工程师的资格,记得上述的重点要重点关注哦! 再就是,要正式进入web安全领域,得学会web渗透,OWASP TOP 10等常见Web漏洞原理与利用方式需要掌握,像SQL注入/XSS跨站脚本攻击/Webshell木马编写/命令执行等。

这个过程并不枯燥,一边打怪刷级一边成长岂不美哉,每个攻击手段都能让你玩得不亦乐乎,而且总有更猥琐的方法等着你去实践。

学完web渗透还不算完,还得掌握相关系统层面漏洞,像ms17-010永恒之蓝等各种微软ms漏洞,所以要学习后渗透。可能到这里大家已经不知所云了,不过不要紧,等你学会了web渗透再来看会发现很简单。

其实学会了这几步,你就正式从新手小白晋升为入门学员了,真的不算难,你上你也行。

4.安全体系

不过我们这个水平也就算个渗透测试工程师,也就只能做个基础的安全服务,而这个领域还有很多业务,像攻防演练、等保测评、风险评估等,我们的能力根本不够看。

所以想要成为一名合格的网络工程师,想要拿到安全公司的offer,还得再掌握更多的网络安全知识,能力再更上一层楼才行。即便以后进入企业,也需要学习很多新知识,不充实自己的技能就会被淘汰。

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

尾言

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,最后联合CSDN整理了一套【282G】网络安全从入门到精通资料包,需要的小伙伴可以点击链接领取哦!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_53058639/article/details/129041345

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文