freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

记一次实战getshell
yusha 2023-05-26 12:32:57 138469
所属地 四川省

漏洞发现

上网的时候偶然发现一个小程序后台,并且没有验证码。

见到网站就是曰,既然没有验证直接跑弱口令。

1685073638_64702ee64b787c53299b2.png!small?1685073637548

1685074060_6470308c16860df8b7497.png!small?1685074059342很可惜没跑出来。

本来就是路过,既然没有弱口令就打算放弃了。但是页面随便输入居然报错

1685073670_64702f06369c3d7108c67.png!small?1685073669450

原来是十年磨一剑的thinkphp5框架,既然如此就探测一下RCE吧。

1685073840_64702fb0b7a55cfcf25f1.png!small?1685073839915

ThinkPHP5.*rce

http://XXX.com/?s=captcha

POST:_method=__construct&filter=system&method=GET&s=whoami

1685074137_647030d9a52a08711277b.png!small?1685074137069

页面报错:system() has been disabled

网站php设置disable_function禁用了system()函数,这样报错证明了网站是存在RCE的。

可以尝试用其他函数绕过disable_function。

但我是脚本小子,直接在GITHUB上找EXP。

上传webshell

这里是bewhale师傅的工具:https://github.com/bewhale/thinkphp_gui_tools

1685074284_6470316c2c8daf1a8ff3d.png!small?1685074283380

1685074297_64703179ed01d51a81118.png!small?1685074297264

显示上传失败,实际上是成功了。

上传小马,冰蝎成功连接。本来到这里就结束了,但是

1685075298_64703562466c9241247ba.png!small?1685075297404

冰蝎并不能执行命令

此时我脑子里冒出了个想法,尝试用冰蝎自带的反弹shell.

1685075322_6470357a9fcc12ca80f6c.png!small?1685075321849

1685074360_647031b8974507727478f.png!small?1685074359749

发现仍然不能执行命令(废话)

整理一下思路,脚本能够上传小马,肯定是能执行命令的。既然如此,看脚本源码查看请求的方法?直接抓包,看成功上传WEBshell发起的请求。

1685074376_647031c8662c3d3a462b7.png!small?1685074375581

1685074382_647031ce1ab169faf8062.png!small?1685074381360

一共请求了两种方法,system(),排除。assert()

但assert函数不能执行系统命令,而我的目标是getshell,既然如此只能尝试尝试绕过disable_function

绕过Disable_function

通过assert方法上传寻找漏掉的系统命令执行函数脚本:

https://github.com/l3m0n/Bypass_Disable_functions_Shell

1685074421_647031f55c4bc40877d2d.png!small?1685074420546

上传并访问,pcntcl_exec可以使用。

1685075150_647034cebe45d596a380c.png!small?1685075149991

用pcntl_exec方法写一个反弹shell脚本,上传并访问页面。

1685074452_64703214bc9159e7710b9.png!small?1685074452011

成功getshell

1685074502_64703246d6abe095c5749.png!small?1685074502038

总结

看了大佬的源码,绕过DISABLE_FUNCTION的手段有一下几种:

pcntl_exec绕过

ld_preload绕过: 仅限Linux

ld加载php扩展

1685073677_64702f0d731bfd364b806.png!small

# 渗透测试 # web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 yusha 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
yusha LV.1
这家伙太懒了,还未填写个人描述!
  • 1 文章数
  • 1 关注者
文章目录