本篇文章共 3000字+1视频,完全阅读全篇约 65 分钟 州弟学安全,只学有用的知识
前言
2024年底,国产AI模型Deepseek的发布将AI发展推向新高度!其两大核心优势:
-
*强大的推理能力* 🧠 - 内置智能思维链,无需复杂Prompt即可理解用户意图 -
*更懂中文场景* 🇨🇳 - 基于海量中文数据训练,输出更符合国人思维 -
💡 个人见解:AI技术革命势不可挡,就像十年前计算机普及浪潮,唯有主动拥抱变化才能立于潮头!
好的,这是我对目前的一个看法,然后回归正题,这次代码审计靶场的环境,我做了这些事
1. 我将去年7月份审计出漏洞的一套源码拿出来2. 规划一个大概的思路3. 找到Deepseek构造大概的prompt
这里有的师傅可能会有疑问了,你不是都说Deepseek不用定义提示词了吗,为什么还需要构造prompt呢?
其一:如果你的同事是Deepseek,你告诉它,你今天把这个靶场给我搭建完 和 我这里有一套XX源代码,你最好用Ubuntu的镜像以docker的容器给我搭建出来,并且可以正常运行,试问哪个会更清晰一些呢?它是智能了,但是假设是个人给你对话,它也理解不了前者到底要怎么做让你满意
其二:谈谈我这里构造的提示词吧
帅气的州弟: 我这里目前有一套代码审计的源码,名叫:heybbs.zip 然后我想用docker进行搭建,你需要做一个lamp环境,我预想用Ubuntu镜像进行搭建 然后我考虑了一些安全因素,比如有人会获取权限后逃逸/挖矿等风险,你在写个定时重置容器的脚本 这些流程都给我写一个dockerfile以及docker-compose文件 最后你再给我想一想,我有没有其它没有想到的可能存在的问题
后面Deepseek会进行相应的推理,没错的,这个靶场从搭建到测试以及做安全策略,一共就一下午,如果不涉及到一些调试或适配等情况,可能一两个小时就完事了
好的,以上是我靶场搭建的流程,那么进入正题,接下来是对靶场代码审计攻击的流程
* 本次环境不针对任何站点、请勿对外非法攻击,仅供学习参考
* 如您认为本文章对您学习有帮助,烦请一键三连
代码审计环节
录播视频(全程60分钟/含闲聊)
图文步骤
信息收集
首先我们访问站点地址为:
http://111.119.241.115:8080/
# 注意:如您在学习过程中突然卡住,请不要担心
# 这是因为容器会定时重置,主要是为了防止环境破坏影响学习
# 一般等待2-3秒刷新即可
访问站点后并没有代码,有时候可能运气好的话黑盒也能挖到漏洞,但是在信息收集阶段,收集源码也是必要的一部分,如下
主动信息收集 通过网络信息收集:GitHUB、Gitee、Google、公众号、云盘泄露等被动信息收集 通过扫描的方式:目录枚举、扫描备份文件等方式社工信息收集 通过社工到供应链或客服,索要到源代码等
主动信息收集
这里可以先基于网络进行信息收集,比如在搜索引擎使用:源码+关键词的方式进行搜索
这里通过google搜索到的信息大部分都不符合这个版本或者是收费的
不慌,接着跟着GitHub和gitee进行搜集
此处在gitee搜索到2.0版本的源码,但是我们是2.1版本,当然可以配合审计的,至于是否漏洞准确还是需要验证了,就是碰运气的事了
被动信息收集
关于信息泄露,我们可以fuzz一下网站,主要扫一下备份泄露文件,可能会有意外收获,对于实战不言而喻
经过扫描是有一个名为backup.zip的文件的,将它下载下来后,打开是备份源代码
现在外面有许多成熟用AI写的代码审计工具了,不过这里还是选择使用Seay源代码审计工具,不要问我为什么,州哥的心思你猜不透
导入主目录后,点击自动审计,然后点击开始,系统会根据敏感函数和语句自动审计是否存在漏洞,值得注意的是,软件也有误报的时候,所以这个时候就需要人为去判断了
漏洞挖掘
后台SQL注入
在我们打SRC的时候,很多时候会听到过后台RCE和前台RCE这些名词,同漏洞类型,前台会比后台定级高,因为前台漏洞无需认证即可利用,而后台漏洞则需要登录状态才可以利用
这里先审计后台SQL注入,其中在直播时,发现当注入点不同时,最后产生的效果也不一样
以一个名为/php/tupiansc.php文件为例,点进去后开始审计
unlink在php中是删除文件的函数,在此处,审计工具认为这里可能出现任意文件删除的漏洞,但是经过审计,我们可以发现,$tupian变量是路径是固定了的,所以无法进行利用任意文件删除的
接着往上看,第9行定义了一个变量id,以GET的传参方式,然后第11行定义一个sql语句,这里是存在sql注入的,往下判断逻辑,sql语句赋值给变量sc去控制upload目录下的图片进行删除,接着赋值给$tupian ,然后往下就是删除操作了,所以在这里,我们并没有看到sql注入的任何防范措施,直接构造payload即可
http://111.119.241.115:8080/php/tupiansc.php?id=* #SQLmap通配符
sqlmap -u "http://111.119.241.115:8080/php/tupiansc.php?id=*" --batch --dbs
这里利用失败了,细看原因,是因为后台SQL注入,往上审计
代码的一开始会鉴权session,查看其中有没有userid,如果没有则跳转至登录页面,所以我们使用sqlmap的时候,需要携带cookie值,可以使用全部数据包,使用sqlmap -r file参数,也可以使用 sqlmap -u xx --cookie "cookie_values" 参数
这里选择使用--cookie参数,注入特征:当sqlmap出现很有规律的特征时,大概率成功了
sqlmap -u "http://111.119.241.115:8080/php/tupiansc.php?id=1" --cookie="这里填cookie" --batch --dbs
注入成功,发现注入点和注入方式,可以进行后续利用,本次目标是服务器/flag文件,而不是数据库数据,那么就不继续注入数据了
服务器数据
这里开始获取/flag,意向拿到shell的,比如sqlmap os-shell,不过利用失败
原因在直播中提到,后面会拿另一个注入点对比,我们可以看到是404响应的,那么还有什么其它方法可以继续获取服务器数据吗?
有的兄弟,有的,在sqlmap中,有个参数叫做:--file-read
sqlmap -u "http://111.119.241.115:8080/php/tupiansc.php?id=1" --cookie="这里cookie" --batch --file-read=/flag
只要在mysql配置中,对读写功能的参数没做限制,就可以完成任意文件读取,速度可以用线程进行控制
有师傅问?帅哥州,还有没有其它方法?
有的,兄弟,有的,在sqlmap中,还有一个参数叫做:--sql-shell
sqlmap -u "http://111.119.241.115:8080/php/tupiansc.php?id=1" --cookie="cookie值" --batch --sql-shell
相当于我们拿到了sql终端,可以在里面执行sql语句,那么我们执行一下,来读取/flag
select load_file('/flag')
当然,读取passwd也是手拿把恰的
前台SQL注入
刚才提到了后台SQL注入,接下来学学前台SQL注入和后台注入有哪些不同
通过工具找到了一个名为user.php也存在sql注入,GET传参id的方式,查询此人的资料信息,但是id随便写不行,会显示404
所以此时有两种方法:1. 注册用户,查看自己的id,然后注入 2. 直接sqlmap id=*的方式无脑注入
我更偏向于后者,因为偶是喜欢粗暴的小坏蛋,但是我试了一下,通配符不行,还是做个好人吧
sqlmap -u "http://111.119.241.115:8080/user.php?id=177" --batch --dbs在选择路径时可填写:/var/www/html/upload目录
我们可以注意到,与后台sql注入不同的是,这个注入多了一个注入方式:联合查询,这个时候,我们再试一下os-shell
值得注意的是,前者后台注入只有404,而后者则多了个403,我们可以在/upload目录下看看是否存在shell文件
但是当点进去以后,发现是没有权限的
这个时候我选择上机验证这个文件是什么状态
通过上机验证到,sqlmap确实传入了一个上传shell的页面,但是传进去是没有执行权限的,这个和中间件或服务器配置有关,具体细节可以看录播视频中提到
当然,同样的方法可以读取文件
使我异常惊喜的是,使用这个注入点竟然出结果非常快,看来还有很多东西需要学习啊
结语
深夜11点,当我关掉靶场服务器时,Deepseek突然发来提醒:
“检测到您最近查询27次SQL注入相关,是否需要生成防御方案?”
这个瞬间突然明白:AI不会取代工程师,但会用AI的工程师会取代不用AI的。就像十年前老师傅说的:“别怕工具先进,要怕自己停滞”。
(合上笔记本,窗外传来蝉鸣。新的攻防对抗,明天又将开始…)
🔺🔺🔺 再次强调:本文仅供技术学习交流,请严格遵守《网络安全法》!🔺🔺🔺
原文始发于微信公众号(州弟学安全):代码审计|基于Deepseek自动搭建靶场学习讲解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论